vi命令行小型字典!

发表于:2007-07-04来源:作者:点击数: 标签:
有刚开始使用vi的时候肯定是记不住那么多命令的,不过没关系,可以慢慢来,先放起来,随时可以找到嘛... 所謂的命令列或命令模式,就是在最下面一行沒有顯示『 --INSERT-- 』或者『 --REPLACE-- 』字樣的時候。通常在命令列中的指令有下面幾種:(注意,當按下
有刚开始使用vi的时候肯定是记不住那么多命令的,不过没关系,可以慢慢来,先放起来,随时可以找到嘛...

所謂的命令列或命令模式,就是在最下面一行沒有顯示『--INSERT--』或者『--REPLACE--』字樣的時候。通常在命令列中的指令有下面幾種:(注意,當按下『:』 時,游標會自動移動到螢幕的最下面一行!)
 

clearcase/" target="_blank" >cccc">一般模式:移動游標
h 或 向左方向鍵
游標向左移動一個字元
j 或 向下方向鍵
游標向下移動一個字元
k 或 向上方向鍵
游標向上移動一個字元
l 或 向右方向鍵
游標向右移動一個字元
[Ctrl] + [f]
螢幕『向前』移動一頁常用
[Ctrl] + [b]
螢幕『向後』移動一頁常用
[Ctrl] + [d]
螢幕『向前』移動半頁
[Ctrl] + [u]
螢幕『向後』移動半頁
+
游標移動到非空白字元的下一列
-
游標移動到非空白字元的上一列
n<space>
按下數字後再按空白鍵,游標會向右移動這一行的 n 個字元。例如 20<space> 則游標會向後面移動 20 個字元距離。
0
這是數字『 0 』:移動到這一行的最前面字元處常用
$
移動到這一行的最後面字元處常用
H
游標移動到這個螢幕的最上方那一行
M
游標移動到這個螢幕的中央那一行
L
游標移動到這個螢幕的最下方那一行
G
移動到這個檔案的最後一行常用
nG
移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的 20 行(可配合 :set nu)
n<Enter>
游標向下移動 n 行常用
一般模式:搜尋與取代
/word
向游標之後尋找一個字串名稱為 word 的字串。常用
?word
向游標之前尋找一個字串名稱為 word 的字串。
:n1,n2s/word1/word2/g
在第 n1 與 n2 行之間尋找 word1 這個字串,並將該字串取代為 word2 !常用
:1,$s/word1/word2/g
從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !常用
:1,$s/word1/word2/gc
從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !且在取代前顯示提示字元給使用者確認(conform)是否需要取代!(常用
一般模式:刪除、複製與貼上
x, X
x 為向後刪除一個字元, X 為向前刪除一個字元常用
nx
向後刪除 n 個字元
dd
刪除游標所在的那一整列常用
ndd
刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 列常用
d1G
刪除游標所在到第一行的所有資料
dG
刪除游標所在到最後一行的所有資料
yy
複製游標所在的那一行常用
nyy
複製游標所在的向下 n 列,例如 20yy 則是複製 20 列常用
y1G
複製游標所在列到第一列的所有資料
yG
複製游標所在列到最後一列的所有資料
p, P
p 為複製的資料在游標下一行貼上,P 則為貼在游標上一行!常用
J
將游標所在列與下一列的資料結合成同一列
c
重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]
u
復原前一個動作。常用
進入編輯模式 
i, I
插入:在目前的游標所在處插入輸入之文字,已存在的文字會向後退;(常用
a, A
增加:由目前游標所在的下一個字開始輸入,已存在的文字會向後退:(常用
o, O
插入新的一行:從游標所在的下一行枝行首開始輸入文字;(常用
r, R
取代:r 會取代游標所在的那一個字元;R會一直取代游標所在的文字,直到按下 ESC 為止;(常用
Esc
退出編輯模式,回到一般模式中常用
指令列命令模式 
:w
將編輯的資料寫入硬碟檔案中常用
:w!
若檔案屬性為『唯讀』時,強制寫入該檔案
:q
離開 vi 常用
:q!
若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。
:wq
儲存後離開,若為 :wq! 則為強制儲存後離開常用
:e!
將檔案還原到最原始的狀態!
ZZ
若檔案沒有更動,則不儲存離開,若檔案已經經過更動,則儲存後離開!
:w [filename]
將編輯的資料儲存成另一個檔案(類似另存新檔)
:r [filename]
在編輯的資料中,讀入另一個檔案的資料。亦即將 『filename』這個檔案內容加到游標所在行後面
:set nu
顯示行號,設定之後,會在每一行的字首顯示該行的行號
:set nonu
與 set nu 相反,為取消行號!
n1,n2 w [filename]
將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command
暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如[ :! ls /home ]

原文转自:http://www.ltesting.net