参考vim专栏http://blog.csdn.net/column/details/vim-practice.html环境rhel-server-7.0-x86_64-dvd内置教程命令vimtutor用来打开内置的vim编辑器教程的一个副本供用户学习说明本文中的大写字母在实践中是使用Shift小写字母完成的疑惑有的时候输入一个数字m后按CtrlEsc也许是两次Esc会将这个数字一直循环直到这个数字总共有m个比如输入9后再按CtrlEsc也许是两次Esc会出现999999999不知这是何道理vim编辑器有以下几种工作模式1.命令模式用vim编辑器打开文件后若文件不存在则修改保存后会生成新文件这一点就没必要讲了vim编辑器便处于命令模式以插入的方式进入插入模式在光标之前插入i或Insert以附加的方式进入插入模式在光标之后插入a将光标移至行首后进入插入模式在光标之后插入I将光标移至行尾后进入插入模式在光标之后插入A在当前行的下方新打开一行后进入插入模式在光标之后插入o在当前行的上方新打开一行后进入插入模式在光标之后插入O进入替换模式R进入Ex模式:进入基于字符的可视模式v进入基于行的可视模式V进入基于块的可视模式Ctrlv将拖拉复制的内容放置粘贴在光标处p将a寄存器中的内容放置粘贴在光标处ap进入搜索模式向前搜索/进入搜索模式向后搜索光标移至下一个匹配项n光标移至上一个匹配项N光标后退Ctrlo或CtrlO 但后退过头了会新建一个文件所以你懂的光标前进Ctrli或CtrlI光标向左移动一位h或Left或Backspace光标向右移动一位l或Right光标移至上一个词的开头不包含标点符号b光标移至上一个词的开头包含标点符号B光标移至下一个词的开头不包含标点符号w光标移至下一个词的开头包含标点符号W光标移至本单词或下一个词的末尾如果光标已经在末尾的话包含标点符号e或E光标移至上一个空格或换行符之后CtrlLeft光标移至下一个空格或换行符之后CtrlRight光标移至行首0或^或Home光标移至行尾$或End光标向下移动一行j或Down或Ctrln或Enter光标向上移动一行k或Up光标移至当前或上一句的开头(光标移至下一句的开头光标移至当前或上一段落的开头{光标移至下一段落的开头}光标移至首行gg光标移至末行G光标移至第n行nG转换光标处字符的大小写后将光标移至下一个字符~对当前行执行最近一个操作.立即向前搜索光标处的词*撤销一次u撤销到不能撤销范围只在光标所在行U恢复与撤销相反一次Ctrlr删除光标处字符x或Delete删除光标前字符X查找配对的括号()[]{}%往前翻一页PageUp或CtrlUp往后翻一页PageDown或CtrlDown命令模式下特有的一种命令格式[计数][寄存器][操作符][动作]计数指定动作执行次数的标量寄存器vim不是仅提供一个供复制与粘贴使用的剪贴板而是提供26个常规寄存器也叫命名寄存器名字从a到z和多个特殊用途的寄存器。拥有多个寄存器可以让用户更加高效地执行剪切和粘贴而不必担心丢失数据或者过多地移动光标。如果未指定要使用的寄存器则将使用“未命名”寄存器每次使用命名寄存器时未命名寄存器也会更新当使用命名寄存器的大写版本时被删除或拖拉复制的文本将附加到该寄存器而不是覆盖它特殊寄存器中有10个数字编号的寄存器名字从0到9。0寄存器始终拥有最近拖拉复制的文本的副本而1寄存器则具有最近删除的文本的副本。当新的文本被更改或删除时1寄存器的内容将转移到2寄存器中2寄存器的内容将转移到3寄存器中以此类推与命名寄存器不同数字编号寄存器的内容不会在会话之间保存操作符按下操作符后vim编辑器进入等待输入动作的状态p除外它后面不跟动作此时可以按Esc退出这种状态删除操作符d 按两下删除整行D表示从光标处删除到行尾替换操作符删除其实是将文本放到了未命名寄存器中后自动进入到插入模式c 按两下替换整行C表示从光标处替换到行尾替换操作符直接替换r 后面跟的动作就是要替换的新字符。另一种选择是进入替换模式拖拉复制操作符y 按两下复制整行放置粘贴操作符p 将内容放置粘贴于光标后或在当前行的下方另开一行然后放置粘贴内容如果粘贴的是行范围的数据的话P表示将内容放置粘贴于光标前或在当前行的上方方另开一行然后放置粘贴内容如果粘贴的是行范围的数据的话动作通常是控制光标移动的动作可以附加i前缀或a前缀分别表示选择inner或a版本的移动比如光标左移两位2h从光标处删除到行尾d$或D删除光标处的字符不包含周围的任何空白区并用被删除的内容覆盖掉a寄存器中的内容ax接上一步删除光标处的一个词不包含周围的任何空白区并将被删除的内容附加到a寄存器中Adiw接上一步放置粘贴a寄存器中的内容到光标处ap将光标处的字符替换为“tt”2rt向下拖拉复制3行3yy向下拖拉复制3行并覆盖到t寄存器中3tyy一次放置粘贴6遍到光标前面或当前行上方6P一次放置粘贴6遍s寄存器中的内容到光标前面或当前行上方6sP从光标删除到后三句的开头后自动进入到插入模式3c替换整个当前词而不是仅仅从光标位置开始但不包含周围的任何空白区ciw替换整个当前词而不是仅仅从光标位置开始但包含周围的任何空白区caw2.插入模式标尺最底行显示--INSERT--。在该模式下可以正常使用所有字符键与一些控制键返回命令模式Esc进入替换模式Insert光标移至上一个空格或换行符之后CtrlLeft光标移至下一个空格或换行符之后CtrlRight3.替换模式标尺最底行显示--INSERT--。在该模式下可以用输入的字符替换光标处字符返回命令模式Esc返回插入模式Insert光标移至上一个空格或换行符之后CtrlLeft光标移至下一个空格或换行符之后CtrlRight4.扩展命令模式Ex模式标尺最底行以:开头并等待键入扩展命令然后通过按Enter键执行命令取消当前命令或返回命令模式Esc常见的做法是按两下Esc或更多下以确保返回至命令模式。将开头的冒号用Backspace删掉也可以返回命令模式写入保存文件:w以其他文件名保存当前文件就是传说中的“另存为”:w 路径名文件名退出vim编辑器:q写入保存文件并退出vim编辑器:x或:wq有些情况下需要强制进行操作比如保存对一个只读文件的修改强制写入保存文件:w!其他强制操作也一样在原来命令的后面加!查看命令的信息:命令 比如查看set命令的信息:set查看高亮色设置:highlight为所有行添加行号:set number或:set nu取消行号:set nonumber或:set nonu执行外部命令:!命令 如列出当前目录内容:!ls或:!dir将外部命令的输出插入到光标处:r !命令将另一文件中的内容插入到光标处:r 路径名文件名Ex模式下特有的一种用来搜索和替换的命令格式[range]s/pattern/string/flagsrange可以是行号42、行号范围1,7表示第1-7行、%当前文档中的所有行缺省表示在当前行进行搜索和替换pattern被搜索和替换的字符串支持正则表达式和通配符string替换后的新字符串flags替换选项替换一行中多个位置上的patterng使当前搜索区分大小写i5.可视模式标尺最底行显示--VISUAL--或--VISUAL LINE--或--VISUAL BLOCK--分别表示基于字符、基于行和基于块。在该模式下任何光标移动将选择文本。也可以与搜索模式相结合。返回命令模式Esc进入基于字符的可视模式v 再次按v返回命令模式进入基于行的可视模式V 再次按V返回命令模式进入基于块的可视模式Ctrlv 再次按Ctrlv返回命令模式进入搜索模式向前搜索/进入搜索模式向后搜索按回车后将选中光标处与第一处匹配项之间的文本之后返回可视模式删除选中的内容d将选中的内容保存到另一不存在的文件中先按:最底行会出现:,然后输入w 路径名文件名最后Enter将选中的内容拖拉复到后返回到命令模式y将选中的内容拖拉复制到a寄存器中后返回到命令模式ay6.搜索模式标尺最底行以/向前搜索或向后搜索开头并等待键入正则表达式然后通过按Enter键执行搜索后返回命令模式返回命令模式Esc