为vim配置代码自动联想,文档自动格式化。
软件安装
默认已经存在的软件:
- Node.js & npm
- Vim9 / neovim
- Python3
需要后续安装的软件/插件:
- vim-plug:轻量级的 Vim 插件管理器,本文中主要用来安装coc.nvim。
- coc.nvim:一个为 Vim 和 Neovim 提供智能代码补全、诊断和其他 IDE 特性的语言服务器协议(LSP)插件框架。
- black:一个 Python 代码格式化工具。
- pynvim:一个用于与 Neovim 编辑器深度集成的 Python 库,特别适用于开发复杂的插件和提供高级功能,如果不使用neovim可以忽略。
安装vim-plug
直接上博客园教程
安装coc.nvim
在安装完vim-plug之后,我们使用它来安装coc.nvim,在vim中命令模式输入:
1 |
|
进入了vim的配置文件,如果是neovim也会自动进入对应的配置文件,好用,不用知道配置文件的具体路径。
Then,在里面输入:
1 |
|
回到命令模式,输入:
1 |
|
接下来,vim-plug会帮你安装coc.nvim:
放一张安装过程的图片
命令模式输入:CocInfo
,能正常显示信息就说明安装成功咯。
安装black
然后,我们使用pip
安装black
库(Ubuntu等Linux系统通常对此有限制,需要改用apt安装):
1 |
|
查询版本号确认安装成功:

如环境中有多个python,注意此时的python和vim中使用的python为同一个
安装coc-pyright等
coc-pyright
是一个为coc.nvim
提供 Python 语言支持的插件,它基于Pyright
语言服务器。Pyright
是由微软开发的一个快速且功能丰富的类型检查器和语言服务器,专为 Python 设计。如果需要编写其他编程语言,使用coc.nvim
下载对应的插件即可,如C++
对应的插件有coc-clangd
,搜一下就有了。
1 |
|
安装前vs安装后:
可以看到,安装后,好用。
此时写代码会有联想弹窗,帮助你高效地编写代码:

不过,你下意识地按下Tab键想补全弹窗里的第一个选项,却发现事与愿违,这是因为,这个插件选择补全项的快捷键是Ctrl+Y
,这实在是太不方便了,接下来,把它改掉~
配配置
配置tab自动补全
inoremap
是 Vim 和 Neovim 中用于定义插入模式(Insert mode)下的快捷键映射的命令。它的全名是 “insert no remap”,意味着在这个映射中,右侧的键不会被进一步映射或展开,从而避免了潜在的递归映射问题。
可以使用 inoremap
来定义在插入模式下特定按键的行为,比如tab自动补全:
1 |
|
<expr>
是一个特殊的标志,它告诉 Vim 映射的右侧应该被当作表达式来评估,而不是直接作为键序列执行。
pumvisible()
是 Vim 和 Neovim 中的一个函数,用于检查补全菜单(Popup Menu)是否可见。
如上配置好后,退出重进vim,或者:source $MYVIMRC
,就可以用tab键自动补全了。
配置自动格式化
有许多工具可以帮助我们自动格式化代码,现代IDE中,通常可以通过快捷键来触发这一工作。默认情况下,Pycharm里快捷键是Ctrl+Alt+L
,VSCode里快捷键是Shift+Alt+F
,在Vim里,没有这样的快捷键,但我们可通过配置实现。
coc.nvim为我们提供了一个命令来触发代码格式化:
1 |
|
在配置好一切之后,效果会是这样:
main函数里不规范的缩进被规范化了。
而我们可通过配置快捷键来触发这个命令,以实现自动格式化代码。
1 |
|
不过此时按下快捷键还是不能进行格式化的,因为coc也是需要调用第三方工具来实现格式化。
coc.nvim适配了多种代码格式化工具,python代码默认使用autopep8
,我们使用命令:CocConfig
修改键python.formatting.provider
的值为black
:

如果正常安装black,在终端直接输入black可以成功调用black(即系统路径包含black),
python.formatting.blackPath
无需手动配置,否则可能需要考虑在这个配置项中加入black脚本的路径。
完成上述工作后,我们写一点不规范的代码,按下快捷键,看看能不能自动格式化~
配置.vimrc
最后加上一个可能会被复制的.vimrc的配置单:
1 |
|
遇到的问题
coc.nvim需手动构建:
问题如图:
解法:
搞定。