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 或更高版本會自動啟用此功能
這是一個實驗性功能,因此可能會有很多錯誤。請提交錯誤報告!
麻省理工學院許可證