思否的小伙伴们,大家好,我是周一就在装逼学习的沉默王二。
写完 Shell 那篇后就想写 Vim 了,因为人类史上最好的文本编辑器就是 Vim,不赞同的请自觉持有保留意见,哈哈哈。
Better, Stronger, Faster.
用这三个单词来赞美 Vim,一点都不为过。只不过,Vim 的学习曲线相当的大,这是一个连我都不得不承认的事实。就好像弹一把吉他,一开始学起来非常痛苦,简直想摔了它,但学会后,就能感受到乐器的无限魅力,以及学妹崇拜的小眼神。
来吧,下定决心拥抱它,没有比它更好的文本编辑器了,非常地难学,但却不可思议地好用。
01、初识 Vim
Vim 有着悠久的历史。80 年代末,布莱姆·米勒在一个开源的 vi(更早的一种计算机文本编辑器,我记得有个读者的网名就叫这个)基础上开发了 Vim 1.0 版本。
1994 年,Vim 3.0 中加入了里程碑式的多窗口编辑模式。
1996 年,Vim 4.0 中加入了图形化界面的版本。
1998 年,Vim 5.0 中加入了语法高亮的功能。
。。。。。。
总之是,越来越强!最新的版本是 8.0,启动界面里会显示一句非常暖心的话——「Help poor children in Uganda」,翻译过来就是「请帮助乌干达的可怜孩童」。这让我想起来我最喜欢的一支乐队——Beyond 的一首歌《Amani》。
打开终端,键入「vim」,就可以进入启动界面了,如下图所示。
Vim 有很多聪明的设计,所以很多其他工具也支持 Vim 模式,比如说 Visual Studio Code。很牛掰的一点是,Vim 逃离了鼠标的“魔掌”,只通过键盘就可以肆意地操作文本。
键入 :help
就可以查看 Vim 的帮助文档,尽管文档是英文的,但这的确是最权威的 Vim 学习资料了,听我一句劝,耐着性子读一读吧!
键入 :q
可以退出帮助文档。当然了,如果英文读起来确实痛苦了些,我还为你准备了在线的中文翻译文档,看这里:
https://yianwillis.github.io/...
02、实操 Vim
俗话说,“光说不练假把戏。”咱们直接上手来体验一把。键入 vim xxx
命令。如下图所示。
随后敲回车键,就进入 xxx 文件的阅读模式了。如下图所示。
在阅读模式下,你需要尝试下面这些命令。
- 上下左右移动:对应上下左右键
- 按照词移动:w(下一个词),b(单词的第一个字母),e(单词的最后一个字母),不适合中文
- 按照行移动:0(第一行),$(行尾),
:+行数
直接跳转到指定的行(此处的+意味着按下:
后,再输入行数,比如 10) - 按照屏幕移动:H(屏幕顶部),M(屏幕中间),L(屏幕底部)
- 翻页:不同的键盘有所不懂,比如说 Mac 的巧克力键盘,
fn+↑
键向上翻,fn+↓
键向下翻(此处的+意味着组合键) - gg(移动到文件开头),G(移动到文件末尾)
/+关键词
(此处的+意味着按下反斜杠后,再输入关键词)进行搜索,n/N
用于向下或者向上匹配
除此之外,阅读模式下,你还可以:
- 键入
i
进入插入模式,此时会在窗口底部出现-- INSERT --
的字样。
在插入模式下按 esc
键退回到阅读模式。郑重其事的提醒:如果你不知道现在处于什么模式,就狂按 esc 键。
除了 i
键可以进入插入模式,还有其他几个键可以进入插入模式,比如说 a
键可以在光标后插入;o
键可以在当前行后插入;0
键可以在当前行前插入。
- 键入
dd
删除当前行,并把删除的行存到剪贴板里。 - 键入
x
删除当前光标所在的一个字符。 - 键入
p
可用于粘贴上一次复制的内容。 - 键入
yy
可以复制当前行的内容。 - 键入
u
可用于撤销当前操作。 - 键入
:w
可以保存当前修改后的内容。 - 键入
:q!
可以在不保存内容的情况下退出 Vim。 - 键入
:wq
可以在保存内容的情况下退出 Vim。
温馨提醒:如果你是在插入模式,想要退出或者保存内容的话,一定要先按 esc
键退出到阅读模式。
好了,到此为止,你已经算是入门级的 Vim 用户了,真的,掌握了这些命令,其他编辑器能干的事,你都可以通过 Vim 完成了。
03、进阶
孙悟空成为花果山水帘洞的大王之后,感到了空前的寂寞,他想要进阶,于是撑了一叶扁舟拜师学艺去了。同样的,当我们熟练掌握了上述这些命令之后,也会感到空前的寂寞,因为 Vim 的强大绝不止于此。
来看一下,Vim 是怎么重复自己的。
- 键入
.
可以重复上一次的命令。这意味着什么呢?意味着如果我们键入dd
删除了一行内容,如果我们还想删除一行的话,不需要再按下两次d
键了,只需要按下一次.
键就可以了。 - 键入
N+命令
可以重复某个命令 N 次。(此处的+意味着按下次数后,再输入命令)。这意味着什么呢?意味着生产力的大幅度提升啊!
比如说,在阅读模式下,键入 3dd
可以一次性删除 3 行内容;键入 10p
可以粘贴 10 次文本。
来个带劲的哈。
通过 vim hello.txt
打开一个新的文本文件。然后键入 10+i+hello world+回车键+esc
(此处的+意味着按下次数后,再键入 i 键进入插入模式,再敲下 hello world
,再按下回车键换行,再按下 esc 键退出到阅读模式),奇妙的事情发生了,见下图。
想一下,键入 10.
会发生什么?相信我,试玩之后,你会“哇”的。
妙,实在是妙。除此之外,你还可以键入:
%
匹配括号来移动,包括{[(
,前提条件是你需要把光标移动到括号上。*
匹配单词来向下一个移动。(中文就无法使用了)#
匹配单词来向上一个移动。(同上)
记住光标的移动就可以脱离鼠标的束缚了。大多数命令都可以按照下面的方式来干:
光标开始的位置+命令+光标结束的位置
比如 0y$
意味着:
- 0,光标移动到行首
- y,从这里开始复制
- $,直到行尾
如果你想看到光标选中了哪些文本,可以先按下 v
键进入可视化视图,然后再操作光标,如下图所示。
更强大的操作,可以看看耗子叔翻译的一篇《简明 Vim 练级攻略》:
https://coolshell.cn/articles...
在阅读模式下,键入 :sp
可以横向分割窗口,键入 :vsp
可以竖向分割窗口,见下图。
舒服吧?原来一边编辑,一遍预览,在 Vim 下,只需要键入三四个字符!
04、结语
如果你想在手头备一份 Vim 的帮助手册,免得在用 Vim 的时候四处搜索,实话告诉你,我替你准备了,就是这么贴心。真的,花了 2 天的时间呢,整理了一份《Vim 中文用户手册》,310 页,内容非常全面。
最后,多说几句。作为程序员,我们大部分的时间都花费在摸鱼上,不不不,代码编辑器上,因此,花点时间来掌握一个适合自己的编辑器还是非常值得的。很多大佬都直接使用 Vim 来作为代码编辑器,虽然我还没达到这种高逼格,但使用 Vim 来操作日志和配置文件的频率还是非常高的。
要想熟练掌握 Vim,你需要这样做:
- 认真阅读这篇内容;
- 坚持使用 Vim 来完成所有的文本编辑工作,即使一开始会很痛苦;
- 随时查阅帮助文档,强化肌肉记忆;
- 两周时间的苦练后,你会发现,工作和学习效率有了大幅度的提升。
- 一个月过后,你跑过来感谢我,“二哥,你丫的,牛逼”!
好了,我是沉默王二,希望这篇文章能够帮到你!下期见。