Vim高级操作快速入门

导读 此文收集了一些简单的 VIM 操作,这些操作要么其它普通文本编辑器不能完成,要么完成起来很慢。通过本文的介绍,可以坚定初学者学习 VIM 的决心与信心。如果你有什么好的易于演示的简易技巧,欢迎留言。另外,如果没有明确说明,本文中的提到的按键均是大小写敏感的。例如,文中提到“按下 G”时,你按的键应该是“Shift + G”。

1. 准备工作
首先,我们打开 VIM,输入一段文本,用于今天的演示:

this is a test

2. 查找替换
按几下ESC进入 Normal 模式,输入以下命令::%s/ /\r/g 。回车后得到的效果如下:

this
is
atest

解说:这条命令的作用是,将文章中所有的空格替换为回车。几乎所有的编辑器都支持查找替换,但并不是所有的编辑器都支持把空格替换为回车,因此这个功能在许多别的编辑器里做起来是比较繁琐的。

3. 行的拼接
刚才我们把一行文字打碎为 4 行了,那如何再把它们拼接起来呢?当然,我们可以通过前面说的查找替换的方式,将回车再替换为空格,实现行的拼接。但是,这里我们用的是另一种方式。

按几下 ESC进入 Normal 模式,然后输入这段命令:ggVG。gg 表示跳到文本开头,V 表示进入行选择模式,G 表示选择到文章末尾。通过这 3 条命令,总共 4 个按键,我们选中了整篇文章。

然后,按下冒号 : 进入命令模式,状态栏上出现::'< ,'>字样,在它后面输入j,然后回车,可以看到,整篇文章又被拼接起来了,整个操作包括回车只按了 7 次键:

this is a test

4. 复制粘贴与重复动作
按几下ESC确认当前处在 Normal 模式下,然后按yy,即可将当前行复制到默认寄存器中(相当于剪贴板)。然后按下12p,VIM 将执行粘贴动作 12 次,屏幕上出现了 13 行这样的字符:

this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test
this is a test

解说:在 VIM 中,复制和粘贴操作相当快捷。另外,VIM 中大部分命令都可以通过在命令前加数字重复若干遍。

5. 列操作
接下来我们把每一行的开头第一个字母改为大写。

按几下 ESC确认当前处在 Normal 模式下,然后按gg跳到第一行,按下 Ctrl + v进入列选择模式,然后按G,跳到文章最后一行,此时你应该看到,文本的第一列被选中了,而且只选中了第一列。按下 U 键,可以看到,每行的第一个字母都变为大写了。提示:选中文本后按 u 可以将文本变为小写,选中文本后按 ~ 可以翻转原有的大小写。

This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test
This is a test

然后,我们在每行的前面加上一个星号。按下gg跳到第一行,按 Ctrl + v进入列选择模式,再按 G,选中全文的第一列,然后按I,进入列插入状态,输入星号*,再按下ESC,你会看到,所有行之前都出现了一个星号:(这个操作我用rehat7没成功,可以使用这个替代:%s/^/*)

*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test
*This is a test

解说:对于编写程序的人来说,把一段代码批量注释掉是一个很常见的操作,使用列插入可以很容易地做到这一点。另外,列选择后按 x 删除被选中的块,可以批量地解除注释。

6. 宏的录制
接下来,我们要将文本的偶数行修改为:This is another test。由于所有的偶数行都要进行同样的操作,因此我们把这个操作录制下来,然后重复播放若干遍,就能很快地完成这项工作了。

首先,按几下 ESC确认处在 Normal 模式下,再按下 gg跳到第一行,准备开始操作。我们首先按下 q 键,然后再按一个其它字母,将这个宏录制到该字母对应的寄存器下。例如我们这里使用 m 寄存器,则按qm。此时 VIM 状态栏出现“recording”字样,表明已经进入了录制状态。

然后,我们把第二行的 a 修改为another。首先按j进入第二行,然后按 $ 跳到行末,再按两下 b往前跳两个单词,此时光标停在字母 a 上。然后我们按下cw键删除 a 并进入插入状态,然后输入another ,按 ESC回到 Normal 状态,按j进入下一行,整个操作步骤就完成了。最后,我们再按一下 q,结束该宏的录制。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12539.html