
从 Vim 到 NeoVim:感知不强

Vim原来的功能固然很强大,但是总有人说,现在是时候把Vim换成新时代的NeoVim了。 话虽如此,但是要想把NeoVim配得和我现在用的Vim一样丝滑,就需要花大量的时间调配置。 所以我迟迟没有更换的意愿,直到看见了 Neovide , dbgbgtf 问我Vim可以丝滑滚动吗? 我拿出Neovide:不但有丝滑滚动,还有光标拖尾呢!
得益于NeoVim前后端分离,实现一个美观的编辑器前端并不是难事,甚至可以将NeoVim 集成到浏览器中。NeoVim还支持LSP等特性,有现代编辑器的各种特性。于是我决定配一下。
新编辑器需要新配置。为了适配NeoVim对lua的原生支持,我决定把所有配置迁移到lua。
一上来NeoVim的插件管理系统就比Vim复杂,我用了Lazy.nvim
来管理插件,
首先需要学一下spec怎么写。然后是准备插件,
我的基础目标是先启用我Vim中的所有插件,如下所示:
1 | call plug#begin('~/.vim/plugged') |
除了这些vim中写过的插件,我还尝试加入dap支持,但是无论是nvim-dap-ui
还是nvim-dap-view
,都会出现一些奇奇怪怪的错误,最后只好作罢。
个人觉得效果比较好的插件是render-markdown.nvim
,在NeoVim里显示效果还是不错的。
在把全部的插件配完以后,我意识到,实际上和我原来的vim配置差距并不大...
在NeoVim中使用root权限保存文件
在NeoVim中是无法直接使用:w !sudo tee % > /dev/null
的,因为会显示需要一个终端,
即使加上-S
也无法通过标准输入来输入密码。这时有一些work around可以选,
比如我就选了pkexec
。写了以下lua代码并添加到init.lua
中:
1 | -- Define :S command to save the file using pkexec and force reload |
当执行:S
时会唤起KDE的要求权限窗口。不能使用:WW
,因为没有:W
命令,所以neovim在输入:W
时,
会自动运行:WW
,造成不必要的权限申请,将其改为:S
就不会有这个问题。

Anyway,我已经把我的配置放到GitHub 上了,如果想借鉴的可以到这个地址看看。接下来是配置好的NeoVim演示:
250422更新
nvim-cmp
有奇怪的bug,即使光标前没有任何字符,按下<CR>/<Tab>/
,
都会有补全,但是这种情况下我根本不需要补全啊!没办法,只能切换到
blink.cmp
,这个框架没有凭空补全的问题。除此之外,基于treesitter
的函数参数文本对象也有问题,当使用clangd补全时,遇到函数里有const char *
这样的表述时,参数文本对象就乱掉了,我只好换回vim的参数文本对象插件。
不知道注册了哪些快捷键?neovim还提供了打印所有映射的键位的功能:
1 | :lua vim.print(vim.api.nvim_get_keymap("a")) |
这时候在绑定键位时写desc的优势就体现出来了:每个键在做什么一目了然。 查看所有变更
参考
- 标题: 从 Vim 到 NeoVim:感知不强
- 作者: RocketDev
- 创建于 : 2025-04-06 19:45:00
- 更新于 : 2025-04-22 01:40:00
- 链接: https://rocketma.dev/2025/04/06/neovimSetup/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。