vi經常使用命令整理 ★命令模式 移動光標 h 或 向左方向鍵(←) → 光標向左移動一個字元 j 或 向下方向鍵(↓) → 光標向下移動一個字元 k 或 向上方向鍵(↑) → 光標向上移動一個字元 l 或 向右方向鍵(→) → 光標向右移動一個字元 [Ctrl] + [f] → 屏幕『向下』移動一頁,至關於 [Page Down]按鍵 [Ctrl] + [ b ] → 屏幕『向上』移動一頁,至關於 [Page Up] 按鍵 n<space> → n 表示『數字』。按下數字後再按空白鍵,光標會向右移動這一行的 n 個字元 0 → 數字『 0 』:移動到這一行的最前面字元處 $ → 移動到這一行的最後面字元處 G → 移動到這個文件的最後一行 nG → n 爲數字。移動到這個文件的第 n 行(可配合 :set nu) gg → 移動到這個文件的第一行,至關於 1G n<Enter> → n 爲數字。光標向下移動 n 行 查找與替換 /word → 向光標之下查找一個名稱爲 word 的字符串。如想查找 eric4ever 字符串,輸入 /eric4ever 便可 ?word → 向光標之上查找一個名稱爲 word 的字符串 n → 『重複前一個查找的動做』 N → 與 n 恰好相反,爲『反向』進行前一個查找動做 :n1,n2s/word1/word2/g → n1 與 n2 均爲數字。在第 n1 與 n2 行之間查找 word1 字符串,並將該字符串替換爲 word2。如:在 1 到 9 行之間查找 eric4ever 並替換爲 ERIC4EVER 則:『:1,9s/eric4ever/ERIC4EVER/g』 :1,$s/word1/word2/g → 從第一行到最後一行查找 word1 字符串,並將該字符串替換爲 word2 :1,$s/word1/word2/gc → 從第一行到最後一行查找 word1 字符串,並將該字符窗替換爲 word2,替換前顯示提示對話框是否確認替換 刪除、複製與粘貼 x, X → 在一行字當中,x 爲向後刪除一個字元 (至關於 [del] 按鍵), X 爲向前刪除一個字元(至關於 [backspace] 按鍵) dd → 刪除光標所在的那一整列 ndd → n 爲數字。刪除光標所在的向下 n 列 yy → 複製光標所在的那一行 nyy → n 爲數字。複製光標所在的向下 n 列 p, P → p 爲將已複製的內容粘貼在光標下一行上,P 則爲粘貼在光標的上一行 u → 還原前一個動做 [Ctrl]+r → 重作上一個動做 . → 小數點,意思是重複前一個動做 ★編輯模式 i, I → 插入:在目前的光標所在處插入輸入的文字,已存在的文字會向後退; 其中, i 爲『從目前光標所在處插入』, I 爲『在目前所在行的第一個非空白字元處開始插入』 a, A → a 爲『從目前光標所在的下一個字元處開始插入』, A 爲『從光標所在行的最後一個字元處開始插入』 o, O → o 爲『在目前光標所在的下一行處插入新的一行』, O 爲『在目前光標所在處的上一行插入新的一行』 r, R → r 爲『取代光標所在的那一個字元』, R 爲『一直取代光標所在的文字,直到按下 ESC 爲止』 Esc → 退出編輯模式,回到通常模式中 ★末行指令模式 :w → 將編輯的文件寫入到硬盤上 :q → 退出 vi :wq → 保存後退出,若爲 :wq! 則爲強制保存爲退出 :set nu → 顯示行號 :set nonu → 取消顯示行號 補充 光標控制命令 命令 光標移動 h或^h 向左移一個字符 j或^j或^n 向下移一行 k或^p 向上移一行 l或空格 向右移一個字符 G 移到文件的最後一行 nG 移到文件的第n行 w 移到下一個字的開頭 W 移到下一個字的開頭,忽略標點符號 b 移到前一個字的開頭 B 移到前一個字的開頭,忽略標點符號 L 移到屏幕的最後一行 M 移到屏幕的中間一行 H 移到屏幕的第一行 e 移到下一個字的結尾 E 移到下一個字的結尾,忽略標點符號 ( 移到句子的開頭 ) 移到句子的結尾 { 移到段落的開頭 } 移到下一個段落的開頭 0或| 移到當前行的第一列 n| 移到當前行的第n列 ^ 移到當前行的第一個非空字符 $ 移到當前行的最後一個字符 +或return 移到下一行的第一個字符 - 移到前一行的第一個非空字符 在vi中添加文本 命令 插入動做 a 在光標後插入文本 A 在當前行插入文本 i 在光標前插入文本 I 在當前行前插入文本 o 在當前行的下邊插入新行 O 在當前行的上邊插入新行 :r file 讀入文件file內容,並插在當前行後 :nr file 讀入文件file內容,並插在第n行後 escape 回到命令模式 ^v char 插入時忽略char的指定意義,這是爲了插入特殊字符 在vi中刪除文本
命令 刪除操做 x 刪除光標處的字符,能夠在x前加上須要刪除的字符數目 nx 從當前光標處日後刪除n個字符 X 刪除光標前的字符,能夠在X前加上須要刪除的字符數目 nX 從當前光標處往前刪除n個字符 dw 刪至下一個字的開頭 ndw 從當前光標處日後刪除n個字 dG 刪除行,直到文件結束 dd 刪除整行 ndd 從當前行開始日後刪除 db 刪除光標前面的字 ndb 從當前行開始往前刪除n字 :n,md 從第m行開始往前刪除n行 d或d$ 從光標處刪除到行尾 dcursor_command 刪除至光標命令處,如dG將從當產膽行刪除至文件的末尾 ^h或backspace 插入時,刪除前面的字符 ^w 插入時,刪除前面的字 修改vi文本 每一個命令前面的數字表示該命令重複的次數 命令 替換操做 rchar 用char替換當前字符 R text escape 用text替換當前字符直到換下Esc鍵 stext escape 用text代替當前字符 S或cctext escape 用text代替整行 cwtext escape 將當前字改成text Ctext escape 將當前行餘下的改成text cG escape 修改至文件的末尾 ccursor_cmd text escape 從當前位置處到光標命令位置處都改成text 在vi中查找與替換 命令 查找與替換操做 /text 在文件中向前查找text ?text 在文件中向後查找text n 在同一方向重複查找 N 在相反方向重複查找 ftext 在當前行向前查找text Ftext 在當前行向後查找text ttext 在當前行向前查找text,並將光標定位在text的第一個字符 Ttext 在當前行向後查找text,並將光標定位在text的第一個字符 :set ic 查找時忽略大小寫 :set noic 查找時對大小寫敏感 :s/oldtext/newtext 用newtext替換oldtext :m,ns/oldtext/newtext 在m行經過n,用newtext替換oldtext & 重複最後的:s命令 :g/text1/s/text2/text3 查找包含text1的行,用text3替換text2 :g/text/command 在全部包含text的行運行command所表示的命令 :v/text/command 在全部不包含text的行運行command所表示的命令 在vi中複製文本 命令 複製操做 yy 將當前行的內容放入臨時緩衝區 nyy 將n行的內容放入臨時緩衝區 p 將臨時緩衝區中的文本放入光標後 P 將臨時緩衝區中的文本放入光標前 "(a-z)nyy 複製n行放入名字爲圓括號內的可命名緩衝區,省略n表示當前行 "(a-z)ndd 刪除n行放入名字爲圓括號內的可命名緩衝區,省略n表示當前行 "(a-z)p 將名字爲圓括號的可命名緩衝區的內容放入當前行後 "(a-z)P 將名字爲圓括號的可命名緩衝區的內容放入當前行前 在vi中撤消與重複 命令 撤消操做 u 撤消最後一次修改 U 撤消當前行的全部修改 . 重複最後一次修改 , 以相反的方向重複前面的f、F、t或T查找命令 ; 重複前面的f、F、t或T查找命令 "np 取回最後第n次的刪除(緩衝區中存有必定次數的刪除內容,通常爲9) n 重複前面的/或?查找命令 N 以相反方向重複前面的/或?命令 保存文本和退出vi 命令 保存和/或退出操做 :w 保存文件但不退出vi :w file 將修改保存在file中但不退出vi :wq或ZZ或:x 保存文件並退出vi :q! 不保存文件,退出vi :e! 放棄全部修改,從上次保存文件開始再編輯 vi中的選項 選項 做用 :set all 打印全部選項 :set nooption 關閉option選項 :set nu 每行前打印行號 :set showmode 顯示是輸入模式仍是替換模式 :set noic 查找時忽略大小寫 :set list 顯示製表符(^I)和行尾符號 :set ts=8 爲文本輸入設置tab stops :set window=n 設置文本窗口顯示n行 vi的狀態 選項 做用 :.= 打印當前行的行號 := 打印文件中的行數 ^g 顯示文件名、當前的行號、文件的總行數和文件位置的百分比 :l 使用字母"l"來顯示許多的特殊字符,如製表符和換行符 在文本中定位段落和放置標記 選項 做用 { 在第一列插入{來定義一個段落 [[ 回到段落的開頭處 ]] 向前移到下一個段落的開頭處 m(a-z) 用一個字母來標記當前位置,如用mz表示標記z '(a-z) 將光標移動到指定的標記,如用'z表示移動到z 在vi中鏈接行 選項 做用 J 將下一行鏈接到當前行的末尾 nJ 鏈接後面n行 光標放置與屏幕調整 選項 做用 H 將光標移動到屏幕的頂行 nH 將光標移動到屏幕頂行下的第n行 M 將光標移動到屏幕的中間 L 將光標移動到屏幕的底行 nL 將光標移動到屏幕底行上的第n行 ^e(ctrl+e) 將屏幕上滾一行 ^y 將屏幕下滾一行 ^u 將屏幕上滾半頁 ^d 將屏幕下滾半頁 ^b 將屏幕上滾一頁 ^f 將屏幕下滾一頁 ^l 重繪屏幕 z-return 將當前行置爲屏幕的頂行 nz-return 將當前行下的第n行置爲屏幕的頂行 z. 將當前行置爲屏幕的中央 nz. 將當前行上的第n行置爲屏幕的中央 z- 將當前行置爲屏幕的底行 nz- 將當前行上的第n行置爲屏幕的底行 vi中的shell轉義命令 選項 做用 :!command 執行shell的command命令,如:!ls :!! 執行前一個shell命令 :r!command 讀取command命令的輸入並插入,如:r!ls會先執行ls,而後讀入內容 :w!command 將當前已編輯文件做爲command命令的標準輸入並執行command命令,如:w!grep all :cd directory 將當前工做目錄更改成directory所表示的目錄 :sh 將啓動一個子shell,使用^d(ctrl+d)返回vi :so file 在shell程序file中讀入和執行命令 vi中的宏與縮寫 (避免使用控制鍵和符號,不要使用字符K、V、g、q、v、*、=和功能鍵) 選項 做用 :map key command_seq 定義一個鍵來運行command_seq,如:map e ea,不管何時均可以e移到一個字的末尾來追加文本 :map 在狀態行顯示全部已定義的宏 :umap key 刪除該鍵的宏 :ab string1 string2 定義一個縮寫,使得當插入string1時,用string2替換string1。當要插入文本時,鍵入string1而後按Esc鍵,系統就插入了string2 :ab 顯示全部縮寫 :una string 取消string的縮寫 在vi中縮進文本 選項 做用 ^i(ctrl+i)或tab 插入文本時,插入移動的寬度,移動寬度是事先定義好的 :set ai 打開自動縮進 :set sw=n 將移動寬度設置爲n個字符 n<< 使n行都向左移動一個寬度 n>> 使n行都向右移動一個寬度,例如3>>就將接下來的三行每行都向右移動一個移動寬度 1.編輯模式: 插入/替換 (按INSERT鍵切換) 2.[ESC] 指令模式 3.輸入模式 將在指令模式下輸入 a 新增(a,A) a:從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。 A:從光標所在列最後面的地方開始新增資料。 插入(i,I) i:從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。 I:從光標所在列的第一個非空白字元前面開始插入資料。 開始(o,O) o:在光標所在列下新增一列並進入輸入模式。 O:在光標所在列上方新增一列並進入輸入模式。 4.存盤/退出 [ESC] :wq //存盤退出 :w! //存盤繼續 :q //退出 (源文件未被編輯過可用) :q! //強制退出 5.刪除與改修 [ESC] x //刪除光標所在字符 dd //刪除光標所在列。 r //修改光標所在字元,r後接着要修正的字符。 R //進入取替換狀態。 s //刪除光標所在字元,並進入輸入模式。 S //刪除光標所在的列,並進入輸入模式。 6.恢復 [ESC] u //能夠恢復被刪除的文字。 U //能夠恢復光標所在列的全部改變。
vi的複製、粘貼、查找、刪除等經常使用命令 vi編輯器有3種模式:命令模式、輸入模式、末行模式。掌握這三種模式十分重要。
•命令模式:vi啓動後默認進入的是命令模式,從這個模式使用命令能夠切換到另外兩種模式,同時不管在任何模式下只要按一下[Esc]鍵均可以返回命令模式。在命令模式中輸入字幕「i」就能夠進入vi的輸入模式編輯文件。 •輸入模式:在這個模式中咱們能夠編輯、修改、輸入等編輯工做,在編輯器最後一行顯示一個「--INSERT--」標誌着vi進入了輸入模式。當咱們完成修改輸入等操做的時候咱們須要保存文件,這時咱們須要先返回命令模式,在進入末行模式保存。 •末行模式:在命令模式輸入「:」便可進入該模式,在末行模式中有好多好用的命令。 命令模式下的操做 1. 複製 yy命令複製當前整行的內容到vi緩衝區; yw複製當前光標所在位置到單詞尾字符的內容到vi緩存區,至關於複製一個單詞; y$複製光標所在位置到行尾內容到緩存區; y^複製光標所在位置到行首內容到緩存區; #yy例如:5yy就是複製5行; #yw例如:2yw就是複製兩個單詞; 若是要複製第m行到第n行之間的內容,能夠在末行模式中輸入m,ny例如:3,5y複製第三行到第五行內容到緩存區; 2. 粘貼 粘貼緩衝區中的內容,用p; 3. 刪除 x刪除光標處的單個字符; dd刪除光標所在行; dw刪除當前字符到單詞尾包括空格的全部字符; #x例如3x刪除光標處向右的三個字符; #dd例如3dd從當前行開始向下刪除三行文本; 4. 撤銷 u命令取消最近一次的操做,可使用屢次來恢復原有的操做; U取消全部操做; Ctrl+R能夠恢復對使用u命令的操做; 5.切換到輸入模式的命令 ◦ 新增 (append) a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。 A: 從光標所在列最後面的地方開始新增資料。 ◦ 插入 (insert) i: 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。 I :從光標所在列的第一個非空白字元前面開始插入資料。 ◦ 開始 (open) o :在光標所在列下新增一列並進入輸入模式。 O: 在光標所在列上方新增一列並進入輸入模式。 ◦Esc退出命令; 末行模式下的操做 1. 至上而下的查找 / 要查找的字符竄,其中/表明從光標所在位置起開始查找,例如:/ work; 2. 至下而上的查找 ?要查找的字符竄 例如:/ work; 3. 替換 :s/old/new用new替換行中首次出現的old; : s/old/new/g 用new替換行中全部出現的old; :#,# s/old/new/g用new替換從第#行到第#行中出現的old; :% s/old/new/g用new替換整篇中出現的old; 4. 若是替換的範圍較大時,在全部的命令尾加一個c命令,強制每一個替換須要用戶進行確認,例如:s/old/new/c 或s/old/new/gc;
linux vi命令詳解及使用技巧集錦 2009-11-3 做者: 編輯:閆蕊 點擊進入論壇 關鍵詞:linux vi 進入vi的命令 vi filename :打開或新建文檔,並將光標置於第一行首 vi +n filename :打開文檔,並將光標置於第n行首 vi + filename :打開文檔,並將光標置於最後一行首 vi +/pattern filename:打開文檔,並將光標置於第一個和pattern匹配的串處 vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename vi filename....filename :打開多個文檔,依次編輯 移動光標類命令 h :光標左移一個字符 l :光標右移一個字符 space:光標右移一個字符 Backspace:光標左移一個字符 k或Ctrl+p:光標上移一行 j或Ctrl+n :光標下移一行 Enter :光標下移一行 w或W :光標右移一個字至字首 b或B :光標左移一個字至字首 e或E :光標右移一個字j至字尾 ) :光標移至句尾 ( :光標移至句首 }:光標移至段落開頭 {:光標移至段落結尾 nG:光標移至第n行首 n+:光標下移n行 n-:光標上移n行 n$:光標移至第n行尾 H :光標移至屏幕頂行 M :光標移至屏幕中間行 L :光標移至屏幕最後行 0:(注意是數字零)光標移至當前行首 $:光標移至當前行尾 屏幕翻滾類命令 Ctrl+u:向文檔首翻半屏 Ctrl+d:向文檔尾翻半屏 Ctrl+f:向文檔尾翻一屏 Ctrl+b;向文檔首翻一屏 nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。 插入文本類命令 i :在光標前 I :在當前行首 a:光標後 A:在當前行尾 o:在當前行之下新開一行 O:在當前行之上新開一行 r:替換當前字符 R:替換當前字符及其後的字符,直至按ESC鍵 s:從當前光標位置處開始,以輸入的文本替代指定數目的字符 S:刪除指定數目的行,並以所輸入文本代替之 ncw或nCW:修改指定數目的字 nCC:修改指定數目的行 刪除命令 ndw或ndW:刪除光標處開始及其後的n-1個字 do:刪至行首 d$:刪至行尾 ndd:刪除當前行及其後n-1行 x或X:刪除一個字符,x刪除光標後的,而X刪除光標前的 Ctrl+u:刪除輸入方式下所輸入的文本 搜索及替換命令 : /pattern:從光標開始處向文檔尾搜索pattern ?pattern:從光標開始處向文檔首搜索pattern n:在同一方向重複上一次搜索命令 N:在反方向上重複上一次搜索命令 :s/p1/p2/g:將當前行中任何p1均用p2替代 :n1,n2s/p1/p2/g:將第n1至n2行中任何p1均用p2替代 :g/p1/s//p2/g:將文檔中任何p1均用p2替換 選項配置 all:列出任何選項配置狀況 term:配置終端類型 ignorance:在搜索中忽略大小寫 list:顯示製表位(Ctrl+I)和行尾標誌($) number:顯示行號 report:顯示由面向行的命令修改過的數目 terse:顯示簡短的警告信息 warn:在轉到別的文檔時若沒保存當前文檔則顯示NO write信息 nomagic:容許在搜索模式中,使用前面不帶「\」的特別字符 nowrapscan:禁止vi在搜索到達文檔兩端時,又從另外一端開始 mesg:容許vi顯示其餘用戶用write寫到本身終端上的信息 最後行方式命令 :n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下 :n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下 :n1,n2 d :將n1行到n2行之間的內容刪除 :w :保存當前文檔 :e filename:打開文檔filename進行編輯 :x:保存當前文檔並退出 :q:退出vi :q!:不保存文檔並退出vi :!command:執行shell命令command :n1,n2 w!command:將文檔中n1行至n2行的內容做爲command的輸入並執行之,若不指 定n1,n2,則表示將整個文檔內容做爲command的輸入 :r!command:將命令command的輸出結果放到當前行 。
linux > 正文 vim 命令 Nov132011 做者:逝去日子 發佈:2011-11-13 19:38 分類:linux 閱讀:90 views 暫無評論 Vim是從vi發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。和Emacs並列成爲類Unix系統用戶最喜歡的編輯器。我把我收集來的一些命令分享下。 1. vim #在命令行中輸入vim,進入vim編輯器 2. i #按一下i鍵,下端顯示 –INSERT– #插入命令,在vim中可能任意字符都有做用 3. Esc #退出i(插入)命令進行其它命令使用 4. :r filename #讀入一個文件內容,並寫入到當前編輯器中 5. :w newfilename #將該編輯器中的內容寫入到一個新文件中 6. :w #在編輯的過程當中保存文件,至關於word中的ctrl+s 7. :! command 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如 :!ls #在編輯過程當中執行shell命令ls 8. :sh #進入shell命令行,執行完命令後ctrl+d退出從新進入vim編輯繼續編輯 在shell命令下,執行ctral+l完成清屏 9. :wq #保存文件並退出 10. ZZ #保存文件並退出,同上一個命令,注意大寫 11. :q! #強制退出,不保存 12. :set number或者:set nu #使編輯中的文件顯示行號 13. :set nonumber或者:set nonu #與上一條命令相反,不顯示行號 14. :help i #查看插入命令幫助 15. u #撤消上一步操做 16. /Fedora #查找Fedora字符 17. :s /Fedora/Redhat #將Fedora字符替換爲Redhat(只替換在光標所在的行) 18. dw #刪除單詞 dd #刪除行 19. o #打開空白一行 20. vim + filename #進行文件最後一行進行編輯 21. vim +n filename #進入文件第n行進行編輯 22. :1,.s/redhat/fedora #.號表示當前行,即光標所在行 #將第1行到當前行(.)第一次出現的redhat字符代替爲fedora 23. :1,.s/redhat/fedora/g #將第1行到當前行(.)全部出現的redhat字符代替爲fedora,g 全局標誌 24. :1,$s/redhat/fedora/g #$表示最後一行 #將第1行到最後一行全部出現的redhat字符代替爲fedora 25. :%s/redhat/fedora/g #同上一個命令 26. :%s//fedora/g #將第1行到最後一行全部出現的redhat字代替爲fedora #字,而不是字符 27. :f #顯示文件內容,狀態等等 #同ctrl+g命令 28. :e! #當前文件,返回到上次保存 :e file #切換編輯文件 29. :n #當編輯時有多個文件(好比vim file1 file2)時切換到下一個文件,與:e file 結合使用 VIM命令大全 光標控制命令 命令 光標移動 h 向左移一個字符 j 向下移一行 k 向上移一行 l 向右移一個字符 G 移到文件的最後一行 w 移到下一個字的開頭 W 移到下一個字的開頭,忽略標點符號 b 移到前一個字的開頭 B 移到前一個字的開頭,忽略標點符號 L 移到屏幕的最後一行 M 移到屏幕的中間一行 H 移到屏幕的第一行 e 移到下一個字的結尾 E 移到下一個字的結尾,忽略標點符號 ( 移到句子的開頭 ) 移到句子的結尾 { 移到段落的開頭 } 移到下一個段落的開頭 0(數字), | 移到當前行的第一列 ^ 移到當前行的第一個非空字符 $ 移到當前行的最後一個字符 +, Enter 移到下一行的第一個字符 - 移到前一行的第一個非空字符 在 vi 中添加文本 命令 插入動做 a 在光標後插入文本 A 在當前行插入文本 i 在光標前插入文本 I 在當前行前插入文本 o 在當前行的下邊插入新行 O 在當前行的上邊插入新行 s 刪除光標所在處字符,並進入插入模式 S 刪除光標所在的行,並進入插入模式 :r file 讀入文件 file 內容,並插在當前行後 :nr file 讀入文件 file 內容,並插在第 n 行後 Esc 回到命令模式 ^v char 插入時忽略 char 的指定意義,這是爲了插入特殊字符 在 vi 中刪除文本 命令 刪除操做 x 刪除光標處的字符 dw 刪至下一個字的開頭 dG 刪除行,直到文件結束 dd 刪除整行 db 刪除光標前面的字 :n,md 從第 m 行開始往前刪除 n 行 d, d$ 從光標處刪除到行尾 ^h, backspace 插入時,刪除前面的字符 ^w 插入時,刪除前面的字 修改 vi 文本 每一個命令前面的數字表示該命令重複的次數 命令 替換操做 rchar 用 char 替換當前字符 R text escape 用 text 替換當前字符直到按下 Esc 鍵 stext escape 用 text 代替當前字符 S 或 cctext escape 用 text 代替整行 cwtext escape 將當前字改成 text Ctext escape 將當前行餘下的改成 text cG escape 修改至文件的末尾 ccursor_cmd text escape 從當前位置處到光標命令位置處都改成 text 在 vi 中查找與替換 命令 查找與替換操做 /text 在文件中向前查找 text ?text 在文件中向後查找 text n 在同一方向重複查找 N 在相反方向重複查找 ftext 在當前行向前查找 text Ftext 在當前行向後查找 text ttext 在當前行向前查找 text,並將光標定位在 text 的第一個字符 Ttext 在當前行向後查找 text,並將光標定位在 text 的第一個字符 :set ic 查找時忽略大小寫 :set noic 查找時對大小寫敏感 :ranges/pat1/pat2/g 用 newtext 替換 oldtext :m,ns/oldtext/newtext 在 m 行經過 n,用 newtext 替換 oldtext & 重複最後的 :s 命令 :g/text1/s/text2/text3 查找包含 text1 的行,用 text3 替換 text2 :g/text/command 在全部包含 text 的行運行 command 所表示的命令 :v/text/command 在全部不包含 text 的行運行 command 所表示的命令 在 vi 中複製文本 命令 複製操做 yy 將當前行的內容放入臨時緩衝區 nyy 將 n 行的內容放入臨時緩衝區 p 將臨時緩衝區中的文本放入光標後 P 將臨時緩衝區中的文本放入光標前 「(a-z)nyy 複製 n 行放入名字爲圓括號內的可命名緩衝區,省略 n 表示當前行 「(a-z)ndd 刪除 n 行放入名字爲圓括號內的可命名緩衝區,省略 n 表示當前行 「(a-z)p 將名字爲圓括號的可命名緩衝區的內容放入當前行後 「(a-z)P 將名字爲圓括號的可命名緩衝區的內容放入當前行前 在 vi 中撤消與重複 命令 撤消操做 u 撤消最後一次修改 U 撤消當前行的全部修改 . 重複最後一次修改 , 以相反的方向重複前面的 f、F、t 或 T 查找命令 ; 重複前面的 f、F、t 或 T 查找命令 「np 取回最後第 n 次的刪除(緩衝區中存有必定次數的刪除內容,通常爲 9) n 重複前面的 / 或 ? 查找命令 N 以相反方向重複前面的 / 或 ? 命令 保存文本和退出 vi 命令 保存和/或退出操做 :w 保存文件但不退出 vi :w file 將修改保存在 file 中但不退出 vi :wq 或 ZZ 或 保存文件並退出 vi :q! 不保存文件,退出 vi :e! 放棄全部修改,從上次保存文件開始再編輯 vi 中的選項 選項 做用 :set all 打印全部選項 :set nooption 關閉 option 選項 :set nu 每行前打印行號 :set showmode 顯示是輸入模式仍是替換模式 :set autoindent 繼承前一行的縮進方式,特別適用於多行註釋 :set smartindent 爲C程序提供自動縮進 :set list 顯示製表符(^I)和行尾符號 :set ts=8 爲文本輸入設置 tab stops :set window=n 設置文本窗口顯示 n 行 :set number 顯示行數 :set nonumber 取消顯示行數 vi 的狀態 選項 做用 :.= 打印當前行的行號 := 打印文件中的行數 ctrl+g 顯示文件名、當前的行號、文件的總行數和文件位置的百分比 :l 使用字母 「l」 來顯示許多的特殊字符,如製表符和換行符 在文本中定位段落和放置標記 選項 做用 { 在第一列插入 { 來定義一個段落 [[ 回到段落的開頭處 ]] 向前移到下一個段落的開頭處 m(a-z) 用一個字母來標記當前位置,如用 mz 表示標記 z ‘(a-z) 將光標移動到指定的標記,如用 ‘z 表示移動到 z 在 vi 中鏈接行 選項 做用 J 將下一行鏈接到當前行的末尾 nJ 鏈接後面 n 行 光標放置與屏幕調整 選項 做用 H 將光標移動到屏幕的頂行 nH 將光標移動到屏幕頂行下的第 n 行 M 將光標移動到屏幕的中間 L 將光標移動到屏幕的底行 nL 將光標移動到屏幕底行上的第 n 行 ^e(ctrl+e) 將屏幕上滾一行 ctrl+y 將屏幕下滾一行 ctrl+u 將屏幕上滾半頁 ctrl+d 將屏幕下滾半頁 ctrl+b 將屏幕上滾一頁 ctrl+f 將屏幕下滾一頁 ctrl+l 重繪屏幕 z-return 將當前行置爲屏幕的頂行 nz-return 將當前行下的第 n 行置爲屏幕的頂行 z. 將當前行置爲屏幕的中央 nz. 將當前行上的第 n 行置爲屏幕的中央 z- 將當前行置爲屏幕的底行 nz- 將當前行上的第 n 行置爲屏幕的底行 vi 中的 shell 轉義命令 選項 做用 :!command 執行 shell 的 command 命令,如 :!ls :!! 執行前一個 shell 命令 :r!command 讀取 command 命令的輸入並插入,如 :r!ls 會先執行 ls,而後讀入內容 :w!command 將當前已編輯文件做爲 command 命令的標準輸入並執行 command 命令,如 :w!grep all :cd directory 將當前工做目錄更改成 directory 所表示的目錄 :sh 將啓動一個子 shell,使用 ^d(ctrl+d) 返回 vi :so file 在 shell 程序 file 中讀入和執行命令 vi 中的宏與縮寫 (避免使用控制鍵和符號,不要使用字符 K、V、g、q、v、*、= 和功能鍵) 選項 做用 :map key command_seq 定義一個鍵來運行 command_seq,如 :map e ea,不管何時均可以 e 移到一個字的末尾來追加文本 :map 在狀態行顯示全部已定義的宏 :umap key 刪除該鍵的宏 :ab string1 string2 定義一個縮寫,使得當插入 string1 時,用 string2 替換 string1。當要插入文本時,鍵入 string1 而後按 Esc 鍵,系統就插入了 string2 :ab 顯示全部縮寫 :una string 取消 string 的縮寫 在 vi 中縮進文本 選項 做用 ctrl+i或 tab 插入文本時,插入移動的寬度,移動寬度是事先定義好的 :set ai 打開自動縮進 :set sw=n 將移動寬度設置爲 n 個字符 n> 使 n 行都向右移動一個寬度,例如 3>> 就將接下來的三行每行都向右移動一個移動寬度
於電腦的技術與藝術 vi 經常使用命令行 暫時不完善,不斷更新和整理中.... 1.vi 模式 a) 通常模式:vi處理文件時,一進入該文件,就是通常模式了. b) 編輯模式:在通常模式下能夠進行刪除,複製,粘貼等操做,卻沒法進行編輯操做。等按下‘i,I,o,O,a,A,r,R’等 字母以後才能進入編輯模式.一般在linux中,按下上述字母時,左下方會出現'INSERT'或者‘REPLACE’字樣,才能夠 輸入任何文字到文件中.要回到通常模式,按下[ESC]鍵便可. c) 命令行模式:在通常模式中,輸入「: 或者/或者?」,便可將光標移動到最下面一行,在該模式下,您能夠搜索數據,並且讀取, 存盤,大量刪除字符,離開vi,顯示行號等操做. 2.vi 經常使用命令彙總: 2.1 通常模式 a) 移動光標: 上下左右方向鍵 ↑(k)↓(j)←(h) →(l) 翻頁 pagedown / pageup 按鍵 數字 0 : 將光標移動到當前行首 $ : 將光標移動到當前行尾 G : 移動到這個文件的最後一行 nG : n爲數字,移動到這個文件的第n行. gg : 移動到這個文件的第一行至關於1G b) 搜索與替換 /word : 從光標開始,向下查詢一個名爲word的字符串。 :n一、n2s/word1/word2/g : n1 與n2 爲數字.在第n1與n2行之間尋找word1這個字符串, 並將該字符串替換爲word2。 :一、$s/word1/word2/g : 從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2 :一、$s/word1/word2/gc: 從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2。 而且在替換以前顯示提示符給用戶確認(conform)是否須要替換。 c) 刪除,複製,粘貼 x,X : 在一行中,x爲向後刪除一個字符(至關於del鍵),X爲向前刪除一個字符(至關於backspace鍵)。 dd : 刪除光標所在的那一整行。 ndd : n 爲數字。從光標開始,刪除向下n列。 yy : 複製光標所在的那一行。 nyy : n爲數字。複製光標所在的向下n行。 p,P : p 爲將已複製的數據粘貼到光標的下一行,P則爲貼在光標的上一行。 u : 復原前一個操做 CTRL + r : 重作上一個操做。 小數點'.': 重複前一個動做。 2.2 編輯模式: i, I : 在光標所在處插入輸入文字,已存在的文字向後退。i 爲‘從當前光標所在處插入’,I 爲‘在當前所在行的一個非空格符處開始插入’。 a, A : a 爲‘從當前光標所在處的下一個字符開始插入’。A 爲‘從光標所在行的最後一個字符處開始插入’。 o,O : 這是英文o的大小寫。o爲‘在當前光標所在行的下一行處插入新的一行’。O表示‘在當前光標所在行的上一行插入新的一行’。 r,R : 替換:r 會替換光標所在的那一個字符。 R : 會一直替換光標所在的字符,直到按下esc 鍵爲止。 ESC : 進入通常模式。 2.3 命令模式: a) :w : 將編輯的數據寫入硬盤 b) :q : 離開vi c) :q! : 強制離開,不存儲 d) :wq : 存儲後離開 e) :wq! : 強制存儲後離開 3. vim 附加命令行 3.1 塊選擇(visual block) v 字符選擇,將光標通過的地方反白顯示 V 行選擇,會將光標通過的行反白選擇 ctrl + v 塊選擇,能夠用長方形的方式選擇數據 y 複製反白的地方 d 將反白的地方刪除掉 3.2 多文件編輯 :n 編輯下一個文件 :N 編輯上一個文件 :files 列出當前vim 打開的全部文件 3.3 多窗口功能 :sp 【filename】打開一個新窗口,若是加filename,表示在新窗口打開一個新文件不然表示兩個窗口爲同一個文件內容 ctrl+wj 先按下ctrl ,再按下w後,放開全部按鍵,而後按下j,則光標可移動到下方的窗口 ctrl+wk 同上,不過光標移動到上面的窗口 ctrl+wq 其實就是:q結束離開。