不可否认,Vim是一款优秀的编辑器,尤其是其体积之小、速度之快、可扩展性之强,使其屹立至今,我的朋友曾经遇到一个朋友,在打拳皇的时候询问上下左右是不是用的HJKL,当时我的朋友并没有反应过来,对方感觉到深深的失望。
对Vim有信仰的程序员甚至为自己HHKB的Esc镀金:
Golden HHKBVim有非常多优秀的扩展:
Bilibili - Vide SpaceVim由于这些扩展颜值太高,我用着如此好用的现代编辑器,都甚至想去学习一下Vim,这里有一个练习Vim比较棒的入门仓库,想学习的各位可以去看一下:
GitHub - dofy/learn-vim: Vim 实操教程(Learning Vim)Vim practical tutorial.
那么我们可以先来稍微看一下,Vim有6种基本编辑模式:
普通模式(Normal mode)
插入模式(Insert Mode)
可视模式(Visual Mode)
选择模式(Select Mode)
命令行模式(Command line Mode)
Ex模式(Ex Mode)
What?总有种感觉,这一定不是我这个年纪该承受的伤害,我们还是从基本的实操来对比学习Vim吧。
工作场景
由于高熟练度使用Vim才比较潇洒,在成为一个成熟的Vimer之前,我建议把我们的“按键重复”及“重复前延迟”两个选项开至最骚,以应对光标移动需求。
MacOS Setting指定行
我们在查看报错信息的时候,最关注的就是行号,能够直接跳到指定行号debug,实在是美滋滋,这一点在vim中使用行号 + gg
可以做到,在vscode中可以使用Control + G
。
词间跳跃
词间跳越是Vim中做得非常优秀的一点,其中w
可以跳到当前词最后一个字符之后,e
可以跳到当前词最后一个字符之上,相当于vscode中使用option+arrow的操作,但是说实话,无论是Vim还是Vscode,这一点上做得都不如Webstorm,对中文的支持不够友好,这一点可以参见黄玄的博客Vim 与中文输入法 - 黄玄的博客 | Hux Blog
扩大选择
使用v
模式可以进行文本的选择操作,再加上w
、e
的助力可以达到扩大选择的作用,当然仅限于英文中使用,在中文中常常会将一句非常长的话给收进来。
多行编辑
多行编辑是现代编辑器非常出色的一个功能,在vscode中长按option再加上点击即可添加多个光标,以达到多行同时编辑的目的,在vim中同样可以做到这一点,但是对列位置有要求(鄙人才疏学浅,如果有更好的方式请指出),就是通过块选择Control + V
再辅以Shift + I
的方式进行多行注入。
块选择
块选择最初在我眼里是Vim独有的帅气存在,但其实在vscode中也不是不可以做到,即运用连选+多行编辑的组合,Shift + Option + 鼠标点按
,这样的编辑体验非常美好,在我心里实在是吊打了Vim,没有尝试过的兄弟请务必马上试试。
重构
在业务中的一个常见场景是对变量进行重命名,如果是Javascript,由于这门语言的特殊性,虽然vscode已经对其有较好的基于jsdoc的类型支持,但依然不能保证重命名的准确性,只能够提供“更改所有匹配项”的功能(顺带一提,ts文件支持重命名功能),并且最好改完后去diff看看有没有改坏了什么地方,体验非常差。
这一点我认为在vim中表现得更为糟糕,我在学习vim的过程中见到许多Vim大佬都是用grep去跳转到变量定义的,这一点在现在编辑器上基本是都是一个Command + 鼠标点击
就能够过去的,这似乎对编辑者的记忆力要求颇高了。
正则查询
在正则查找方面Vim支持得挺好的,没有什么毛病,但是在书写正则的过程中不是实时的,并且不支持批量修改,这一点Sublime天生支持,而在vscode中科院通过Option + Enter
开启,
文件查找
如果你使用过Webstorm的双Shift
查找,或者是vscode、sublime的Command + P
,你就会觉得vim在面对大型项目的时候,对业务的熟练要求是颇高了。
最后
我对Vim了解不够多,我觉得能好好写项目的,自己喜欢的就够了,虽然我从入门到放弃,但是让我收获了一个浏览器利器:
GitHub - philc/vimium: The hacker’s browser.
VM上Vim是改代码利器,但仅限于雕琢,正常的码代码的过程中我是一定不会使用Vim的,并且我想问一问那些Vim大佬,是不是一般不写中文注释的……
网友评论