vim-lsp-cxx-highlight는 언어 서버 프로토콜을 사용하여 C/C++/Cuda/ObjC 의미 강조 표시를 제공하는 vim 플러그인입니다.
대부분의 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 이상에서는 자동으로 활성화됩니다.
이는 실험적인 기능이므로 상당히 버그가 있을 수 있습니다. 버그 보고서를 제출해 주세요!
MIT 라이센스