Vim 是一个很古老的编辑器,但是并没有随着时间的流逝消失在编辑器/IDE 的竞争中,Vim 独创的模式机制和 hjkl 移动光标方式使得使用者在编辑文件时可以双手不离开键盘,极大地提升了工作效率。
由于 Vim 学习曲线极为陡峭,导致许多初学者往往在刚刚开始的时候便放弃了学习,十分可惜,本文旨在以最无痛的方式带领读者初尝一下 Vim 的滋味。
如何退出 Vim
上图搜索结果有些尴尬,所以,当我们不小心打开 Vim 后该怎么关闭呢?
按一下 Esc(当然,如果你不确定的话,可以多按几下) 然后直接输入 :q!(应该会显示在你的屏幕左下角),然后 Enter,好了,应该已经退出了。
Vim 的模式
先解释一下上述操作中为什么需要按几下 Esc,Vim 中从任何模式到 普通模式 的转换是通过 Esc 完成的,而对于文件的操作(例如保存,保存并退出)是通过 命令模式 完成的,出于简单理解考虑,我们只需要认为在普通模式下按一下 : 之后就算进入了命令模式,如果想回到普通模式的话就按 Esc 就好了,和驾驶汽车一样,如果不确定自己在做什么时候,踩刹车(按 Esc)就好了。
Vim 有3个模式,insert(插入),normal(普通),command(命令),在 insert 模式下 Vim 除了不能使用鼠标以外其余的操作和一个普通的文本编辑器无异,normal 模式一般用于在文件中移动,复制行等等,command 模式一般就是对于文件的操作或者替换之类的。
Vim 的工作方式不同于常规的编辑器,在常规的编辑器下对应到 Vim 中就是一直使用 insert 模式进行操作,但是 Vim 并不是这样设计的,在 Vim 下的操作流程为:打开 Vim(默认为 normal 模式)-> 快速移动到自己需要的位置 -> 进入 insert 模式修改少部分文本 ->(按 Esc)回到 normal 模式寻找下一个需要编辑的地方 -> 进入 insert 模式修改...,请仔细理解这个过程。
对于文件的基本操作
在普通模式下:
- :x 和 :wq 表示保存并退出
- :q! 表示不保存并退出(等同于点了退出并且选择“不保存”)
- :w 表示保存
文件内的编辑
熟悉文件怎么打开关闭了?我们来看看一些 Vim 的基础使用方式。
在普通模式下:
- hjkl -> 上下左右的光标移动,我理解对于 Vim 新手来说这样可能有点别扭,但是如果希望提升自己的 Vim 水平的话,请尝试熟悉这种移动方式并且内心坚信这样子终将提升效率
- dd -> 删除当前行
- yy -> 复制当前行
- p -> 粘贴
- o -> 在光标下方开一个新行
- O -> 在光标上方开一个新行
- u -> 撤销(等同于其它编辑器中的 Ctrl-Z)
- Ctrl-r -> 反撤销(等同于 Undo 一个撤销操作)
再熟悉了以上操作之后我们开始修改文件吧,如果希望在光标处进入 insert 模式的话,按 i,如果希望直接在当前行尾开始编辑的话,按 A,如果希望在当前行首开始编辑的话,先按数字 0 快速到行首,然后按 i 开始编辑,我理解这里按 Home 也可以做到,但是这是 Vim ,让我们用 Vim 的方式来,做完一处修改后请尽快按 Esc 回到 normal 模式,需要的话再顺手 :w 保存一下吧~
看,Vim 也并不是如此难用不是?
小技巧
上面我们介绍了一些 Vim 的基础操作,对于我们程序员来说,下面介绍一个非常简单但是使用的小技巧,或许可以更好地感受到 Vim 做事的方式。
假设你是一名 Python 程序员,需要给多行设置缩进的话,我们一般怎么做呢? 用 IDE 的同学一般是这样做的:一只手离开键盘找到鼠标,选定一块代码,按 Tab,然后再把手放回键盘继续编辑。 在 Vim 中操作如下:首先确认自己在 normal 模式,按 v,然后按 j 或者 k 选定一块。
然后按一下 > 或者 < 即可完成缩进或反缩进了,看上去非常简单,但是少了手离开键盘的动作,在大量的编辑中便提升了效率。
后记
Vim 本身就是一个强大且学习曲线很陡的编辑器,掌握 Vim 不容易,但是当慢慢熟练使用 Vim 了之后在日常编辑中带来的开发效率提升是非常显著的。
Vim 熟练程度的提升需要大量的练习和使用,单单是 normal 模式下的光标移动便需要长时间的使用形成肌肉记忆才会又很好的效果,此外,当 Vim 加上了各种插件(例如:自动补全)后,又能带来不一样的用户体验。