vi命令用法

xiaokadba發表於2011-09-13

VI命令

i <wbr>在游標前插入文字I <wbr>在當前行前插入文字

x <wbr>刪除游標處的字元,可以在x前加上需要刪除的字元數目dd <wbr>刪除整行db <wbr>刪除游標前面的字

Ftext <wbr>在當前行向後查詢textftext <wbr>在當前行向前查詢text

yy <wbr>將當前行的內容放入臨時緩衝區p <wbr>將臨時緩衝區中的文字放入游標後P <wbr>將臨時緩衝區中的文字放入游標前

u <wbr>撤消最後一次修改U <wbr>撤消當前行的所有修改“np <wbr>取回最後第n次的刪除(緩衝區中存有一定次數的刪除內容,一般為9)n <wbr>重複前面的/或?查詢命令N <wbr>以相反方向重複前面的/或?命令

:wq <wbr>存檔退出:w! <wbr>存檔繼續:q <wbr>退出 <wbr>(原始檔未被編輯過可用):q! <wbr>強制退出

命令 <wbr>游標移動

h或^h <wbr>向左移一個字元j或^j或^n <wbr>向下移一行k或^p <wbr>向上移一行l或空格 <wbr>向右移一個字元G <wbr>移到檔案的最後一行nG <wbr>移到檔案的第n行w <wbr>移到下一個字的開頭W <wbr>移到下一個字的開頭,忽略標點符號b <wbr>移到前一個字的開頭B <wbr>移到前一個字的開頭,忽略標點符號L <wbr>移到螢幕的最後一行M <wbr>移到螢幕的中間一行H <wbr>移到螢幕的第一行e <wbr>移到下一個字的結尾E <wbr>移到下一個字的結尾,忽略標點符號( <wbr>移到句子的開頭) <wbr>移到句子的結尾{ <wbr>移到段落的開頭} <wbr>移到下一個段落的開頭0或| <wbr>移到當前行的第一列n| <wbr>移到當前行的第n列^ <wbr>移到當前行的第一個非空字元$ <wbr>移到當前行的最後一個字元+或return <wbr>移到下一行的第一個字元- <wbr>移到前一行的第一個非空字元

在vi中新增文字

命令 <wbr>插入動作a <wbr>在游標後插入文字A <wbr>在當前行插入文字o <wbr>在當前行的下邊插入新行O <wbr>在當前行的上邊插入新行:r <wbr>file <wbr>讀入檔案file內容,並插在當前行後:nr <wbr>file <wbr>讀入檔案file內容,並插在第n行後escape <wbr>回到命令模式^v <wbr>char <wbr>插入時忽略char的指定意義,這是為了插入特殊字元

vi中刪除文字命令 <wbr>刪除操作

nx <wbr>從當前游標處往後刪除n個字元X <wbr>刪除游標前的字元,可以在X前加上需要刪除的字元數目nX <wbr>從當前游標處往前刪除n個字元dw <wbr>刪至下一個字的開頭ndw <wbr>從當前游標處往後刪除n個字dG <wbr>刪除行,直到檔案結束ndd <wbr>從當前行開始往後刪除ndb <wbr>從當前行開始往前刪除n字:n,md <wbr>從第m行開始往前刪除n行d或d$ <wbr>從游標處刪除到行尾dcursor_command <wbr>刪除至游標命令處,如dG將從當產膽行刪除至檔案的末尾^h或backspace <wbr>插入時,刪除前面的字元^w <wbr>插入時,刪除前面的字

修改vi文字

每個命令前面的數字表示該命令重複的次數命令 <wbr>替換操作rchar <wbr>用char替換當前字元R <wbr>text <wbr>escape <wbr>用text替換當前字元直到換下Esc鍵stext <wbr>escape <wbr>用text代替當前字元S或cctext <wbr>escape <wbr>用text代替整行cwtext <wbr>escape <wbr>將當前字改為textCtext <wbr>escape <wbr>將當前行餘下的改為textcG <wbr>escape <wbr>修改至檔案的末尾ccursor_cmd <wbr>text <wbr>escape <wbr>從當前位置處到游標命令位置處都改為text

