VIM Study

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就行了;

From: http://imtx.cn/articles/96.html, http://imtx.cn/articles/98.html

2007-11-01 01:17 111 linux vim