常用的vim命令总结(中)

简介: 常用的vim命令总结

剪切


说完了复制这里顺便把剪切的命令也说下


其实剪切很简单,就是先删除,然后按p粘帖


比如dd删除一行后,这一行会被放入缓冲区


接着移动到你想放置的位置,按p,就被粘帖好了


恢复在VIM里比较简单,不过想要具体恢复到某个时间段很难


就我的经验而言,有时候使用恢复还不如删了重写


这里我们来讲讲恢复、撤销和重复命令的使用


u            撤消上次命令


U            恢复整行


ctrl+r       重做


.            重复


e!          全文恢复


如果有使用office的经验,那么这里的撤销和重做应该很好理解


比如我用dw删除一个单词,按下u就会回到没删除之前


一旦我后悔了,ctrl+r便会重新删除一次


其中U也十分好用,它能恢复本行内容,无论你在本行做过什么


需要注意的是,你不能在别处操作多次后再回到那一行来恢复


接着.号能够重复你上次命令


比如dd删除一行,你接着按一次.就相当于重新使用一次dd命令


如果你按5.那就是重复dd5次了


最后e!就牛逼了,当你把代码写的无比凌乱之时


它能恢复到最初形态,只要你还没使用过w、wp或x保存


Vim 添加注释 详解


一、手注释动 vim下


1.插入注释:按Ctrl+v进入virtual模式


用上下键选中需要注释的行数


按大些“I”进入插入模式,输入注释符“#”,


然后立刻按下ESC(两下)


2.删除注释先按v进入列模式横向选中列的个数(如"/ /"注释符号,需要选中两列),


再按Esc 再按ctrl+v 进入列编辑模式,向下或向上移动光标按x、d键删除


vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.


之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。


用法


:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab


:tabc       关闭当前的tab


:tabo       关闭所有其他的tab


:tabs       查看所有打开的tab


:tabp      前一个


:tabn      后一个


标准模式下:


gt , gT 可以直接在tab之间切换。


还有很多他命令, 看官大人自己, :help table 吧。


看过Swaroop的书之后,就越来越喜欢VIm了。


尤其是多窗口,真是非常Cool哦~


解释一下这是咋弄出来的:


在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。


但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。


打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。


另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。


更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。


1、打开多个窗口


打开多个窗口的命令以下几个:


横向切割窗口


:new+窗口名(保存后就是文件名)


:split+窗口名,也可以简写为:sp+窗口名


纵向切割窗口名


:vsplit+窗口名,也可以简写为:vsp+窗口名


2、关闭多窗口


可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。


:tabc 关闭当前窗口


:tabo 关闭所有窗口


3、窗口切换


:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。


4、窗口大小调整


纵向调整


:ctrl+w + 纵向扩大(行数增加)


:ctrl+w - 纵向缩小 (行数减少)


:res(ize) num  例如::res 5,显示行数调整为5行


:res(ize)+num 把当前窗口高度增加num行


:res(ize)-num 把当前窗口高度减少num行


横向调整


:vertical res(ize) num 指定当前窗口为num列


:vertical res(ize)+num 把当前窗口增加num列


:vertical res(ize)-num 把当前窗口减少num列


5、给窗口重命名


:f file


6、vi打开多文件


vi a b c


:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件


:e# 回到刚才编辑的文件


7、文件浏览


:Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择


:Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器


:ls 显示当前buffer情况


8、vi与shell切换


:shell 可以在不关闭vi的情况下切换到shell命令行


:exit 从shell回到vi


from:http://hi.baidu.com/dtzw/blog/item/64a6f3f2fc10721eb07ec590.html


vim是个优秀的编辑器,有很多功能你不知道。


比方说vim可以模拟多窗口(多tab)以及拆分窗口,可以同时编辑多个文件。


多tab时,每个tab可以编辑一个文件,但不同的tab不能同时显示,要切换。


拆分窗口后,窗口是同时显示的,每个窗口可以编辑一个文件。


两种方式可以同时生效的,现在试一下:


