把学习Vim作为提升自己的一种途径,深入了解Vim的核心功能,才能用好这一强大的文本编辑器。现在就开始浅谈自己学习《Vim实用技巧》的心得吧,有误的地方还希望各位指点一二。
在我们编写程序的过程中,考虑的不仅仅有如何优化算法,而且还要用最少的操作实现最优的代码。显然,Vim帮助我们做到了这一点,它会以简化复杂性操作的方式,记录我们最近的操作,用几次按键就可以重复上次的操作。
技巧一:那就是好好利用 " . "命令。我们都知道Vim中的 " . " 只是简单的"重复上次修改"的命令。但是实际上,这重复修改的命令的好处体现在何处呢?
进入linux命令行模式后,我们首先进入的是普通模式进行操作。(下面是一段初始文本)
" x " 命令可以删除光标所在的一个字符。(此处已经少了一个"o")
" . " 命令则可以帮助我们重复上次修改。(此处少了"n")
".." 则继续重复上次的修改。
既然 "."可以进行修改很多东西,但是它也能使用 "u"来撤销之前的修改操作,还原到初始状态。
接下来,如果想删除从光标开头到结束的整行文本,就在普通模式下直接用 "dd"。
类似的,也可以用" j ."来删除第二行的整行的文本。
接下来使用的是">G"命令增加从当前行到文本末尾的缩进层次。
然后就是用好 "j ."命令,直接达到每行都能缩进。
上述的这几个命令都是在普通模式下进行的,对于使用撤销命令 "u",我们可以自己控制撤销的力度。在进入插入模式开始,到返回普通模式为止,在此期间输入或删除的任何内容都是一次修改,我们要控制好<ESC>的使用,就可以把撤销命令用于单词、句子或段落。
对于在行尾添加内容这种常见的操作,我们要使用提高效率的方式来完成修改动作。
$a;<ESC>命令,$完成移动,a命令在光标后添加内容;,<ESC>命令回到普通模式。
而为了减少不必要的移动可以使用A;<ESC>命令在行尾添加内容,A命令相当于"$a"命令。
虽然A命令大大地提高了"."命令的效率,但是短板就是如何在50行,100行甚至更多行行尾添加内容呢?
那就得用到Ex命令(LINUX 命令,用于与屏幕显示交互地编辑行)中":normal" 对整个范围内的所有行执行 "." 命令.
先使用"jVG"命令,则覆盖后面所有文本,再使用":'<,'>normal . "命令回车,不管后面的文本是50行还是100行都能很高效的完成。
":%normal A;" 命令,%命令可以代表整个文件范围,因此,在整个文本编辑中,本命令会告诉编辑器在每行的结尾都添加一个分号。先进入插入模式,执行完成便会退回普通模式。
":%normal i // " 命令可以执行任意的普通模式命令,此命令可以注释整个文本文件。
在查找和手动替换过程中,我们可以调出查找 "file",利用"copy"来替换。
过程: " * "->" cwcopy<ESC>"->"n"->"."
先把光标移动到file上,cw删除file单词,然后copy是输入单词,退回普通模式,利用n命令来匹配下一个file所在的位置。"."命令会删除file单词,并修改成copy。
上述条件也可使用(:%s/file/copy/g )命令用来完成所有的修改,替换所有的地方。前提是一定要按照自己的需要进行修改。使用n寻找下一个匹配项,如果的确需要修改,则使用"."命令进行修改操作,反之可以舍弃。