一、说明

   1、介绍:vi编辑器是一个用于创建和修改文本文件的交互式的命令行编辑器。

   2、模式:vi有三种基本的操作模式: 命令模式  编辑模式、最后行模式。

       命令模式:vi的默认模式,在命令模式下,你可以键入命令来删除、更改、移动、定位、搜索等操作。

       编辑模式:在编辑模式下,你可以往文件中输入文本。

       最后行模式:当处于命令模式下时,通过键入:使你处于屏幕的最后一行,这就称为最后行模式。

   3、切换:通过键入输入命令,vi编辑器将离开默认的命令模式,进入编辑模式。

       在编辑模式下,键入的所有文本都会被保存到文件中。

       完成文本的输入后,按Esc键vi将回到命令模式下。

二、输入

   a     在光标右侧输入文本

   A     在光标所在行的末尾输入文本

   i     在光标左侧输入文本

   I     在光标所在行的开头输入文本

   o     在光标所在行的下一行开始新行

   O     在光标所在行的上一行开始新行

三、定位

   h,左箭头,退格键     光标左移一个空格

   l,右箭头,空格键     光标右移一个空格

   j,下箭头             光标下移一行

   k,上箭头             光标上移一行

   w                     光标右移到下一个字开头

   b                     光标左移到前一个字开头

   e                     光标右移到下一个字末尾

   $                     光标右移到行结尾

   ^                     光标左移到行开头

   control-f             下翻一屏

   control-d             下滚半屏

   control-b             上翻一屏

   control-u             上滚半屏

   control-L             刷新屏幕

四、删除

   x          删除光标所在处的一个字符

   dw         删除字(或者删除字的一部分,从光标所在处到字结尾)

   dd         删除光标所在行

   D          删除光标光标所在处之右的行

   :5,10d     删除5-10行(最后行模式)

   补充       3x  删除3个字符;3dw  删除从光标开始的3个字符;3dd  删除从光标开始的3

五、回退

   u      放弃最近的修改

   U      放弃对当前行所作的修改

   :u     放弃上一个最后行命令(最后行模式)

六、查找

   /string     向下查找字符串string

   ?string     向上查找字符串string

   n           查找字符串string的下一个出现

   N           查找字符串string的上一个出现

七、替换

   :%s/old/new/g     全局查找和替换

   r                 替换当前光标所在的字符

   s                 用字符串替换当前光标中字符

八、复制粘贴

   yy             复制一行文本,并将他们放入到临时缓冲区

   p              将临时缓冲区中的内容放置到光标后面的位置

   P              将临时缓冲区中的内容放置到光标前面的位置

   :l ,3 co 5     拷贝1-3行的文本,并把它放置在第5行后面

   :4 ,6 m 8      移动4-6行到当前第8行后面

九、保存与退出

   :w              保存文件,不退出vi

   :w new_file     保存到文件new_file

   :wq             保存修改退出vi

   :x              保存修改并退出vi

   ZZ              保存修改且退出vi

   :q!             不保存修改强制退出vi(!号具有强制含义)

   :wq!            保存修改且退出vi

十、定制vi

   :set nu             显示行号

   :set nonu           隐藏行号

   :set ic             设置搜索时忽略大小写

   :set noic           搜索时对大小写敏感

   :set list           显示不可视字符

   :set nolist         不显示不可视字符

   :set showmode       显示当前操作模式

   :set shownomode     不显示当前操作模式