Linux 下的 vi 用法

tolywang發表於2010-08-21
1. 查詢/xxx(?xxx)      表示在整篇文件中搜尋匹配xxx的字串, / 表示向下查詢, ? 表示
向上查詢.其中xxx可以是正規表示式,關於正規式就不多說了.
一般來說是區分大小寫的, 要想不區分大小寫, 那得先輸入
:set ignorecase
查詢到以後, 再輸入 n 查詢下一個匹配處, 輸入 N 反方向查詢.

*(#) 當游標停留在某個單詞上時, 輸入這條命令表示查詢與該單詞匹配的
下(上)一個單詞. 同樣, 再輸入 n 查詢下一個匹配處, 輸入 N 反方
向查詢.

g*(g#) 此命令與上條命令相似, 只不過它不完全匹配游標所在處的單詞, 而
是匹配包含該單詞的所有字串.

gd 本命令查詢與游標所在單詞相匹配的單詞, 並將游標停留在文件的非
註釋段中第一次出現這個單詞的地方.

% 本命令查詢與游標所在處相匹配的反括號, 包括 () [] {}

f(F)x 本命令表示在游標所在行進行查詢, 查詢游標右(左)方第一個x字元.
找到後:
輸入 ; 表示繼續往下找
輸入 , 表示反方向查詢
2. 快速移動游標
在 vi 中, 移動游標和編輯是兩件事, 正因為區分開來, 所以可以很方便的進行游標定
位和編輯. 因此能更快一點移動游標是很有用的.

w(e) 移動游標到下一個單詞.
b 移動游標到上一個單詞.

0 移動游標到本行最開頭.
^ 移動游標到本行最開頭的字元處.
$ 移動游標到本行結尾處.

H 移動游標到螢幕的首行.
M 移動游標到螢幕的中間一行.
L 移動游標到螢幕的尾行.
gg 移動游標到文件首行.
G 移動游標到文件尾行.
c-f (即 ctrl 鍵與 f 鍵一同按下) 本命令即 page down.
c-b (即 ctrl 鍵與 b 鍵一同按下, 後同) 本命令即 page up.

'' 此命令相當有用, 它移動游標到上一個標記處, 比如用 gd, * 等查
找到某個單詞後, 再輸入此命令則回到上次停留的位置.

'. 此命令相當好使, 它移動游標到上一次的修改行.

`. 此命令相當強大, 它移動游標到上一次的修改點.

3. 複製, 刪除與貼上
在 vi 中 y 表示複製, d 表示刪除, p 表示貼上. 其中複製與刪除是與游標移動命令
結合的, 看幾個例子就能夠明白了.

yw 表示複製從當前游標到游標所在單詞結尾的內容.
dw 表示刪除從當前游標到游標所在單詞結尾的內容.
y0 表示複製從當前游標到游標所在行首的內容.
d0 表示刪除從當前游標到游標所在行首的內容.
y$ 表示複製從當前游標到游標所在行尾的內容.
d$ 表示刪除從當前游標到游標所在行尾的內容.
yfa 表示複製從當前游標到游標後面的第一個a字元之間的內容.
dfa 表示刪除從當前游標到游標後面的第一個a字元之間的內容.

特殊地:
yy 表示複製游標所在行.
dd 表示刪除游標所在行.
D 表示刪除從當前游標到游標所在行尾的內容.

關於複製, 刪除和貼上的複雜用法與暫存器有關, 可以自行查詢.
回答人的補充   2009-07-04 00:26
4. 數字與命令
在 vi 中數字與命令結合往往表示重複進行此命令, 若在擴充套件模式的開頭出現則表示行號定位. 如:
5fx 表示查詢游標後第 5 個 x 字元.
5w(e) 移動游標到下五個單詞.
5yy 表示複製游標以下 5 行.
5dd 表示刪除游標以下 5 行.
y2fa 表示複製從當前游標到游標後面的第二個a字元之間的內容.
:12,24y 表示複製第12行到第24行之間的內容.
:12,y 表示複製第12行到游標所在行之間的內容.
:,24y 表示複製游標所在行到第24行之間的內容. 刪除類似.
5. 快速輸入字元
在 vi 中, 不要求你輸入每一個字元, 可以有很多種方法快速輸入一些字元.使用 linux/unix 的同學一定有一個經驗, 在命令列下輸入命令時敲入頭幾個字元再按TAB 系統就會自動將剩下的字元補齊, 假如有多個匹配則會列印出來. 這就是著名的命令補齊(其實windows中也有檔名補齊功能). vi 中有許多的字串補齊命令, 非常方便.

c-p(c-n) 在編輯模式中, 輸入幾個字元後再輸入此命令則 vi 開始向上(下)搜尋開頭與其匹配的單詞並補齊, 不斷輸入此命令則迴圈查詢. 此命令會在所有在這個 vim 程式中開啟的檔案中進行匹配.
c-x-l 在編輯模式中, 此命令快速補齊整行內容, 但是僅在本視窗中出現的文件中進行匹配.

c-x-f 在編輯模式中, 這個命令表示補齊檔名. 如輸入: /usr/local/tom 後再輸入此命令則它會自動匹配出:
/usr/local/tomcat/
abbr 即縮寫. 這是一個宏操作, 可以在編輯模式中用一個縮寫代替另一個字串. 比如編寫java檔案的常常輸入 System.out.println, 這很是麻煩, 所以應該用縮寫來減少敲字. 可以這麼做:abbr sprt System.out.println以後在輸入sprt後再輸入其他非字母符號, 它就會自動擴充套件為System.out.println

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

相關文章