轻快的vim

来源:互联网 发布:java特点和优势 编辑:程序博客网 时间:2024/04/30 02:51

转载:http://www.cnblogs.com/nerxious/archive/2012/12/21/2827303.html

http://www.cnblogs.com/nerxious/archive/2012/12/21/2827774.html

http://www.cnblogs.com/nerxious/archive/2012/12/21/2828520.html


轻快的VIM(一):移动

断断续续的使用VIM也一年了,会的始终都是那么几个命令,效率极低

前几个星期把Windows换成了Linux Mint,基本上也稳定了下来

就今晚,我已经下定决心开始新的VIM之旅,顺便写一系列的笔记和总结

还是那句话,我只是个新人,代码也没写过多少行,但我一直在默默努力自学着

所以,还请老鸟们看看笑笑就行了,不要鄙视我,我很脆弱……

这是俺写的《轻快的VIM系列》第一节,每一节都会不断更新,加入更多技巧在里面

VIM新手们加油,咱一起总结,一起努力练习……

基础

字符移动

k            上移                kh            左移            h        ll            右移                jj            下移

你也可以使用键盘上的方向键来移动,但这么做h j k l的存在就失去了意义

之所以使用h j k l来控制方向,其主要目的是让你的手不离开键盘中心,从而提高效率

tips:在命令前加上数字代表命令执行次数,如:5k,表示上移5行

 

单词移动

W w            移动到下一个单词开头E e            移动到下一个单词结尾B b            倒退到上一个单词开头

需要注意的是,E会忽略标点符号,如:I‘m,e会当成两个单词,E则不会

同样,在命令前加上数字代表执行次数,如:2w,表示往下移动2个单词

开头我也许会多说几遍,因为这个技巧很重要

 

整行移动

0            移动到行首$            移动到行末+            移动到下一行开头-            移动到上一行开头

这里需要注意的是+ -和上面的j k有什么不同之处

j k也是移动到上一行和下一行,但它们移动的是光标所在的位置

+ -不管你的光标在何处,总是移动到下一行或上一行的行首

 

进阶

滚屏

复制代码
Ctrl+f            往前滚动一整屏Ctrl+b            往后滚动一整屏Ctrl+d            往前滚动半屏Ctrl+u            往后滚动半屏Ctrl+e            往后滚动一行        Ctrl+y            往前滚动一行
复制代码

看似比较多,但是可以根据键盘的位置来进行记忆,并且下面两个也不常用

上面的滚屏都有一个共同点,就是会改变光标的位置,且屏幕也在改变

如果想让光标维持在原来的位置实现滚屏请看下面

 

用z调整光标

z<Enter>        将光标所在行移动到屏幕顶端z.              将光标所在行移动到屏幕中间z-              将光标所在行移动到屏幕低端

tips:980z<Enter>可以将第980行移动到屏幕顶端

好吧,有时候你其实不想滚屏,你只想在当前屏幕中移动

请往下看

 

在屏幕中移动

H            移动到屏幕顶端的行M            移动到屏幕中央的行L            移动到屏幕底端的行nH           移动到屏幕顶端往下的第n行nL           移动到屏幕顶端往上的第n行

据我猜测这三个字母应该是HIgh、Middle和Low的缩写,其实挺好记的

多练习几遍就行了,需要注意的是:这里只是光标的位置变化,和上面两种不同

tips:你可以用+ -和j k实现同样的位置变化,只不过要操作多次而已

+ -和j k的区别忘了吗?往上看看吧

 

在当前行移动

^            移动到当前行的地一个非空格处n|           移动到当前行的第n列

这里的^与上面的0通常情况下表示的位置是一样的

而n|,个人感觉还没有h l方便,慢慢的数出行数还不如直接按着h l 左右移

 

根据文本块移动

所谓的文本块也就是句子、段落、小节等

(            移动到当前句子开头)            移动到下一个句子开头{            移动到当前这一段开头   }            移动到下一段开头[[           移动到当前这一节的开头]]           移动到下一节的开头

其中,VIM以? . !等符号来标记一个句子

空白行来标记一个段落

用节宏来标记一个节(节宏是什么我还没搞清楚)

 

根据行号来移动

Ctrl+g            显示当前行信息nG                转至第n行G                 转至文本末尾

如果你不知道当前是多少行的话就可以用Ctrl+g来查看

如果想转到第800行,可以用800G

其实z命令也可以做到,并且把光标移动到第一行

tips:``反引号可以返回到使用G之前的位置



轻快的VIM(二):插入

上一节我们讲到了VIM中的移动,既然已经能够在屏幕和光标间游刃有余了

那么,现在就来谈谈插入命令

不知道有多少VIM新手和我当年(去年)一样,信誓旦旦的以为只有i可以插入

唉,现在想想都觉得可笑,都是Windows下的编辑器用多了的结果

鼠标一点,妈妈再也不用担心我的文本插入了……悲剧!

好了,让我们抛弃过去吧,从现在起奋斗,也许不算太晚

这是俺写的《轻快的VIM系列》第二节,每一节都会不断更新,加入更多技巧在里面

VIM新手们加油,咱一起总结,一起努力练习……

 

基础

字符位置插入

i            在光标之前插入a            在光标之后追加

你看,其实刚开始用这两个就足够了,这就是最基础的

为什么这么说呢?因为你可以依靠上一节中的移动命令来达到任意位置,然后再大力插入

不要忘了,VIM中最重要的技巧之一就是命令间的配合使用

 

进阶

行位置插入

A            在一行的结尾处追加I            在一行的开头处插入o            在光标所在位置的下一行打开新行插入O            在光标所在位置的上一行打开新行插入

当然,如果你认为先移动光标然后插入或追加慢了,那么就应该用上面这种方法

它们是以行做单位

在这里我还是需要提醒一下,命令前加数字代表执行次数

tips1:10I*<Esc>先输入10,然后输入i,接着输入*号,最后按<Esc>

     这样就可以在一行开头输入十个*

    

tips2:同样,5o###<Esc>先输入5,然后输入o,接着输入###,最后按<Esc>

     这样就可以在下列5行中每一行开头插入###

    

看,这样一来,再需要输入重复文本的时候就变得方便了对不对,你可以自己试着扩展思维……

但我依然会不厌其烦的提醒你,命令的组合也是最重要的技巧之一

 

合并行

有时候你也许会想合并两行

    

J            合并两行

    

你只需要把光标移动到首行,然后按3次J即可

让我感觉奇怪的是,我直接使用3J却只能合并两行,4J才能合并3行

谁来告诉我为什么



轻快的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            删除光标位置到本行开头

这三种用法是最好理解的

我一开始便说过,删除命令需要配合移动命令才能发挥更多作用

你可以看看第一节内容,然后自己尝试着删除一节或一段内容等

tips:3dd代表删除三行,聪明的你一定早就知道了




原创粉丝点击