vi命令是UNIX操做系统和类UNIX操做系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的加强版(vi Improved),与vi编辑器彻底兼容,并且实现了不少加强功能。
vi命令有两种模式:命令模式和加强模式。使用vi命令打开文件后默认是命令模式,此时能够查找、替换、跳转、显示设置等操做;使用“A”、“a”、“O”、“o”、“I”、“i”等命令后便可进入编辑模式,以对文件进行编辑;按ESC键能够从编辑模式切换到命令模式。经常使用命令以下:java
:$:光标跳转到最后一行的行首; x或X:删除一个字符,x删除光标后的,而X删除光标前的; D:删除从当前光标到光标所在行尾的所有字符; dd:删除光标行正行内容; ndd:删除当前行及其后n-1行; nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字; p:粘贴文本操做,用于将缓存区的内容粘贴到当前光标所在位置的下方; P:粘贴文本操做,用于将缓存区的内容粘贴到当前光标所在位置的上方; /字符串:文本查找操做,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示; ?name:文本查找操做,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示; a,bs/F/T:替换文本操做,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操做; a:在当前字符后添加文本; A:在行末添加文本; i:在当前字符前插入文本; I:在行首插入文本; o:在当前行后面插入一空行; O:在当前行前面插入一空行; :wq:在命令模式下,执行存盘退出操做; :w:在命令模式下,执行存盘操做; :w!:在命令模式下,执行强制存盘操做; :q:在命令模式下,执行退出vi操做; :q!:在命令模式下,执行强制退出vi操做; :e文件名:在命令模式下,打开并编辑指定名称的文件; :n:在命令模式下,若是同时打开多个文件,则继续编辑下一个文件; :f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例; :set number:在命令模式下,用于在最左端显示行号; :set nonumber:在命令模式下,用于在最左端不显示行号;
光标移动命令:vim
k:光标向上移动一个行 j:光标向下移动一行 h:光标向左移动一个字符位置 l:光标向右移动一个字符位置 能够在上述命令前加上数字,nk表示向上移动n行,其余相似
例如,使用vi命令打开文件vitest.txt,显示以下,光标默认在起始位置,最下面一行红框中显示的是该一共18行,120个字符:缓存
以便于编辑,命令模式下输入“:set number”后按回车,注意前面有冒号,关闭显示行号输入“:set nonumber”回车便可:编辑器
命令模式下输入命令“:5”回车,若是要跳转到最后一行行首,输入命令“:$”回车,spa
命令模式下按“dd”,效果以下:操作系统
命令模式下按“D”,注意若是光标在行首,则删除本行全部字符,可是此行并无被删除,只是一个空行;而“dd”命令则将光标所在行所有删除。3d
将光标移动到第六行第三列,命令模式下按“x”能够删除光标后的字符(即光标所在位置处的字符),如左图;按“X”可删除光标前的字符,如右图(即光标所在处左边的字符):blog
第五行补上“123”,然后将光标移动到第六行行首。字符串
从光标位置向文件尾部查找文本中的“123”字符串,命令模式下输入“/123”回车,搜索出来的结果将会高亮显示,如左图;将光标移动到第六行行首,从光标位置向文件头部查找文本中的“123”字符串,命令模式下输入“?123”回车,如右图:it
将第五行至第14行中的“123”字符串替换为“abc”,在命令模式下输入“:5,14s/123/abc”回车,以下左图(若是在第8行有多个匹配的字符串,只会对此行第一个匹配的结果进行替换);若是不输入行号范围,则只在本行查找替换(不论光标在本行哪一个位置,都从头开始查找,但只会对第一次找到的结果进行替换),若是本行查询不到则不执行任何操做,例如将光标移动到第14行行首,将本行中的“abc”替换为“123”,命令模式下“:s/abc/123”回车,以下右图:
若是要将某个范围内或者整个文本中的字符串替换为另外一个字符串,须要加上"/g",例如将第12行至第14行中的字符“cc”替换为"11",输入命令“:12,14s/cc/11/g”回车,效果以下右图;若是不指定行号范围,则只对光标所在行进行所有替换。
替换文本的另外两种状况,输入“:%s/F/T”回车是将整个文本中全部行第一个匹配的F替换为T;输入“:%s/F/T/g”回车是将整个文本中全部的F替换为T。
若是要替换的字符串中含有“/”,则将间隔符换为“#”便可,例如“:s#var/#sky/”是将字符串“var/”替换为“sky/”,其余用法与上面一致。