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