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/」,其餘用法與上面一致。