常用的vim命令总结(上)

简介: 常用的vim命令总结

vim就不多介绍了,很好用很强大。在windows下可以用gvim,配置一下_vimrc文件,再配合cscope和ctag等工具,就是一个功能强大的IDE。


常用的命令在这里总结下,以后忘了可以看看,部分摘自网络轻快的VIM和部分网摘。


首先记着它的三种模式,命令模式,插入模式,可视模式。


常用的命令:分类一下,无非是编辑相关的,移动,复制,粘贴,插入,删除等操作。


窗口相关的,多窗口,窗口分割和tab标签。


命令执行相关的以及配合cscope和ctag函数间查找和跳转的。


执行外部命令的,!make,find等等。。。


Vim的quickfix模式等等,可以方便的定位到编译的错误处。。


先来张截图:



首先是移动,进入vim后键入:'0


即回到当初你编辑的位置


PS: 如果想把光标停止在指定的行, 这样


vim +n urfile // n为行号


如果要停留在行尾, 这样


vim + urfile


整行移动


0            移动到行首


$            移动到行末


+            移动到下一行开头


-            移动到上一行开头


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


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


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


单词移动


W w            移动到下一个单词开头


E e            移动到下一个单词结尾


B b            倒退到上一个单词开头


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


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


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                 转至文本末尾


gg           移至文本开头


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


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


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


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


fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。


tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)


Fx:和 fx 类似,不过是往回找。使用 , 来重复上一个F命令。


Tx:和 tx 类似,不过是往回移动到 x 的右边一个位置。


b:光标往前移动一个词。


w:光标往后移动一个词。


0:移动光标到当前行首。(是数字0)


^:移动光标到当前行的第一个字母位置。


*:读取光标处的字符串,并且移动光标到它再次出现的地方。


#:和上面的类似,但是是往反方向寻找。


/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 。


?text:和上面类似,但是是反方向。


m{a-z}:在当前光标的位置标记一个书签,名字为 a-z 的单个字母。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。


`a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。


`.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。


%:在成对的括号等符号间移动,比如成对的 [ ] , { }, ( ) 之间。将光标放到任意符号上,然后通过 % 来移动到和这个符号匹配的符号上,% 还可以正确的识别括号的嵌套层数,总是移动到真正匹配的位置上。因此这个命令在编辑程序代码的时候非常有用,可以让你方便的在一段代码的头尾间移动。


上一节我们讲到了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行


谁来告诉我为什么


这一节我们来看看删除,删除命令比较简单,不过要使删除更有效率


你需要配合我们第一节中讲的各种移动命令


字符删除


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代表删除三行,聪明的你一定早就知道了


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


我想每个Coder都深刻的明白,修改这一操作在代码的世界里是多么重要


与其说修改,无非就是删除了再插入,但VIM把这两者结合的很有效率


闲话少说,让我们再次使用这轻快的VIM在code上起


字符替换


r            单个字符替换


R            连续替换


~           更改大小写


很简单,多试试就行了


tips: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中大部分命令是组合使用的


利用好了这点才能更快的摸索出自己的使用习惯,从而高效修改


操作相同文本的时候复制尤其有效,在Windows中我们都习惯了先用鼠标选择文本


而Vim下则不用那么麻烦,你甚至可以使用可视模式操作,但这里先略过


我在这一节主要说说命令模式下的复制


在讲复制之前我要先说一个简单到不行的命令


粘帖


p            粘帖                  


复制的形式可以很多,但是粘帖的形式却没多少


无非就是加数字达到多次粘帖什么的


其实准确的说,p应该是放置的意思


不过我也搞不清是paste还是put的缩写


单词和字符复制


ynl            向右复制n个字符


ynh            向左复制n个字符


ynw            向前复制n个单词


ynb            向后复制n个单词


由于复制操作通常是在量比较大的情况下进行


所以这里我使用了n代替需要操作的个数


需要说明的是,这里看起来并没有多大意义


因为复杂字符和单词还没有直接插入的方式来的快


行复制


y0            复制到行首


y$            复制到行末


yy            复制整行


yH            从当前行复制到屏幕顶端


yL            从当前行复制到屏幕低端


这里前两条用的也比较少


但是整行或多行复制才是yy的方便之处


tips:1. 4yy也就是复制4行


        2.y几乎可以跟任何光标移动命令结合,不信你试试

相关文章
|
6月前
|
机器学习/深度学习 开发工具
Vim的常用命令 基本使用
Vim的常用命令 基本使用
47 0
|
6月前
|
Linux 编译器 开发工具
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
187 1
|
6月前
|
NoSQL Linux 编译器
Linux:vim调试工具gdb | 常见命令集
Linux:vim调试工具gdb | 常见命令集
156 0
|
6月前
|
开发工具
Vim 模式切换 | 命令集
Vim 模式切换 | 命令集
111 0
|
3月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?
|
21天前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
16 0
|
2月前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
2月前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
75 8
|
3月前
|
开发工具
vim编辑器常用命令
vim编辑器常用命令
86 1
|
4月前
|
JSON Java Linux
linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
linux 命令使用总结:vim,nohup,find,df,du,sudo,netstat,ll,curl,lastlog
65 5