在vi中查詢與替換命令 <wbr>查詢與替換操作/text <wbr>在檔案中向前查詢text?text <wbr>在檔案中向後查詢textn <wbr>在同一方向重複查詢N <wbr>在相反方向重複查詢

ttext <wbr>在當前行向前查詢text,並將游標定位在text的第一個字元Ttext <wbr>在當前行向後查詢text,並將游標定位在text的第一個字元

:set <wbr>noic <wbr>查詢時對大小寫敏感:s/oldtext/newtext <wbr>用newtext替換oldtext:m,ns/oldtext/newtext <wbr>在m行透過n,用newtext替換oldtext& <wbr>重複最後的:s命令:g/text1/s/text2/text3 <wbr>查詢包含text1的行,用text3替換text2:g/text/command <wbr>在所有包含text的行執行command所表示的命令:v/text/command <wbr>在所有不包含text的行執行command所表示的命令

在vi中複製文字命令 <wbr>複製操作yy <wbr>將當前行的內容放入臨時緩衝區nyy <wbr>將n行的內容放入臨時緩衝區p <wbr>將臨時緩衝區中的文字放入游標後P <wbr>將臨時緩衝區中的文字放入游標前“(a-z)nyy <wbr>複製n行放入名字為圓括號內的可命名緩衝區,省略n表示當前行“(a-z)ndd <wbr>刪除n行放入名字為圓括號內的可命名緩衝區,省略n表示當前行“(a-z)p <wbr>將名字為圓括號的可命名緩衝區的內容放入當前行後“(a-z)P <wbr>將名字為圓括號的可命名緩衝區的內容放入當前行前

vi中撤消與重複

命令 <wbr>撤消操作u <wbr>撤消最後一次修改U <wbr>撤消當前行的所有修改. <wbr>重複最後一次修改, <wbr>以相反的方向重複前面的f、F、t或T查詢命令; <wbr>重複前面的f、F、t或T查詢命令“np <wbr>取回最後第n次的刪除(緩衝區中存有一定次數的刪除內容,一般為9)n <wbr>重複前面的/或?查詢命令N <wbr>以相反方向重複前面的/或?命令

儲存文字和退出vi命令 <wbr>儲存和/或退出操作:w <wbr>儲存檔案但不退出vi:w <wbr>file <wbr>將修改儲存在file中但不退出vi:wq或ZZ或:x <wbr>儲存檔案並退出vi:q! <wbr>不儲存檔案,退出vi:e! <wbr>放棄所有修改,從上次儲存檔案開始再編輯

vi中的選項選項 <wbr>作用:set <wbr>all <wbr>列印所有選項:set <wbr>nooption <wbr>關閉option選項:set <wbr>nu <wbr>每行前列印行號:set <wbr>showmode <wbr>顯示是輸入模式還是替換模式:set <wbr>noic <wbr>查詢時忽略大小寫:set <wbr>list <wbr>顯示製表符(^I)和行尾符號:set <wbr>ts=8 <wbr>為文字輸入設定tab <wbr>stops:set <wbr>window=n <wbr>設定文字視窗顯示n行

vi的狀態選項 <wbr>作用:.= <wbr>列印當前行的行號:= <wbr>列印檔案中的行數^g <wbr>顯示檔名、當前的行號、檔案的總行數和檔案位置的百分比:l <wbr>使用字母”l”來顯示許多的特殊字元,如製表符和換行符

文字中定位段落和放置標記