命令模式:输入sp,窗口就上下拆分成两个窗口了。


按ctrl+w然后再按c,就关掉当前窗口了。


连按两次ctrl+w,可以在窗口间切换。


输入vs,就是垂直拆分。


也可以多tab,输入命令tabnew,就创建一个新tab,命令tabn就切换到下一个tab,tabn3就切换到第三个tab,tabc就关掉当前tab。


具体看vim的手册,或者vim里help 某个命令。


vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.


之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。


用法


:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab


:tabc       关闭当前的tab


:tabo       关闭所有其他的tab


:tabs       查看所有打开的tab


:tabp      前一个


:tabn      后一个


标准模式下:


gt , gT 可以直接在tab之间切换。


还有很多他命令, 看官大人自己, :help table 吧。


看过Swaroop的书之后,就越来越喜欢VIm了。


尤其是多窗口,真是非常Cool哦~


解释一下这是咋弄出来的:


在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。


但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。


打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。


另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。


更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。


VIM 标签页 (tab)


新建标签页


使用:tabe命令和文件名参数,可以在新标签页中打开指定的文件。也可以使用:tabnew命令,在新标签页中编辑新的文件。命令:tab split将在新标签页中,打开当前缓冲区中的文件。


命令:tabf允许你在当前目录搜索文件,并在新标签页中打开。比如我想打开当前目录下的img.txt文件,那么就可以使用:tabf img.*命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示你“文件名过多”,这时你需要给出更精确的搜索条件以打开文件。


Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。


列示标签页


命令:tabs可以显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。


关闭标签页


命令:tabc可以关闭当前标签页。而命令:tabo将关闭所有的标签页。


切换标签页


命令:tabn或gt可以移动到下一个标签页。而命令:tabp或gT将移动到上一个标签页。如果已经到达最后面或最前面的标签页,将会自动转向循环。


如果你打开了很多标签页,那么可以使用:tabfirst或:tabr命令,移动到第一个标签页。使用:tablast命令,移动到最后一个标签页。


移动标签页


如果你希望按照指定的次序排列标签页,那么你可以使用:tabm命令。请注意,标签页次序是从0开始计数的。比如命令:tabm 1将把当前标签页移动到第2的位置。如果你没有为:tabm命令指定参数,那么当前标签页将会被移动到最后。


配置标签页


默认情况下,只有用户新建了标签页才会在窗口上方显示标签栏,这是由选项set showtabline=1决定的。如果我们希望总是显示标签栏,那么可以用set showtabline=2命令来设置。如果我们希望完全不显示标签栏,那么可以使用set showtabline=0来设置。


多标签页命令


使用:tabdo命令,我们可以同时在多个标签页中执行命令。比如我们打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,那么就可以使用:tabdo %s/food/drink/g命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。


图形界面


如果你使用的是带有图形界面的gVim,那么新建、关闭和打开标签页的操作,都可以通过在标签页上右击鼠标完成。只需要点击相应标签,就可以在不同的标签页间切换。


通过:help tab-page-intro命令,可以获得关于标签页使用的更多信息。


命令小结


:tabnew    新建标签页


:tabs    显示已打开标签页的列表


:tabc    关闭当前标签页


:tabn    移动到下一个标签页


:tabp    移动到上一个标签页


:tabfirst    移动到第一个标签页


:tablast    移动到最后一个标签页


http://www.webinno.cn/blog/article/view/44


在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定位和编辑. 因此能更快一点移动光标是很有用的.文中的c-表示ctrl,大小写敏感。光标定位还需结合搜索。


