You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nvim-treesitter配色无法传递给:TOhtml,Neovim如何复制RTF格式代码

Neovim复制代码为RTF格式解决方案

一、修复:TOhtml兼容Tree-sitter高亮的方法

你遇到的:TOhtml丢失高亮的问题,是因为原生命令默认仅识别Vim内置语法高亮组,无法捕获Tree-sitter注入的@开头的自定义高亮组,所以导出样式中仅剩下行号等基础样式。
修复配置如下,添加到你的Neovim配置文件中即可:

-- 让TOhtml识别Tree-sitter高亮组
vim.api.nvim_create_autocmd("BufEnter", {
  pattern = "TOhtml",
  callback = function()
    local ns = vim.api.nvim_get_namespaces()["treesitter/highlighter"]
    if not ns then return end
    local extmarks = vim.api.nvim_buf_get_extmarks(0, ns, 0, -1, {details = true})
    for _, mark in ipairs(extmarks) do
      local details = mark[4]
      if details.hl_group then
        vim.cmd(string.format("syn match %s /%%%dl.*%%%dl/", details.hl_group, mark[2]+1, mark[3]+1))
      end
    end
  end
})

配置完成后重新执行:TOhtml,即可导出包含完整Tree-sitter高亮的HTML文件,后续按你原有的HTML转RTF流程操作即可。

二、Linux环境下直接导出RTF的替代方案

如果不想修改:TOhtml的逻辑,可以用成熟的命令行工具链一步完成导出:

  • 先安装依赖工具:
# Debian/Ubuntu 系发行版
sudo apt install highlight xclip
# Fedora 系
sudo dnf install highlight xclip
  • 在Neovim中选中你需要复制的代码范围,执行以下命令即可直接将带高亮的RTF内容写入系统剪贴板,可直接粘贴到Word、WPS等办公软件中:
:'<,'>w !highlight --out-format=rtf --syntax=%< --style=molokai | xclip -selection clipboard -t text/rtf

说明:命令中的%<会自动识别当前文件的语法类型,--style参数可替换为你需要的配色名,执行highlight --list-scripts=themes可查看所有支持的内置配色,也可自行导入和Neovim配色一致的主题文件。

补充:HTML转RTF的工具选择

如果已经得到带正确高亮的HTML文件,可直接用pandoc完成格式转换,样式保留完整:

pandoc 输入文件名.html -o 输出文件名.rtf

内容的提问来源于stack exchange,提问作者Noam E

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:45:04