vim技巧(一)
使用到的vim命令
- .命令:重复上次修改
- x命令:删除光标下的字符
- dd命令:dd 命令也做删除操作,但它会把整行一起删掉
- u命令:撤销命令
- >G命令:增加从当前行到文档末尾处的缩进层级
- $命令:把光标移到行尾
- a命令:在当前光标之后添加内容
- A命令:则在当前行的结尾添加内容
- s命令:把两个操作合并为一个:它先删除光标下的字符,然后进入插入模式
- f{char}命令:让Vim查找行内下一处指定字符出现的位置,如果找到了,就直接把光标移到那里
- F{char}命令:让Vim查找行内上一处指定字符出现的位置,如果找到了,就直接把光标移到那里
- ;命令:带我们到下一个f{char}命令的目标字符上
- ,命令:会反方向查找上次 f{char}所查找的字符
- *命令:光标移到单词上,使用*命令对它进行查找,结果一是光标会跳到下一个匹配项上,二是所有出现这个词的地方都会被高亮显示出来。如果你并没有看到高亮,运行一下
:set hls
。 - c是修改(change)(即删除后进入插入模式),后面可以接一个移动命令。
- cw命令:c是修改(change)(即删除后进入插入模式),后面可以接一个移动命令。意思是修改光标点到移动终点之间的内容。w是移动到下一个单词。所以 cw 就是把光标位置到下一个单词之前的内容删掉,并进入插入模式。
使用技巧
向每行后添加分号
var foo = 1 var bar = 'a' var foobar = foo + bar
- 先得把光标移到行尾,然后切换到插入模式进行修改。$ 命令可以完成移动动作,接着就可以执行 a;<Esc> 完成修改。由于 . 命令可以重复上次的修改,因此我们不必重复之前的操作,而是执行两次 j$.。一个键(.)顶 3 个(a;
)。 - 改进:由于A命令在当前行的结尾添加内容,我们通过用 A 来代替 $a,提升了 . 命令的效率。我们不必再把光标移到行尾,只需保证它位于该行内就行了(可在任意位置)。
- 先得把光标移到行尾,然后切换到插入模式进行修改。$ 命令可以完成移动动作,接着就可以执行 a;<Esc> 完成修改。由于 . 命令可以重复上次的修改,因此我们不必重复之前的操作,而是执行两次 j$.。一个键(.)顶 3 个(a;
在一个字符前后各添加一个空格
var foo = "method(" + argument1 + "," + argument2 + ")";
- 使用s命令在删除 + 号后,我们先输入"空格+空格",然后退出插入模式。
- 我们可以用 . 命令重复这一修改。我们所要做的只是把光标移到下一个 + 号处,然后用 . 命令重复这一操作。
- 当我们输入f+时,光标会直接移到下一个 + 号所在的位置。完成第一处修改后,我们可以重复按 f+ 命令跳到下一个 + 号所在的位置。
- 还有一种更好的方法可以用。; 命令会重复查找上次 f 命令所查找的字符,因此我们用不着输入4次 f+,而是只用输入一次,后面跟着再用3次 ; 命令。
- 回退操作
将文章中的所有my该为you
If you were a teardrop;In my eye, For fear of losing you,I would never cry. And if the golden sun,Should cease to shine its light, Just one smile from you,Would make my whole world bright.
- 先使用*命令查找单词"my",然后删除单词“my”,然后输入替代的单词。cw 命令会删除从光标位置到单词结尾间的字符,并进入插入模式,接下来我们就可以输入单词“you”。
- Vim 会把我们离开插入模式之前的全部按键操作都记录下来,因此整个 cwyou
会被当成一个修改。也就是说,执行.命令会删除从光标到当前单词结尾间的字符,并把它修改为“you”。 - 每次我们按 n 键时,光标就会跳到下一个“my”单词所在之处,而当我们按 . 键时,它就会把光标下的单词改为“you”。
Comments | NOTHING