=== 光标定位 ==

 

   h或^h         向左移一个字符


   j或^j或^n     向下移一行


   k或^p         向上移一行


   l或空格         向右移一个字符


   w             移到下一个字的开头


   W             移到下一个字的开头,忽略标点符号。默认的情况下W认为字符串时已空格分开的。


                   cp /mnt/marvell/main.sh /stv/


                   所以上面一行在W的选择下只有三个字符串,即 1 cp 2 /mnt/marvell/main.sh  3 /stv/


                   这与w时不一样的。


   e             移到下一个字的结尾


   E             移到下一个字的结尾,忽略标点符号


   b             移到前一个字的开头


   B             移到前一个字的开头,忽略标点符号同W


   |             移到当前行的第一列


   0             移到当前行的第一列字符处,会忽略行前的空白。


   n|             移到当前行的第n列


   ^             移到当前行的第一个非空字符


   $             移到当前行的最后一个字符


   return或+     移到下一行的第一个字符


   -             移到前一行的第一个非空字符


   L             移到屏幕的最后一行


   M             移到屏幕的中间一行


   H             移到屏幕的第一行

 

   G             移到文件的最后一行


   nG             移到文件的第n行


   (             移到句子的开头


   )             移到句子的结尾


   {             移到段落的开头 //我用的时候发现{只是移动到前一个空行 }移动到后一个空行首


   }             移到下一个段落的开头


     /**vim 第一列插入{来定义一个段落 */


   [[             回到段落的开头处


   ]]             向前移到下一个段落的开头处

 

   m(a-z)         用一个字母来标记当前位置,如用mz表示标记z


   '(a-z)         将光标移动到指定的标记,如用'z表示移动到z

 

   ''          此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查(此处时两个单引号不是双引号)


               找到某个单词后, 再输入此命令则回到上次停留的位置.


   '.          此命令相当好使, 它移动光标到上一次的修改行.


   `.          此命令相当强大, 它移动光标到上一次的修改点.


   %            从大括号的开始移动到大括号的结束位置

 

   :            后边加行号就是跳到这一行

 

   <C-O>       光标返回到以前的位置。相当于光标移动的“撤销”


   <C-I>       光标返回到后来的位置。相当于光标移动的“恢复”

 

=== 屏幕定位 ==


   c-e         将屏幕上滚一行


   c-y         将屏幕下滚一行


   c-u         将屏幕上滚半页


   c-d         将屏幕下滚半页


   c-b         将屏幕上滚一页


   c-f         将屏幕下滚一页


   z-return     将当前行置为屏幕的顶行


   nz-return     将当前行下的第n行置为屏幕的顶行


   z.             将当前行置为屏幕的中央


   nz.         将当前行上的第n行置为屏幕的中央


   z-             将当前行置为屏幕的底行


   nz-         将当前行上的第n行置为屏幕的底行


本文链接:http://www.webinno.cn/blog/article/view/43


最近读了一下Swaroop C H的<A Byte of Vim>,其中涉及到一些Vim命令,总结如下:


命令        说明


7j        将光标下移7行


dw        删除一个单词


*        搜索文件中当前光标所在处的单词


:50,100s/old/new/g 将第50-100行之间的"old"替换为"new"


:sp        “分割”视角,同时浏览一个文件的两个不同部分


gf        打开以当前光标处的单词为文件名的文件


:colorscheme desert 更换色彩方案,将色彩方案换为desert


i        将Vim切换到插入模式


<Esc> 将Vim切换到正常模式


:%s/from/to/g 将全文中的"from"全部替换为"to"


:s        表示替换,substitute


:0,10s/from/to/gc 将文本前10行中的"from"替换为"to",并在每次替换之前都要用"yes"和"no"确认,c表示confirmation


<Enter> 所有命令模式下的命令都必须以<Enter>结尾,来通知Vim命令已经结束


:help vim-modes-intro 查看Vim帮助文档中关于模式的介绍


:edit hello.txt/:e hello.txt 编辑hello.txt文件,如果该文件不存在,则新建一个hello.txt文件,

并进入编辑状态


:write/:w        保存刚刚编辑的文件


:quit/:q        关闭当前窗口


:q!        强制关闭当前窗口


:help        查看帮助信息


:help :edit        查看关于 :edit 的帮助信息


:help notation


:help keycodes


:echo "Hello, World!" 回显"Hello, World!"


/hello        搜索"hello",并显示第1个匹配


:help usr_toc 显示参考手册的目录


:help index        显示索引,可以通过在其中搜索感兴趣的话题


/insert mode 显示与插入模式相关的信息


F1        显示帮助


由正常模式进入插入模式的几种方式:


i        将光标移到当前位置前的一个位置,并进入插入模式


I        将光标移动到所在行的行首位置,并进入插入模式


a        将光标移动打当前位置后的一个位置,并进入插入模式


A        将光标移动到所在行的行尾位置,并进入插入模式


o        在所在行之下开辟一个新行,并进入插入模式,光标在新行的行首


O        在所在行之上开辟一个新行,并进入插入模式,光标在新行的行尾


:help inserting 显示关于插入的帮助文档


用于替换的几个命令:


s        删除光标所在处的字符,并进入插入模式,主要用于替换, 其效果和“删除+插入”相同


S        删除光标所在行的所有内容,并进入插入模式,用于整行内容的替换


r        "replace",即替换,删除光标所在处的字符,在输入要替换的字符后,自动回到正常模式下


R        多个字符的替换,光标处及之后的单词可以被替换


:help replacing                显示关于替换的帮助文档


b        在光标移动到所在处单词的第一个字母处,如果所在处为空白,则移动到所在处前一个单词的第一个字母


v        由正常模式进入可视模式,以字符为最小选中单位,对内容进行选择


V        由正常模式进入可视模式,以行为最小选中单位,对内容进行选择


c        删除选中的内容,并由可视模式进入插入模式,对选中内容进行修改


5e        移动当前光标,到其后第5的单词的结尾处


w        将光标移动到当前位置之后的单词的开头


3fh        寻找当前行光标之后第 3 次出现 "h" 的位置,将光标置于该处


}        将光标移动到下一段的开头


35j        将光标向下移动35行


ctrl+o        返回移动前光标所在位置


2j        将 j 的 操作重复两次,即向下移动2行


5l        将光标向右移动5次,和操作 l 5次 效果相同


5h        将光标向左移动5次,和操作 h 5次 效果相同


^        将光标移动到行首


$        将光标移动到行尾


Ctrl+b        向上移动一个屏幕


Ctrl+f        向下移动一个屏幕


50G        将光标移动到第50行的开头


G        将光标移动到文件的最后一行的行首


1G        将光标移动的文件的第一行的行首


M        将光标移动到第一行的行首


L        将光标移动到最后一行的行首


M        将光标移动到中间一行的行首


以单词为单位进行光标移动:


w        将光标移动到下一个单词的开头


2w        将光标向后移动 2 个单词,即移动到其后第 2 个单词的开头


e        若光标位于当前单词的最后一个字符上,则将光标移动到下一个单词的结尾字符上;

若光标不位于当前单词的最后一个字符,则将光标移动到当前单词的最后一个字符上。


2e        若光标位于当前单词的最后一个字符上,则将光标移动到其后第 2 个单词的结尾字符上;若光标不位于当前单词的最后一个字符,则将光标移动到气候第 1 个单词的结尾字符上。


b        若光标位于当前单词的第 1 个字符上,则将光标移动到当前单词前一个的单词的第 1 个字符上;若光标不位于当前单词的第 1 个字符上,则将光标移动到当前单词的第 1 个字符上。


2b        若光标位于当前单词的第 1 个字符上,则将光标移动到当前单词前一个的单词的第 2 个字符上;若光标不位于当前单词的第 1 个字符上,则将光标移动到当前单词的第 2 个字符上。


:help word-motions        查看关于以单词为单位进行光标移动的帮助文档


以句子为单位进行光标的移动:


)        将光标由当前位置移动到下一句话句首字符的位置


(        若光标位于所在句子的句首字符位置,则将光标移动到前一句的句首位置;若光标不位于所在句子的句首字符位置,将光标移动到所在句子的第 1 个字符的位置。


2(        将光标由当前位置移动到其后第 2 句话句首字符的位置


2)        若光标位于所在句子的句首字符位置,则将光标移动到其前面 2 句话的句首位置;

若光标不位于所在句子的句首字符位置,则将光标移动到其前面 1 句话的句首位置;


}        将光标移动到下一段段首的位置


{        将光标移动到上一段段首的位置


:help cursor-motions        查看与光标移动有关的帮助信息


ma        在光标所在位置创建一个名为 a 的标记,记录光标位置


'a        回到光标 a 所在的位置


Ctrl+o        回到原来的位置


Ctrl+i        到下一个位置


ap        在可视模式下,选择光标所在处的一个段落


aw        在可视模式下,选择光标所在处的的一个单词


ab        在可视模式下,选择光标所在处由圆括号()包围的一个区域内的所有内容


:help object-motions        查看与对象移动有关的帮助信息


:help text-objects        查看与文本对象有关的帮助信息


:help motions/various-motions 查看与移动有关的帮助信息


:help user-manual        查看用户手册


:help abbreviation        查看与缩写相关的帮助信息


Ctrl+]        在查看帮助信息时,将光标放在[<>]之间,可以跳转到相关的帮助信息


:helpgrep phrase        寻找所有帮助文档,显示包含指定内容"phrase"的帮助信息


:cnext        跳转到文档中下一个包含所搜索信息"phrase"的部分


:cprev        跳转到文档中上一个包含所搜索信息"phrase"的部分


:clist        显示文档中包含"phrase"部分的列表


:swapname        显示交换文件的名字


~        改变光标所在处字符的大小写格式


:pwd        显示Vim寻找文件的默认路径


|        将光标移动到改行的第一个字符处


dl        将光标所在处的字符删除


dw        将光标所在处的单词删除


dd        删除光标所在行的全部内容


yy        赋值光标所在行的全部内容到剪贴板


yap        复制光标所在段落的全部内容到剪贴板


p        在当前光标所在处之后的位置粘贴剪贴板的内容


P        在当前光标所在处之前的位置粘贴剪贴板的内容


dwwP        将光标所在位置前(不含光标)的单词和光标所在位置后(包含光标)单词转换


:help mark-motions        查看关于制作标签以记录位置的帮助文档

相关文章
|
1月前
|
机器学习/深度学习 开发工具
Vim的常用命令 基本使用
Vim的常用命令 基本使用
23 0
|
1月前
|
Linux 编译器 开发工具
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
142 1
|
1月前
|
NoSQL Linux 编译器
Linux:vim调试工具gdb | 常见命令集
Linux:vim调试工具gdb | 常见命令集
121 0
|
1月前
|
开发工具
Vim 模式切换 | 命令集
Vim 模式切换 | 命令集
59 0
|
1月前
|
运维 自然语言处理 开发工具
【专栏】NeoVim正逐渐取代Vim成为运维人员首选的文本编辑器。这 8 个原因或许是答案,命令对比一目了然!
【4月更文挑战第28天】NeoVim正逐渐取代Vim成为运维人员首选的文本编辑器。其优势包括更好的扩展性、现代化界面、多语言编程支持、异步处理能力、协作功能、持续更新及活跃社区。NeoVim的命令与Vim相似,但在启动配置、插件管理和窗口管理等方面有所优化。总的来说,NeoVim提供了更强大、灵活和现代的编辑体验。
|
6月前
|
Unix Linux Shell
Linux下vi与vim命令使用与区别
Linux下vi与vim命令使用与区别
112 0
|
1月前
|
Linux 开发工具
【Linux】vim正常模式命令集
【Linux】vim正常模式命令集
【Linux】vim正常模式命令集
|
1月前
|
人工智能 搜索推荐 Unix
vim的使用介绍以及命令大全(系统性学习day3)
vim的使用介绍以及命令大全(系统性学习day3)
|
1月前
|
Linux 开发工具 C语言
C语言编译过程、VIM常用命令
C语言编译过程、VIM常用命令
|
1月前
|
开发工具 Docker 索引
Docker解决没有vi、vim等命令
Docker解决没有vi、vim等命令
109 0