Vim是号称“编辑器之神”的文本编辑软件,自从接触Vim以来,基本上都是用Vim来修改和编写代码和配置文件的。
但是我一直只会用最基本的命令,虽然把HJKL的定位键已操纵地很熟练。但是Vim其他强大的地方却几乎没有触及过。
学一样东西,就要把它学精。
这次趁着重新编写Ubuntu Tweak,开始彻底地学习Vim。因而,从今天开始连载我的Vim学习旅程。文章中只会写些自己先前不知道的使用技巧。
一、两行合并为一行:
int
main(int argc,char argv)
假如要把上面两行并为一行,只需要定位于int这行,然后按J(大写),即可。
二、撤消和重做
以前很傻,只知道按u来撤消,不知道重做。不一小心,撤消过头就傻了。原来重做是Ctrl+r。
另外,大写U用来撤消整行。
三、连续插入n个感叹号
以前以为用i/a不能进行连续多个字符的插入,原来错了!
Hello World
比如要在上面这句话后面插入10个"!",总不能真的打10个吧?
只要把光标定位于d,然后按10a!……不对啊,才一个!,别急,再按两下Esc!哈哈,出来10个!了吧!
四、快速保存退出
之前我会用两个退出方法:
保存并退出:wq
不保存并退出:q!
现在保存并退出有更快的方法──直接在普通模式下按ZZ即可。
另外,用:e!可以不保存文件并重新载入这个文件。
五、移动和滚动
直接按w来按单词滚动,我居然不常用!亏我还常常dwdw的来删除词。
另外,Ctrl+D向下滚屏,Ctrl+U向上滚屏,比我之前JJJJJKKKKK的有效率多了……汗
不知道在哪里?
:set number,来显示行号,或者直接按Ctrl+G来显示当前行号
六、查找时忽略大小写和历史查找
有时查找单词时需要忽略大小写,只要设置下面的就可以了
:set ignorecase
假如进行过几次查找,想继续以之前查过的关键词查找时,只要按/,然后上下键来选择即可
同理,按下:,然后上下键,也可以翻看执行过的历史纪录,不过仅限于当前的编辑。
七、快速查找
你要找当前光标定位处的字段,难道要慢吞吞输入/和字段吗?不必了!直接按*号,Vim就会把当前的字段作为查找内容,找下一处。
对了,:set hlsearch可以将查找的内容设置成高亮。这样就好看了。反之,加上:set nohlsearch就可以了。上面的ignorecase也可以加no。
八、定义标记
现在才发现标记这个超有用的东西!真是后悔莫及啊!
以前在一个C文件里,从一个方法跳到另一个方法,跳来跳去,都是记行数的……
原来,按下ma,就为某行某列标记了一个a,接下来可以通过`a来访问这个地方!此外,通过'a,可以访问那个位置的行首。
打命令:marks可以看到所有的标记。
如果只按',就可以在最近的两个标记之间相互跳转!
而"则是回到上次编辑该文件时光标的最停留位置。
通过[和]就可以访问最后一次修改的起始和结束位置!
九、替换文本
* 用cw或ce来将光标所处的单词替换掉,效果是一样的;
* 按cc的话,直接替换整行。 另外,用S也能达到同样的效果;
* 按C=c$,替换当前至行尾的内容;
* s的话,是替换当前的字符,跟r的功能一样;
* 以前删除一行至末尾用d$,原来D就行了;
上面的大多数都可以加数字!
十、可视选择
* 按v进行选择,如果想控制头和尾,按o/O进行切换;
* 如果是大写的V,则按行进行选择;
十一、删除单词和替换句子
* 一般来说,用dw/de删除单词需要将光标定位于单词开头,但是如果用daw,则无需这样,只要光标在这个单词上就可以了(daw=Delete a Word),如果不包括空格,就是diw;
* 替换句子的话,就用cis就行了;