首先,使用ChristianChiarulli大神的neovim0.5的配置,基本全部基于Lua。
GitHub - ChristianChiarulli/LunarVim: A Neovim config made with sane defaults
這套配置已經(jīng)搭建了完整的框架,但是需要的LSP server需要自己安裝,安裝也很簡(jiǎn)單,直接vim命令行:LspInstall <language-name>即可,比如此處我們需要的是cmake,那就是:LspInstall cmake
安裝完成之后,再加入一點(diǎn)配置信息。首先是cmake啟動(dòng)文件,即cmake-ls.lua,放置在相應(yīng)的文件夾下,如下(其實(shí)文件名可以隨便?。?br>

一個(gè)簡(jiǎn)單的cmake-ls.lua如下(注意,cmd字段是必填的,這是告訴系統(tǒng)對(duì)應(yīng)的程序在哪條路徑下,DATA_PATH是在根部init.lua中進(jìn)行定義的):

隨后,再在根部init.lua中加入一行require 'lsp.cmake-ls'即可

然后就可以愉快的自動(dòng)補(bǔ)全啦!

最后,對(duì)于C++工程項(xiàng)目而言,因?yàn)榘鄠€(gè)文件,因此需要告訴clangd這個(gè)項(xiàng)目是如何構(gòu)建(build)的。對(duì)于cmake-based的工程而言,這很簡(jiǎn)單,只需要在執(zhí)行cmake的時(shí)候,加上-DCMAKE_EXPORT_COMPILE_COMMANDS=1這個(gè)flag就可以,例如:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -S . -B build,那么,一個(gè)compile_commands.json文件就會(huì)生成在build文件夾中。之后,再在工程根目錄下創(chuàng)建一個(gè)軟鏈接即可:ln -s build/compile_commands.json .即可。這樣一來(lái),clangd就知道這個(gè)工程是如何進(jìn)行構(gòu)建的,就可以更好的執(zhí)行g(shù)d,gr等操作。
- 其實(shí),如果不想寫(xiě)了完整的CMakeLists.txt之后再實(shí)現(xiàn)vim的跳轉(zhuǎn)的話,可以事先配置一個(gè)環(huán)境變量
CPLUS_INCLUDE_PATH,加入需要搜索的路徑,然后export CPLUS_INCLUDE_PATH,vim(clangd)就知道需要在哪里搜索頭文件了。
其他的語(yǔ)言也是一樣的。Now enjoy it!