Vim 的功能非常强大,但这种强大是有代价的——你得把它全部记住。
记忆的负担
就拿替换命令来说。”查找替换”这么一个最常见的编辑操作,在 Vim 里有一堆变体:
- 替换所有匹配项,而不只是每行第一个?加
g。 - 每次替换前要确认?加
c。 - 不区分大小写?加
i。或者在模式里写\c。 - 要不要用正则?默认就是正则。但用哪种风格?
\v是 very-magic,\V是纯文本,还有默认的 magic 模式,各有各的转义规则。 - 只匹配整个单词?用
\<和\>把模式包起来。容易忘,也容易打错。 - 替换整个文件?前面加
%。只替换选中区域?用'<,'>。指定行范围?输入行号。
于是你写出这样的命令:
:%s/\v(foo|bar)/baz/gci
新手要花很久才能记住这些标志位。有经验的用户也会忘掉不常用的那几个。
而且替换只是一个内置命令。真正麻烦的是插件——每个插件都有自己的命令、自己的参数和语法。天天用的那些还好,肌肉记忆自然形成;但那些偶尔才用一次的?每次都得重新翻文档。
这就是 Vim 界面的根本矛盾:命令行天生为速度优化,而不是为可发现性优化。如果你已经记住了命令,它快得飞起;如果你忘了——哪怕只是忘了一个标志位——就只能干瞪眼。
如果能把一个命令的所有可选项一次性展示在用户面前呢?不是藏在 :help 里,而是就在屏幕上,一目了然:
这是一个用 vim-quickui 搭建的查找替换对话框。所有选项清清楚楚:正则模式、大小写敏感、全词匹配、是否确认、替换范围。不管是第一次用,还是隔了几个月再回来用,完全没有记忆负担——你看到有什么选项,勾选你需要的,直接开始。
2026年前来催更