vi使用:
	  基本模式:
	  输入模式:
	  末行模式:
		  内置的命令行接口
	打开文件:
		  +num:打开文件后,直接让光标处于第num行;
		  +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行首;
			    例如:vim +3 /etc/passwd
				       vim +/root /etc/passwd
	模式转换:
		  i:insert;在光标所在处插入;
		  a:append;在光标所在处后面插入;
		  o:在当前光标所在行的下方打开一个新行;
		  I:在当前光标所在行的行首输入;
		  A:在当前光标所在行的行尾输入;
		  O:在当前所在行的上方打开一个新行;
	关闭文件:
		  :q 退出;
		  :q! 强制退出,丢弃此前作出的修改;
		  :wq 保存退出;
		  :x 保存退出;
		  :w /PATH/TO/SOMEWHERE
		  ZZ:保存退出;
	快速光标跳转:
		  字符间跳转:
			    h:左
			    j:下
			    k:上
			    l:右
			    num l/k/j/h:一次跳过指定num个字符;
		  单词间跳转:
			    w:下一个单词的词首;
			    e:当前或下一个单词的词尾;
			    b:当前或前一个单词的词首;
			    num w/e/b:由num指定一次跳转单词的数量;
		  行首或行尾跳转:
			    ^:跳转至光标所在行行首的第一个非空白字符;
			    0:跳转至光标所在行行首;
			    $:跳    转至光标所在行行尾;
		行间移动:
			  num G:跳转至由num指定的行;
			  G:跳转至最后一行;
			  1G或gg:第一行;
		句间移动:
			  ):跳转至下一句
			  (:跳转至上一句;
		段落间移动:
			  }:跳转至下一段;
			  {:跳转至上一段;
	vim编辑命令:
		  字符编辑:
			    x:删除光标处的字符;
			    num x:删除光标处起始的num个字符;
			    xp:交换光标所在处的字符及其后面字符的位置;
		  替换命令:
			    r:替换光标所在处的字符,但不改变编辑模式;
		  删除命令:
			    d^
			    d$
			    d0
			    dw
			    de
			    db
			    num dw/e/b
			    dd:删除光标所在整行
			    num dd:删除光标所在行及以下num行;
		  粘贴命令:
			    p:缓冲区中如果存储的为整行,则粘贴至光标所在行的下方。否则,则粘贴至当前光标所在处的后面;
			    P:缓冲区中如果存储的为整行,则粘贴至光标所在行的上方。否则,则粘贴至当前光标所在处的前面;
		  复制命令:
			    y:复制,工作行为与d命令相似;
			    yy:复制整行;
			    num yy:包括光标所在行以及向下num-1行;
			    y$
			    y0
			    y^
			    ye
			    yw
			    yb
		  改变命令:
			    c:修改
				      由编辑模式转换为输入模式;
				      c$
				      c^
				      c0
				      cb
				      ce
				      cb
				      cc:删除并输入新内容;
				      num cc:
	  可视化命令:
		    v:按字符选定;
		    V:按行选定;
			      注:经常结合编辑命令使用;
	  撤销此前的编辑:
		    u:撤销此前的操作;
		    num u:撤销指定次数的操作;
	    撤销此前的撤销:Ctrl+r
	    重复前一个编辑操作:“.”
	  翻屏操作:
		    Ctrl+f:向文件尾部翻一屏;
		    Ctrl+b:向文件首部翻一屏;
		    Ctrl+d:向文件尾部翻半屏;
		    Ctrl+u:向文件首部翻半屏;
	vim的末行模式:
		  内建的命令行接口:
			    地址定界:
				      :start_pos,end_pos
				        num:具体第num行,例如2表示第二行;
				        num1,num2:从第num1行起始,到num2行结尾;
				        num1,+num2:从num1行起始,加上num2表示的行数,以及对num1到num1+num2之间的行所做的操作;
				      “.”:表示当前光标所在行;
				      $:最后一行;
				      %:全文,相当于1$;
				      /模式1/,/模式2/:从第一次被模式1匹配的行开始,一直到第一次被模式2匹配到的行结束;
				        使用方式:
					          后直接跟一个编辑命令;
					            d
					            y
					            w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中;
					            r /PATH/TO/SOMEWHERE:从指定位置插入指定文件中的所有内容;
		    查找:
			      /PATTERN:从当前光标所在处向文件尾部查找;
			      ?PATTERN:从当前光标所在处向文件首部朝朝;
				      n:与命令同方向
				      N:与命令反方向;
		    查找并替换:
			      s:在末行模式下完成查找替换操作;
			      s/要查找的内容/替换为的内容/修饰符;
				        要查找的内容,可使用模式;
				        替换为的内容:不能使用模式,但可以使用\1,\2...等后向引用符号,还可以使用"&"引用前面查找时查找到的整个内容;
				      修饰符:
					        i:忽略大小写;
					        g:全局替换,默认情况下,每行只替换第一次出现;
	练习:
		1、复制/etc/grub.conf至/tmp目录,用查找替换命令删除/tmp/grub.conf文件中的行首空白字符;
		2、复制/etc/init.d/functions文件至/tmp目录,用查找替换命令将/tmp/functions的每行开头为空白字符的行的行首添加一个#号
	多文件模式:
		  vim FILE1 FILE2 FILE3
			    :next 下一个文件;
			    :prev 前一个文件;
			    :first 第一个文件;
			    :last 最后一个文件;
			    :wall 保存所有文件;
			    :qall 退出所有;
	窗口分割模式:
		  vim -o|-O FILE1 FILE2
			    -O:垂直分隔;
			    -o:水平分割;
		  在窗口间切换:Ctrl+w Arrow
	  单文件窗口分割:
		    Ctrl+w,s:split 水平分割;
		    Ctrl+w,v:verti 垂直分隔;
	
定制vim工作特性:
		  配置文件:
			    全局:/etc/vimrc
			    个人:~/.vimrc
		    末行:当前vim进程有效;
		
在末行模式下
1、行号:
显示:set number,简写set nu
			    取消显示:set nonumber 简写set nonu
		  2、括号匹配:
			    匹配:set showmatch,简写set sm
			    取消:set nosm
		  3、自动缩进:
			    启动:set ai
			    取消:set noai
		  4、高亮搜索:
			    启用:set hlsearch
			    取消:set nohlsearch
		  5、语法高亮:
			    启用:syntax on
			    禁用:syntax off
		  6、忽略字符大小写:
			    启用:set ic
			    禁用:set noic
原文:https://www.cnblogs.com/swnlsdln/p/10834492.html