vi的使用

Vi的3種運行模式

  1. 普通(normal)模式,又稱命令模式

  2. 插入(insert)模式

  3. 命令行(cmdline)模式

進入Vi後首先進入的是普通模式,Vi等待編輯命令輸入,也就是此時輸入的字母都將被作爲命令來解釋。
在普通模式下,輸入插入命令i、附加命令a、打開命令o等進入插入模式,在插入模式下用戶輸入的任何字符都被Vi當作文件內容保存起來,並顯示在屏幕。在文本輸入過程中,按Esc鍵返回普通模式。
在普通模式下,執行Ex命令使用:,查找使用?和/,調用Shell命令使用!。末行命令執行完後,Vi自動返回普通模式。

一、普通模式下的操作
進入插入模式

  1. i    光標前插入


  2. I    光標行首插入


  3. a    光標後插入


  4. A    光標行尾插入


  5. o    光標所在行下插入一行,行首插入


  6. O    光標所在行上插入一行,行首插入

  1. 光標定位


  2. G    移至最後一行行首


  3. nG    移至第n行行首


  4. n+    下移n行,行首


  5. n-    上移n行,行首


  6. n$    下移n行(1表示本行),行尾


  7. 0    所在行行首


  8. $    所在行行尾


  9. ^    所在行首字母


  10. h,j,k,l  左移,下移,上移,右移


  11. H    當前屏幕首行行首


  12. M    屏幕顯示文件的中間行行首


  13. L    當前屏幕最底行行首

  1. 替換和刪除


  2. rc    用c替換光標所指向的字符


  3. nrc    用c替換光標所指向的前n個字符


  4. x    刪除光標處的字符


  5. nx    刪除光標所在位置開始向右的n個字符


  6. dw    若光標處在某個詞的中間,則從光標所在的位置開始刪至詞尾(連同詞後的若干空格,製表符)


  7. ndw    刪除光標所在的單詞開始的n個單詞(第一個單詞從光標所處的字符開始刪)


  8. db    光標所在單詞的前一個字符至單詞的首字符


  9. ndb    刪除光標所在的單詞前n哥單詞


  10. dd    刪除光標所在的整行


  11. ndd    刪除當前行及其後n-1行


  12. dG    刪除當前行到最後一行


  13. d1G    刪除當前行到第一行


  14. d$    刪除當前字符到行尾


  15. d0    刪除前一個字符到行首


  16. d,左箭頭  刪除光標處的前一個字符


  17. d,右箭頭  刪除光標處的字符


  18. d,上箭頭  刪除當前行和上一行


  19. d,下箭頭  刪除當前行和下一行

  1. 複製和粘貼


  2. yy    當前行復制到緩衝區


  3. nyy    當前開始的n行復制到緩衝區


  4. yG    光標所在行至最後一行復制到緩衝區


  5. y1G    光標所在行至第一行復制到緩衝區


  6. y$    光標所在位置到行尾複製到緩衝區


  7. y0    光標所在位置的前一個字符到行首複製到緩衝區


  8. p    將緩衝區的內容寫到光標所在的位置

  1. 搜索字符串


  2. /str    往右移動到有str的地方


  3. ?str    往左移動到有str的地方


  4. n    向相同的方向移動


  5. N    向相反的方向移動

  1. 撤銷和重複


  2. U    取消前一次的誤操作或不合適的操作對文件造成的影響


  3. .    再執行一次前面剛完成的某個命令

  1. 退出Vi


  2. ZZ    存盤退出


  3. ZQ    不保存退出

二、命令行模式下的操作
跳行
:n    跳轉到第n行

  1. 字符串搜索和替換


  2. :/str/          從當前往右移動到有str的地方


  3. :?str?          從當前往左移動到有str的地方


  4. :/str/w file        將包含有str的行寫到文件file中


  5. :/str1/,/str2/w file    將從str1開始到str2結束的內容寫入到file文件中


  6. :s/str1/str2/      將找到的第一個str1替換爲str2  


  7. :s/str2/str2/g      將當前行找到的所有str1替換爲str2


  8. :n1,n2s/str1/str2/g    將從n1行至n2行找到的所有的str1替換爲str2


  9. :1,.s/str1/str2/g      將從第1行至當前行的所有str1替換爲str2


  10. :.,$s/str1/str2/g      將從當前行至最後一行的所有str1替換爲str2


  11. :1,$s/str1/str2/gc     將從第1行至最後一行的所有str1替換爲str2,並在替換前詢問

  1. 文本的複製、移動和刪除


  2. :n1,n2 co n3    將n1行至n2行復制到n3後面


  3. :n1,n2 m n3    將n1行至n2行移動到n3後面


  4. :d         刪除當前行


  5. :nd         刪除第n行


  6. :n1,n2 d      刪除n1行至n2行


  7. :.,$d        刪除當前行至最後一行


  8. :/str1/,/str2/d   刪除從str1開始至str2爲止的內容

  1. 文件相關命令


  2. :w       當前編輯的內容存盤


  3. :w file     當前編輯的內容寫到file中


  4. :n1,n2w file  從n1行至n2行寫到file中


  5. :nw file     第n行寫到文件file中


  6. :1,.w file    從第1行至當前行寫到file中


  7. :.,$w file    從當前行至最後一行寫到file中


  8. :r file      打開另一個文件file


  9. :e file      新建file文件        


  10. :f file       當前文件改名爲file

  1. 執行Shell命令


  2. :!Cmd        運行Shell命令Cmd


  3. :n1,n2 w !Cmd   將n1行至n2行做爲Cmd命令的輸入,若不指定行則整個文件做爲Cmd的輸入


  4. :r !Cmd       將命令運行的結果寫入光標所在行的下一行(命令不能是別名)

  1. 設置Vi環境


  2. :set autoindent      自動縮進


  3. :set noautoindent     取消自動縮進


  4. :set number        在編輯文件時顯示行號


  5. :set nonumber      不顯示行號


  6. :set ruler          在屏幕底部顯示光標所在的行,列位置


  7. :set noruler        不顯示行,列位置


  8. :set tabstop=value    設置顯示製表符的空格字符個數


  9. :set wrapmargin=value  設置顯示器的右頁邊。當輸入進入所設置的頁邊時,編輯器自動回車換行


  10. :set            顯示設置的所有選項


  11. :set all          顯示所欲可以設置的選項

  1. 退出Vi


  2. :q    退出


  3. :qw   保存並退出


  4. :q!    不保存退出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章