本文摘录自:

http://www.linuxsir.org/main/?q=node/206

在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程。

 vi编辑器有三种工作方式:命令方式、输入方式和ex转义方式。通过相应的命令或操作,在这三种工作方式之间可以进行转换。

 命令方式 

 在Shell提示符后输入命令vi,进入vi编辑器,并处于vi的命令方式。此时,从键盘上输入的任何字符都被作为编辑命令来解释,例如,a(append)表示附加命令,i(insert)表示插入命令,x表示删除字符命令等。如果输入的字符不是vi的合法命令,则机器发出“报警声”,光标不移动。另外,在命令方式下输入的字符(即vi命令)并不在屏幕上显示出来,例如,输入i,屏幕上并无变化,但通过执行i命令,编辑器的工作方式却发生变化:由命令方式变为输入方式。 

 输入方式 

 通过输入vi的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令(c)或取代命令(r)可以从命令方式进入输入方式。在输入方式下,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当做该文件的正文。进入输入方式后,输入的可见字符都在屏幕上显示出来,而编辑命令不再起作用,仅作为普通字母出现。例如,在命令方式下输入字母i,进到输入方式,然后再输入i,就在屏幕上相应光标处添加一个字母i。 由输入方式回到命令方式的办法是按下Esc键。如果已在命令方式下,那么按下Esc键就会发出“嘟嘟”声。为了确保用户想执行的vi命令是在命令方式下输入的,不妨多按几下Esc键,听到嘟声后再输入命令。 

 ex转义方式 

 vi和ex编辑器的功能是相同的,二者的主要区别是用户界面。在vi中,命令通常是单个字母,如a,x,r等。而在ex中,命令是以Enter;键结束的命令行。vi有一个专门的“转义”命令,可访问很多面向行的ex命令。为使用ex转义方式,可输入一个冒号(:)。作为ex命令提示符,冒号出现在状态行(通常在屏幕最下一行)。按下中断键(通常是Del键),可终止正在执行的命令。多数文件管理命令都是在ex转义方式下执行的(例如,读取文件,把编辑缓冲区的内容写到文件中等)。转义命令执行后,自动回到命令方式。


vi编辑器的三种工作方式之间的转换如图所示。


wKioL1fszRvT1g4MAABhrQNYTdU436.jpg-wh_50


1.文件的保存和退出
  1.1):w  保存;
  1.2):w  filename 另存为filename;
  1.3):wq! 保存退出;
  1.4):wq! filename 注:以filename为文件名保存后退出;
  1.5):q! 不保存退出;
  1.6):x 应该是保存并退出 ,功能和:wq!相同

2.光标移动
  2.1)j 向下移动一行;
  2.2)k 向上移动一行;

  2.3)h 向左移动一个字符;
  2.4)l 向右移动一个字符;

  2.5)ctrl+b  向上移动一屏;
  2.6)ctrl+f  向下移动一屏;

  2.7)向上箭头    向上移动;
  2.8)向下箭头    向下移动;
  2.9)向左箭头    向左移动;
  2.10)向右箭头    向右移动;

  2.11)$ 移至行尾
  2.12)gg 移动至文档开始
  2.13)GG 移动到文档尾部
  2.14)ctrl + f 向前翻页
  2.15)ctrl + b 向后翻页

3.插入模式
  3.1)i  在光标之前插入;
  3.2)a  在光标之后插入;

  3.3)I 在光标所在行的行首插入;
  3.4)A  在光标所在行的行末插入;

  3.5)O  在光标所在的行的上面插入一行;
  3.6)o  在光标所在的行的下面插入一行;

  3.7)s  删除光标后的一个字符,然后进入插入模式;
  3.8)S  删除光标所在的行,然后进入插入模式;

4.文本内容的删除
  4.1)x 一个字符;
  4.2)#x 删除几个字符,#表示数字,比如3x;
  4.3)dw 删除一个单词;
  4.4)#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;
  4.5)dd 删除一行;
  4.6)#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;
  4.7)d$ 删除光标到行尾的内容;
  4.8)J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;

5.恢复修改及恢复删除
  5.1)u  撤消修改或删除操作;

6.复制及粘帖
  6.1)yy 复制当前行
  6.2)#yy 复制多行,#用数字表示,比如3yy表示复制三行;
  6.3)如果在可视模式下,y可以复制选定的内容

  6.4)p在光标之后粘帖
  6.5) shift + p 在光标之前粘帖

7.查找和替换
  7.1)/SEARCH  注:正向查找,按n键把光标移动到下一个符合条件的地方;
  7.2)?SEARCH  注:反向查找,按shift+n 键,把光标移动到下一个符合条件的

  7.3):s /SEARCH/REPLACE/g  注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;
  7.4):%s /SEARCH/REPLACE  注:把文档中所有SEARCH替换成REPLACE;
  7.5):#,# s /SEARCH/REPLACE/g  注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;