美文网首页Linux Manjaro Neovim
cmake - 基于neovim 0.5的LSP配置

cmake - 基于neovim 0.5的LSP配置

作者: 老杜振熙 | 来源:发表于2021-06-10 15:47 被阅读0次

    首先,使用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!

    相关文章

      网友评论

        本文标题:cmake - 基于neovim 0.5的LSP配置

        本文链接:https://www.haomeiwen.com/subject/rtwosltx.html