闲话少说,让我们再次使用这轻快的VIM在code上起舞。
字符替换
r 单个字符替换
R 连续替换
~ 更改大小写
很简单,多试试就行了。
备注:4~更改连续4个字符的大小写,很有意思
单词修改
cw 从光标处修改到单词结尾
cb 从光标处修改到单词开头
这里直接使用cw或cb操作很简单,要注意的是加数字的使用方式。
此时2cw 或者 c2w都可以使用,功能一样。
行修改
c$ 从光标修改到本行末尾
C 功能同上
c0 从光标修改到本行开头
cc 删除整行从头修改
S 功能同上
s 删除光标所在位置的字符,然后插入
这里有点难记,主要是多练习才能看到效果。
其中,c$和C功能是一样的,都是从光标修改到行尾,d$+a达到相同效果。
c0和d0+i效果一样,区别是少输入一次。
cc和S效果也是一样,其实S是属于插入的范畴,这里类似,所以一起讲了。
再来是s,它会删除光标处的字符再插入,效果等同于x+i或c+space。
多行修改我想就不用说了,前面加上数字再组合命令就可以了。
从上面看来,我们应该可以更深刻的认识到,VIM中大部分命令是组合使用的。
利用好了这点才能更快的摸索出自己的使用习惯,从而高效修改。
这一节我们来看看vim的删除,删除命令比较简单,不过要使删除更有效率。
需要配合我们第一节中讲的各种移动命令。
字符删除
x 删除光标所在处字符
X 删除光标所在前字符
说明:
通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的。
如果是头几天使用还好说,但从长久考虑,你还需要学习下面的删除命令。
单词删除
dw 删除到下一个单词开头
de 删除到本单词末尾
dE 删除到本单词末尾包括标点在内
db 删除到前一个单词
dB 删除到前一个单词包括标点在内
很明显,d是delete的缩写,而上面的x则是老式的清除意思。
这里e表示往前删除一个单词,b表示往后删除一个单词,第一节中移动写的很清楚。
要注意的是e b会忽略标点,如don't,它们会把这当做三个单词don、‘ 和 t 来删除。
而大写的E B则不会。
行删除
dd 删除一整行
D d$ 删除光标位置到本行结尾
d0 删除光标位置到本行开头
这三种用法是最好理解的。
我一开始便说过,删除命令需要配合移动命令才能发挥更多作用。
你可以看看第一节内容,然后自己尝试着删除一节或一段内容等。
备注:3dd代表删除三行。
上一节我们讲到了VIM中的移动,既然已经能够在屏幕和光标间游刃有余了。那么,现在就来谈谈插入命令。
不知道有多少VIM新手和我当年(去年)一样,信誓旦旦的以为只有i可以插入。
唉,现在想想都觉得可笑,都是Windows下的编辑器用多了的结果。
这是俺写的《轻快的VIM系列》第二节,每一节都会不断更新,加入更多技巧在里面。
基础
字符位置插入
i 在光标之前插入
a 在光标之后追加
你看,其实刚开始用这两个就足够了,这就是最基础的。
为什么这么说呢?因为你可以依靠上一节中的移动命令来达到任意位置,然后再大力插入。
不要忘了,VIM中最重要的技巧之一就是命令间的配合使用。
进阶
行位置插入
A 在一行的结尾处追加
I 在一行的开头处插入
o 在光标所在位置的下一行打开新行插入
O 在光标所在位置的上一行打开新行插入
当然,如果你认为先移动光标然后插入或追加慢了,那么就应该用上面这种方法。
它们是以行做单位。
在这里我还是需要提醒一下,命令前加数字代表执行次数。
备注1:10I*<Esc>先输入10,然后输入i,接着输入*号,最后按<Esc>
这样就可以在一行开头输入十个*
备注2:同样,5o###<Esc>先输入5,然后输入o,接着输入###,最后按<Esc>
这样就可以在下列5行中每一行开头插入###
看,这样一来,再需要输入重复文本的时候就变得方便了对不对,你可以自己试着扩展思维……
但我依然会不厌其烦的提醒你,命令的组合也是最重要的技巧之一
合并行
有时候你也许会想合并两行
J 合并两行
你只需要把光标移动到首行,然后按3次J即可。
让我感觉奇怪的是,我直接使用3J却只能合并两行,4J才能合并3行。
谁来告诉我为什么,呵呵。