Vim开发环境

简介

​ 个人搭建的vim C++开发环境, 使用coc.nvim框架 + ccls 提供补全服务。实现基本的语意补全、跳转,查找引用等功能。原则是尽量不修改vim原生按键功能。

​ 仓库地址:https://github.com/skywb/vim-config

​ 简介于教程后续有时间更新….

安装

依赖

  • 需要提前安装ccls或其它ls
  • nodejs > 10
  • python3

安装

​ 直接将github仓库克隆到本地, 并更新submodule,覆盖~/.vim 文件夹。 请自行备份原来的文件夹

​ 创建一个软连接.vimrc指向.vim/vimrc

1
2
3
4
5
6
7
8
cd ~
mv -r .vim .vim.back
mv .vimrc .vimrc.back
git clone --depth 1 https://github.com/skywb/vim-config.git ./.vim
ln -s .vim/vimrc ./.vimrc
cd .vim/
git submodule init
git submodule update

​ 第一次启动是默认会安装几个插件

基本使用

项目配置

ccls

  • 根目录

    ccls 会向上查找根目录,标志文件为 [".ccls", "compile_commands.json", ".git/"]

​ 可以通过 :CocConfig 命令打开配置文件,自行设置 rootParrerns 参数

  • 补全设置

    ccls依赖compile_commands.json检索对应关键字

    cmake 可以在构建是指定宏-DCMAKE_EXPORT_COMPILE_COMMANDS=YES 生成

    若只使用make的老项目,可以通过bear工具生成bear make -j$(nproc)

    ccls官方说明

基本功能

补全

​ 默认开启语意补全,输入前两个字母或者. -> 等触发。

​ 触发补全列表时, 可通过方向键、<C-n> 下一个,<C-p上一个等选择候选

按键说明约定:

​ 与vim官方文档表示相同。

表示 ctrl + 某按键, 例如 表示 ctrl + n

键可以自行设置,默认是 \

表示回车

跳转

  • gd 跳转到定义 (一般都是跳转到实现)
  • gc 跳转到声明
  • gi 跳转到实现 (不怎么用,gd更顺手)
  • gf 跳转到文件
  • gr 跳转到引用

查找文件

  • 默认配置了leaderF, 并设置快捷键<leader>ff

  • Coc配置安装了 coc-lists, 包含files功能,可以搜索文件, 可以通过 :CocList fiels<C-l> 换起 coclist选择files唤起

    ​ 但是files不支持仅匹配文件名,当路径很长时,体验不太好,我更喜欢leaderF

snippet

​ 通过代码块快速生成代码模板

​ 默认加载 https://github.com/skywb/snippets 的仓库, 目前只有c++ 代码模板,可以加载其它仓库 例如: https://github.com/honza/vim-snippetshttps://github.com/SirVer/ultisnips

  • 触发

    当输入snippet 的key是,默认触发补全列表,选中后 <C-y> 展开

    snippet.gif

  • 如需要更多snippet文件,可直接添加到.vim/snippet 下即可

CocList 功能补充

  • files 查找文件
  • outline 当前文件下所有方法、类、变量等
  • commands 所有支持的命令,可以自定义添加。详情请阅读coc.nvim 文档
  • 其他

Command

快捷键补充

  • 拓展a和i的能力

    • if 整个方法内部
    • af 整个方法
    • ic class内部
    • ac 整个class
  • gp 选中刚刚粘贴的内容

    技巧:

    ​ 当存他处赋值了代码,粘贴后 gp= 可快速格式化


参考连接:

https://github.com/MaskRay/ccls/wiki/Project-Setup