Vi功能相當強大,但也很繁瑣,需要你經常使用,經常鍛鍊,時間長了,命令記熟了,效率就提上去了。這篇文章不是Vi的詳細使用手冊,而只是針對me的。
1)啓動Vi:
將光標定位到文件最後一行啓動: vi + filename
將光標定位到每一個出現string字符串的行首: vi +/string filename(注意string用引號包圍)
2)退出Vi:
:x功能相等於:wq
3)光標在窗口中的移動
命令模式下:
右移一個字符: l或空格或→
移到當前行的開始: o
移到下一行的開始: Enter或+
移到上一行的開始:-
移到下一個字或標點符號: w
移到下一個字: W
移到字的下一結尾:e
移動字的下一結尾:E
移回到字或標點符號的開始:b
移回到字的開始: B
移到當前句子的結尾:)
移到當前句子的開始:(
移到當前段落的開始:{
移到當前段落的結尾:}
4)光標在緩衝區中移動
命令模式下
向上移動一個滿屏幕: Ctrl+F
向上移動半屏幕: Ctrl+D
向下移動一個滿屏幕: Ctrl+B
向下移動半屏幕: Ctrl+U
光標移動到屏幕頂部: H
光標移動到屏幕中部: M
光標移動到屏幕底部: L
這些命令前都可加入數字n作爲前綴
5)光標在正文中的移動
移動到文件的尾部: G或:$
移動到文件的第n行: nG或:n
向前移動光標到string首: /string
向後移動光標到string首: ?string
6)Vi命令
不顯示行號::set nonumber
顯示vi設置情況::set all
顯示當前文件及工作緩衝區狀況::f
將名爲的文件內容插入到緩衝區當前行的下面::r filename
執行命令,並將結果插入到緩衝區當前行的下面::!cmd
7)重複和取消操作
上一次執行的命令繼續執行:.
取消上一次修改:u
重新編輯,放棄此次對文件的所有修改,重新從盤中讀取文件,開始編輯:e!
8)刪除文本
刪除當前字符:x
刪除當前字符的前一個字符:X
刪除從當前字符開始的n個字符:nx
刪除當前字符前面的n個字符:nX
刪除從當前字開始的n個字,並放入緩衝區:ndw
刪除從當前字符開始的n行字符:nd$
刪除從當前行開始的n行:ndd
刪除一直到句尾:d )
刪除一直到段末:d }
刪除兩行:d Enter
9)檢索及替換
定位到當前位置後的第一個string字符串:/string
定位到當前位置前的第一個string字符串:?string
重複上一條檢索命令,向後://
重複上一條檢索命令,向前:??
定位到第一次檢索到的行首::g/string
從第n1行到第n2行將字符串替str1換爲字符串str2::[n1,n2]s/str1/str2/[option]
對整個文件將字符串str1替換爲字符串st2:%s/str1/str2/[option]
從當前行到文件尾將字符串str1替換爲字符串str2:.,$s/str1/str2/[option]
簡單些的字符替換命令: :g/s1/s//s2/[option]
10)移動及複製文本
將第n1行到第n2行的內容移動到行號n3下: :n1,n2 m n3
將第n1行到第n2行的內容複製到行號n3下: :n1,n2 t n3
複製從當前字符開始的n個字,放到緩衝區中:nyw
複製從當前字符開始的n行字符,放到緩衝區中:ny$
複製到下一句的開始:y)
複製到下一段的開始:y}
複製從當前行的n行: nyy
複製兩行:y Enter
11)修改文本
替換當前字符,不用按ESC鍵:r
從當前字符開始替換,直到ESC鍵爲止:R
從當前字符開始的行字符進行替換:直到鍵入ESC:nC或nc$
從當前字符開始的個字進行替換操作,直到鍵入ESC:ncw
對從當前字符開始的行字符進行替換,直到鍵入ESC:ncc
替換從當前字符開始的個字符,直到鍵入ESC:ns
從當前行開始的行字符,進行替換,直到鍵入ESC:nS
將當前行和下一行連接起來:J