其实楼上说的那些功能别的编辑器也都有,甚至做得更好。反正用了三年 Vim 两年 Emacs 后,我从 2014 年转到 Sublime 就觉得挺满意的。后来 VSCode 稍微体验了下,也觉得不错,不过 Sublime 快捷键都用熟了就懒得换了。
Vim 的优点在我看来只有一个,还值得争议,就是单键快速移动光标。而代价就是成为一个多状态编辑器。这个移动光标么……只要你把 caps lock 映射成 ctrl,大多数编辑器支持的 ctrl + n/p/f/b 也差不多好用。如果实在喜欢这个操作模式,与其在老旧的 Vim 上安装各种插件变成很差的 IDE,不如在各种 IDE、现代编辑器上实现一个 vim 操作模式。
而 Vim 的问题则很多,包括:
- 不支持多线程,导致模仿 Sublime 的 Command-T 的同名 Vim 插件很慢
- 很多操作需要打命令,那就要求你记住命令并完美的打出来了。这方便现代编辑器一般都有个命令列表然后可以模糊匹配。
- Visual block 模式对于对得很整齐的代码操作很好,但是对于排列稍微错开点的东西就不太好用了。主要还是因为没有真正的多重选择。
- 多文件管理始终没有完美的方案。NerdTree 不好用。Command-T 慢。
- 插件用的自己的语言,懂的人太少。相比之下,Sublime 用的是 Python,Atom, VSCode 用的是 JavaScript,都是大家熟悉的。
对于 @
wlwood 列出的 Vim 功能,我把我在 Sublime Text 中的实现方法写出来,并不是想抬杠,只是给大家一个直观的对比。注意 Caps Lock 被我改成了 Ctrl:
> ctrl-v 就可多列编辑
无论用鼠标还是键盘,选中多行后,command + shift + L 进入多行编辑模式
> shift+gg,直接末尾,
cmd + down
> :0 直接第一行,甚至:87,光标直接精准 87 行(其他编辑器比较少见到这个功能)
ctrl + g,然后数字
>/xxx 搜索 xxx
cmd + f 交互式搜索,一边打字一边光标开始跳到 match 上。esc 一下后 match 已经选中了,可以直接打字修改。也可以 cmd + d 开始多重选中一样的内容,一起改。
>:s/str1/str2/g , vim 全球替换最爽(emacs 党求别打😂😂)
cmd+option+f 打开替换界面,可以正则。可以一下全替换,也可以一个个交互式的决定要不要修改。
>vim -d file1 file2 即可高亮对比
直接从命令行启动没找到,打开一个文件后可以从 command palette 模糊匹配文件做 diff。
>:split /vsplit
cmd + option + n 分 n 列,1 < n < 3, 加 shift 水平分,不过水平分割很少用。
另外一些心得:
- 对于不常用,记不住快捷键的命令,直接 cmd + shift + p 调出 command palette 模糊匹配找一下就行。
- cmd + x/cmd + c 如果不选中任何东西默认就是剪切 /复制一整行,和 vim 的 dd/yy 差不多。
- cmd+d/b/i/p/s/l/" 分别是选中 word, bracket, indentation, paragraph, scope, line, quote,都是首字母,很好记,除了 word 因为 cmd+w 被 mac OS 占了 :-(