熟练掌握Vim编辑器的常用命令能大大提高我们文本编辑的效率。
基本操作
我们最初接触Vim编辑器时,首先学到的不乏以下一些操作:
刚进入Vim编辑器时,我们处于普通模式,在键盘上按下i,我们便进入插入模式。在插入模式下,如果按下Esc,则又回到普通模式。
在插入模式下,我们可以键入文本。
在普通模式下,我们则可以利用一些命令来快捷操作我们的文本,如:
x : 删除当前光标所在的一个字符
:wq : 保存并退出 (:w 保存,:q 退出,且以:开始的命令需要输入回车)
dd : 删除当前行,并把删除的行保存到剪贴板里
p : 粘贴剪贴板里的内容
h(向左)、j(向下)、k(向上)、l(向右)移动光标,当然,我们还可以利用↑、↓、←、→来移动
更进一步
在了解了Vim编辑器的基本操作后,我们需要学习更多的命令来更进一步。
1.不同的插入模式
i : 在光标所在位置插入
a : 在光标所在位置后插入
o : 在当前行后插入一行新行
O : 在当前行前插入一行新行
cw : 把光标所在位置到下一个单词之前的内容删掉,并进入插入模式
示例:cw命令
光标当前位置
使用cw命令后
2.快速移动光标
想要快速移动光标提高效率,我们移动光标的操作应不仅限于h、j、k、l / ↑、↓、←、→。
0(数字零) : 移动到行头
^ : 移动到本行第一个不是blank字符的位置
$ : 移动到本行行尾
g_ : 移动到本行最后一个不是blank字符的位置。
/要查找的字符串 : 查找字符串(如果搜索出多个匹配,可按n键移动到下一个)
示例:查找字符串
在打开的文本中查找 Thread 字符串,命令为 /Thread
查找到的结果会高亮显示,我们可以按n键移动到下一个匹配(:nohl命令取消高亮显示)
3.复制/粘贴
p/P : 粘贴(p与P的区别在于,p是粘贴到当前位置之后,P是粘贴到当前位置之前)
yy : 复制当前行的内容
4.撤销/恢复
u : undo,撤销之前的操作
Ctrl+r : redo,恢复之前的操作
5.文件的打开/保存/退出
:e filename : 在 Vim 编辑器里打开一个文件
:saveas filename : 另存为
:x,ZZ 或 :wq : 保存并退出 (ZZ不需要输入冒号并回车)
:x和:wq的区别在于:wq会强制性写入文件并退出,即使文件没有被修改也强制写入,并更新文件的修改时间
:q! : 退出不保存
:qa! : 强行退出所有的正在编辑的文件,就算别的文件有更改
:bn 和:bp : 当Vim同时打开很多文件时,可以使用这两个命令来切换到下一个或上一个文件
示例:打开多个文件
首先在命令行使用命令 vim Thread.cc 在Vim编辑器打开文件Thread.cc
在Vim普通模式下,输入:e ./Atomic.h,就打开了当前目录下的文件Atomic.h
提高效率
1.重复操作
有些情况下,我们需要对某一操作重复执行多次,譬如删除多行、多次输入同一文本行……那么Vim是怎样重复操作的呢?
一种方式是按下.
,就会重复上次的命令;
另一种方式是 n+command ,在执行某命令之前输入想执行的次数n,该命令便会执行n次。
示例:
2dd : 删除2行
4p : 粘贴文本4次
10ilove<Esc> : 会写入“lovelovelovelovelovelovelovelovelovelove”(命令中的i是指切换到插入模式)
这时按下 . ,会再写入10次“love”
2.更快地移动光标
除了上面我们介绍的一些快速移动光标的命令外,还有一些更快速、移动范围更大的光标移动命令值得我们了解。
gg : 移动到文本开头
G : 移动到文本末尾
n+G 或 :n :移动到第n行
w : 按单词移动,移动到下一个单词的开头
e : 按单词移动,移动到下一个单词的末尾
我们要着重介绍的是下面两个光标移动命令:
% : 匹配括号移动,包括 (, {, [. (使用前你需要把光标先移到括号上)
* 和 # : 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配的位置(*是下一个,#是上一个)
示例:使用 % 来匹配括号移动
首先将光标移动到某一括号上
按下 % ,可以看到光标移动到该括号匹配的括号处
示例:使用 * 来匹配单词并在单词间移动
使用前,我们需要将光标移动到某一单词上,我们移动到 Thread 上
然后按下 * ,可以看到 Thread 所有的匹配都高亮显示了,我们可以继续按下 * 移动到下一个匹配
3.命令的组合使用
我们可以利用学到的光标移动命令,与其他命令组合使用,从而实现高效的编辑,例如下面光标移动与复制命令的组合使用:
(1)0y$ 命令意味着:
0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符
(2)ye 命令则意味着从当前位置拷贝到本单词的最后一个字符
(3)还可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串
示例:在打开的文本里使用命令 y2/Thread
红框标识了光标的当前位置和邻近的两个“Thread”字符串的位置
执行命令 y2/Thread
将光标移到空白行,按下粘贴操作 p ,看看复制了什么内容
4.自动补全
例如:我们想输入 Thread ,当我们键入单词的开头,再按下Ctrl+p或者Ctrl+n,就能进入自动补全的选择了。
5.可视化选择
普通模式下按下 v、V或者Ctrl+v会进入可视模式。在可视模式下,随着光标的移动,可以选中行、块、区域。
一旦选好了,我们就可以执行一些操作了,例如之前介绍的y复制、d删除,另外还有下面介绍的一些操作
J : 把所有选中的行连接起来(变成一行)
< 或 > : 向左或右缩进
= : 自动缩进
gu : 变小写
gU : 变大写
示例:选中几行内容,将其都变为大写
进入可视行,选中内容
执行命令 gU
参考资料:
酷壳-简明 Vim 练级攻略:http://coolshell.cn/articles/5426.html