cmake - 基于neovim 0.5的LSP配置

首先,使用ChristianChiarulli大神的neovim0.5的配置,基本全部基于Lua。
GitHub - ChristianChiarulli/LunarVim: A Neovim config made with sane defaults

这套配置已经搭建了完整的框架,但是需要的LSP server需要自己安装,安装也很简单,直接vim命令行:LspInstall <language-name>即可,比如此处我们需要的是cmake,那就是:LspInstall cmake

安装完成之后,再加入一点配置信息。首先是cmake启动文件,即cmake-ls.lua,放置在相应的文件夹下,如下(其实文件名可以随便取):

cmake-ls.lua文件放置位置

一个简单的cmake-ls.lua如下(注意,cmd字段是必填的,这是告诉系统对应的程序在哪条路径下,DATA_PATH是在根部init.lua中进行定义的):

cmake-ls.lua

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

init.lua

然后就可以愉快的自动补全啦!


效果呈现

最后,对于C++工程项目而言,因为包含多个文件,因此需要告诉clangd这个项目是如何构建(build)的。对于cmake-based的工程而言,这很简单,只需要在执行cmake的时候,加上-DCMAKE_EXPORT_COMPILE_COMMANDS=1这个flag就可以,例如:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -S . -B build,那么,一个compile_commands.json文件就会生成在build文件夹中。之后,再在工程根目录下创建一个软链接即可:ln -s build/compile_commands.json .即可。这样一来,clangd就知道这个工程是如何进行构建的,就可以更好的执行gd,gr等操作。

  • 其实,如果不想写了完整的CMakeLists.txt之后再实现vim的跳转的话,可以事先配置一个环境变量CPLUS_INCLUDE_PATH,加入需要搜索的路径,然后export CPLUS_INCLUDE_PATH,vim(clangd)就知道需要在哪里搜索头文件了。

其他的语言也是一样的。Now enjoy it!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容