vim-lsp-cxx-highlight 是一个 vim 插件,它使用语言服务器协议提供 C/C++/Cuda/ObjC 语义突出显示。
该项目已存档,因为大多数 LSP 服务器和客户端现在都支持语义令牌,因此不再需要实现突出显示。
该项目的最初目的是在通过解析 cquery 和 ccls 的非标准扩展来标准化之前,为 C++ 的 vim/nvim 带来良好的语义突出显示。
对于 LSP 客户端(内置或单独的插件)来说,实现突出显示更有意义,因为它现在已经标准化。
这个插件如何与 color_coded 和 chromatica 区分开来?
vim-lsp-cxx-highlight 不编译/分析源文件。它通过语言服务器协议接收所有语义突出显示数据。这个插件的主要优点是它完全用 vimscript 编写。
这个想法来自 vscode-cquery 并了解它如何使用 cquery 提供语义突出显示。
左:无插件,右:vim-lsp-cxx-highlight + ccls
该插件需要vim
或neovim
。对于vim
建议使用+timers
和+byte_offset
,但不是必需的。
此外,还需要兼容的语言服务器和语言服务器客户端。
支持以下语言服务器和协议扩展:
查询
$cquery/publishSemanticHighlighting
- 语义突出显示$cquery/setInactiveRegions
- 预处理器跳过的区域CCLS
$ccls/publishSemanticHighlight
- 语义突出显示$ccls/publishSkippedRegions
- 预处理器跳过的区域铿锵
支持以下语言服务器客户端:
使用 vim-plug (或使用您选择的插件管理器)
Plug ' prabirshrestha/vim-lsp ' " vim-lsp
" or
Plug ' autozimu/LanguageClient-neovim ' " LanguageClient-neovim
" or
Plug ' neoclide/coc.nvim ' " coc.nvim
" or
Plug ' neovim/nvim-lsp ' " nvim-lsp
Plug ' jackguo380/vim-lsp-cxx-highlight '
使用 vim8 的本机包管理器(在终端中运行此命令)
git clone https://github.com/jackguo380/vim-lsp-cxx-highlight.git ~ /.vim/pack/vendor/start/vim-lsp-cxx-highlight
对于cquery
需要以下初始化选项:
{
"highlight" : { "enabled" : true },
"emitInactiveRegions" : true
}
对于ccls
需要以下初始化选项:
{
"highlight" : { "lsRanges" : true }
}
对于clangd
coc-settings.json
必须具有:
{
"clangd.semanticHighlighting" : true ,
"coc.preferences.semanticTokensHighlights" : false
}
有关示例 vim-lsp 配置,请参阅此
有关 LanguageClient-neovim 配置示例,请参阅此
有关示例 coc.nvim coc-settings.json 请参阅此
有关示例 nvim-lsp 配置,请参阅此
该插件无需任何额外配置即可运行。但如果您不喜欢默认设置,请参阅:help vim-lsp-cxx-highlight
vim-lsp-cxx-highlight 现在支持 Vim 8.1 的文本属性(请参阅:help textprop
)。
使用文本属性可以改进什么:
已在 Vim 版本8.1.1722
上测试支持此功能,旧版本可能存在问题。建议升级到此版本或更高版本。
启用:
let g: lsp_cxx_hl_use_text_props = 1
注意:现在 vim 版本 8.2 或更高版本会自动启用此功能
这是一个实验性功能,因此可能会有很多错误。请提交错误报告!
麻省理工学院许可证