選項 <wbr>作用{ <wbr>在第一列插入{來定義一個段落[[ <wbr>回到段落的開頭處]] <wbr>向前移到下一個段落的開頭處m(a-z) <wbr>用一個字母來標記當前位置,如用mz表示標記z‘(a-z) <wbr>將游標移動到指定的標記,如用’z表示移動到z

在vi中連線行選項 <wbr>作用J <wbr>將下一行連線到當前行的末尾nJ <wbr>連線後面n行游標放置與螢幕調整選項 <wbr>作用H <wbr>將游標移動到螢幕的頂行nH <wbr>將游標移動到螢幕頂行下的第n行M <wbr>將游標移動到螢幕的中間L <wbr>將游標移動到螢幕的底行nL <wbr>將游標移動到螢幕底行上的第n行^e(ctrl+e) <wbr>將螢幕上滾一行^y <wbr>將螢幕下滾一行^u <wbr>將螢幕上滾半頁^d <wbr>將螢幕下滾半頁^b <wbr>將螢幕上滾一頁^f <wbr>將螢幕下滾一頁^l <wbr>重繪螢幕z-return <wbr>將當前行置為螢幕的頂行nz-return <wbr>將當前行下的第n行置為螢幕的頂行z. <wbr>將當前行置為螢幕的中央nz. <wbr>將當前行上的第n行置為螢幕的中央z- <wbr>將當前行置為螢幕的底行nz- <wbr>將當前行上的第n行置為螢幕的底行

vi中的shell轉義命令

選項 <wbr>作用

:!command <wbr>執行shell的command命令,如:!ls

:!! <wbr>執行前一個shell命令

:r!command <wbr>讀取command命令的輸入並插入,如:r!ls會先執行ls,然後讀入內容

:w!command <wbr>將當前已編輯檔案作為command命令的標準輸入並執行command命令,如:w!grep <wbr>all

:cd <wbr>Directory <wbr>將當前工作目錄更改為directory所表示的目錄

:sh <wbr>將啟動一個子shell,使用^d(ctrl+d)返回vi

:so <wbr>file <wbr>在shell程式file中讀入和執行命令

vi中的宏與縮寫(避免使用控制鍵和符號,不要使用字元K、V、g、q、v、*、=和功能鍵)

選項 <wbr>作用

:map <wbr>key <wbr>command_seq <wbr>定義一個鍵來執行command_seq,如:map <wbr>e <wbr>ea,無論什麼時候都可以e移到一個字的末尾來追加文字:map <wbr>在狀態行顯示所有已定義的宏:umap <wbr>key <wbr>刪除該鍵的宏:ab <wbr>string1 <wbr>string2 <wbr>定義一個縮寫,使得當插入string1時,用string2替換string1。當要插入文字時,鍵入string1然後按Esc鍵,系統就插入了string2:ab <wbr>顯示所有縮寫:una <wbr>string <wbr>取消string的縮寫

在vi中縮排文字

選項 <wbr>作用^i(ctrl+i)或tab <wbr>插入文字時,插入移動的寬度,移動寬度是事先定義好的:set <wbr>ai <wbr>開啟自動縮排:set <wbr>sw=n <wbr>將移動寬度設定為n個字元n<< <wbr>使n行都向左移動一個寬度n>> <wbr>使n行都向右移動一個寬度,例如3>>就將接下來的三行每行都向右移動一個移動寬度

1.編輯模式: <wbr>插入/替換 <wbr>(按INSERT鍵切換)2.[ESC] <wbr>指令模式3.輸入模式 <wbr>將在指令模式下輸入 <wbr>a新增(a,A)a:從游標所在位置後面開始新增資料,游標後的資料隨新增資料向後移動。A:從游標所在列最後面的地方開始新增資料。插入(i,I)i:從游標所在位置前面開始插入資料,游標後的資料隨新增資料向後移動。I:從游標所在列的第一個非空白字元前面開始插入資料。開始(o,O)o:在游標所在列下新增一列並進入輸入模式。O:在游標所在列上方新增一列並進入輸入模式。

4.存檔/退出

[ESC] <wbr>:wq <wbr>//存檔退出

:w! <wbr>//存檔繼續

:q <wbr>//退出 <wbr>(原始檔未被編輯過可用)

:q! <wbr>//強制退出

5.刪除與改修

[ESC] <wbr>x <wbr>//刪除游標所在字元dd <wbr>//刪除游標所在列。r <wbr>//修改游標所在字元,r後接著要修正的字元。R <wbr>//進入取替換狀態。s <wbr>//刪除游標所在字元,並進入輸入模式。S <wbr>//刪除游標所在的列,並進入輸入模式。

6.恢復[ESC] <wbr>u <wbr>//可以恢復被刪除的文字。U <wbr>//可以恢復游標所在列的所有改變。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26274656/viewspace-1055000/,如需轉載,請註明出處,否則將追究法律責任。