一、vim的四大模式1.命令模式1.1.光标移动hjkl←↓↑→nh将光标向左移动n个字符;其他类似数字0将光标移动到当前行首^将光标移动到当前行行首(第一个非空字符)$将光标移动到当前行尾G将光标移动到当前文件最后一行gg将光标移动到当前文件第一行nG将光标移动到当前文件第n行,1G=gg:n将光标移动到当前文件第n行,实际上,切换到末行模式输入nH光标移动到屏幕顶部highM光标移动到屏幕中间L光标移动到屏幕底部lownH光标移动到屏幕顶部屏幕倒数n行,其他类似w将光标移动到下一个单词的开头W将光标移动到下一个单词的开头(以空格分隔的单词)e将光标移动到下一个单词的结尾E将光标移动到下一个单词的末尾(以空格分隔的单词)bcursor移动到上一个单词的开头B将光标移动到上一个单词的开头(以空格分隔的单词)1.2.翻页/滚动ctrl+f向下翻一页向前ctrl+b向上翻一页向后ctrl+d向下翻半页downctrl+u向上翻半页upctrl+e向下滚动一行ctrl+y向上滚动一行zEnterScroll当前行到屏幕顶部zt将当前行滚动到屏幕顶部z。将当前行滚动到屏幕中央zz将当前行滚动到屏幕中央z-当前行滚动到屏幕底部zb当前行滚动到屏幕底部1.3.在搜索命令模式下,输入/或?进入搜索模式?pattern向上搜索,然后按n查找下一个。其中pattern表示要查找的具体字符序列/patternDownsearchpattern表示查找的字符串,可以是正则表达式,eg:/^hello#查找hello开头的字符串/hello$#查找以hello结尾的字符串//^hello#Find^hellostringVim使用\<和\>来表示单词的开头和结尾,eg:按/启动搜索模式,输入\Findstringnamespaces要查找当前光标覆盖的单词,按*,Vim会自动启动搜索模式,光标会移动到该单词的下一个出现处。:noh取消搜索结果的高亮1.4。编辑复制(已知的复制方法需要先进入可视模式,y复制选中,d剪切)复制多行1.在命令模式下,将光标移动到要开始复制的位置2.移动将光标移动到要结束复制的行,输入y'a;pastep粘贴到当前行的下一行undo/redoundouundoctrl+rundodeletedGdeletealldddeletealine选择一行1.命令模式下,^将光标移动到第一个非空字符在行的开头;2.v进入可视模式,$将光标移动到行尾;选择多行后进入VISUALBLOCK模式,移动光标选择多行并全选ggvG(gg使光标到达顶部,v进入可视模式,G使光标到达底部)commentmulti-linecomment0.将光标移动到要注释的第一行的开头1.按ctrl+v进入VISUALBLOCK模式2.选择多行(按j、k或上下箭头键)3.按I(大写字母i)在每行的开头插入4.输入注释符号,例如//或##5.按esc退出VISUALBLOCK模式(不是ENTER)取消注释多行:0.将光标移动到要取消注释的第一行1.按ctrl+v进入VISUALBLOCK模式2.选中第一行要删除的注释符号(如//或##等),方法是按小写l键或右方向键3、按字母j、k或方向键选择多行中的所有注释符号4、按d键删除所有选中的注释符号2、插入模式3、末行模式q!不保存wq强制退出!保存后强制退出.,$d删除所有文本内容使用的方案名称为highlight_colormatch只能同时使用一种高亮模式,新的会覆盖旧的匹配none取消高亮2matchhighlight_color/name/同时高亮多种模式行号setnumbersetnusetnonumber关闭行number4.VISUALmode移动光标选中文本y复制选中的文本yankpulld剪切选中的文本G光标移动到最后一行排版缩进1.移动光标选中多行2.使用<或>来indentorindent5.其他模式2.vim配置文件vim配置文件的路径在redhat/etc/vimrcubuntu/etc/vim/vimrcsetpastesecureCRT会将你的原文以字符串的形式发送到服务器,所以当你的服务器在vim的i模式下设置为自动缩进,它会缩进secureCRT传输的字符串。如果您复制的文本已经有空格或制表符表示缩进,它们也将被视为字符串并缩进。解决方法:复制前在末行模式输入setpaste(这样vim不会启动自动缩进,只是复制粘贴)复制后在末行模式输入setnopaste(关闭粘贴)withpasteknowledge'paste'布尔型(默认关闭)全局{Vi无此功能}切换Vim到粘贴模式。可用于从窗口剪切或复制文本并将其粘贴到Vim中。它的使用会避免一些意想不到的效果。设置这个选项对于在终端上运行的Vim很有用,因为Vim无法区分键入和粘贴的文本。在GUI中,Vim知道要从什么地方粘贴,而且你不打开'paste'基本上就不会出错。对于Vim自己处理鼠标点击的终端也是如此。setnumber末行模式:setnumber显示行号setnonumber不显示行号。以上方法开启行号显示只对当前编辑器有效,退出编辑器打开vim时无效。全局开启/关闭行号显示:打开配置文件/etc/vim/vimrc添加一行:setnumbersettabstop打开配置文件/etc/vim/vimrc后添加一行:settabstop=4"Tabindentationdistance”设置为“相当于4个字符的距离”3.vim奇怪技能模式切换(从命令模式)进入插入模式iinsert(光标前)insertI(当前行行首)inserta追加(在光标之后)insertA(在当前行的末尾)inserto(在当前行下面打开一个新行)insertO(在当前行上面打开一个新行)insertrreplaceRsS退出插入模式(到命令模式)EscCtrl+CCtrl+[(从命令模式)进入最后一行模式:(从命令模式)进入VISUAL模式v(从命令模式)进入VISUALBLOCK模式ctrl+v退出VISUAL模式(到命令模式)v或Esc退出VISUALBLOCK模式(转命令模式)ctrl+v同时打开多个文件单窗口显示vifilename1filename2filename3:n切换到下一个文件(n为下一个)(这里的文件有参数顺序,最后一个文件hasnonext):N切换回上一个文件(这里文件有参数顺序,第一个文件没有之前的):e#切换回刚刚编辑的文件(这里文件没有参数顺序),只有编辑历史的顺序):efilename任意文件之间切换(不需要提前打开)多窗口显示方法一:vi-ofile1file2file3方法二:打开一个文件后,:spfile2可以连续追加.第一个打开的文件是下一个,第二个是上一个。Ctrl+w两次或ctrl+w然后按上下键切换窗口