vi命令很多,目前我在工作中常用的就以下這些,後續如果還有需要再添加。
:x 同 :wq 保存後退出
:n 光標移到文件的第n 行
:0 光標移到文件的第一行
:$ 光標移到文件的最後一行
u 取消前一步操作
. 執行一個重複命令 其結果是依賴於光標當前位置
/ 從光標當前所在位置向文件尾部搜索(例如輸入:/member進行查找含有member的行,按住字母'n'繼續搜索)
? 由光標當前所在位置向文件頭部搜索(例如輸入:?member進行查找含有member的行,按住字母'n'繼續搜索)
:s/text1/text2 用於將光標所在段落搜索到的第一個 text1 替換爲text2
:s/text1/text2/g 用於將光標所在段落的所有 text1 替換爲text2
:m,ns/text1/text2/g 用於將從 m行開始至n 行結束的所有搜索到的text1替換爲text2 其中可以使用$表示末行即1,$ 表示替換文檔中的所有符合條件的字符
====光標移動====
h 光標左移 如果在按h 命令前輸入數字n 則光標左移n 個字符
l 光標右移 如果在按l 命令前輸入數字n 則光標右移n 個字符
j 光標下移 如果在按j 命令前輸入數字n 則光標下移n 個字符
k 光標上移 如果在按k 命令前輸入數字n 則光標上移n 個字符
0 (零)光標移到行首
$ 光標移到行尾
H 光標移到屏幕上顯示的第一行 並不一定是文件頭
L 光標移到屏幕上顯示的最後一行 並不一定是文件尾
Ctrl+G 狀態命令 顯示當前編輯文檔的狀態包括正在編輯的文件名是否修改過當前行號文件的行數以及光標之前的行佔整個文件的百分比
====文本插入====
i 從光標所在位置前開始插入文本
I 將光標移到當前行的行首 然後在其前插入文本
a 在光標當前所在位置之後追加新文本
A 把光標挪到所在行的行尾,從那裏開始插入新文本
o 將在光標所在行的下面新開一行 並將光標置於該行的行首等待輸入文本
O 在光標所在行的上面插入一行並將光標置於該行的行首等待輸入文本
====文本修改====
x 刪除光標處的字符 若在x 之前加上一個數字n 則刪除從光標所在位置開始向右的n 個字符
X 刪除光標前面的那個字符 若在X之前加上一個數字n 則刪除從光標前面那個字符開始向左的n 個字符
dd 刪除光標所在的整行 在dd 前可加上一個數字n 表示刪除當前行及其後n-1 行的內容
D 或d$ 兩命令功能一樣 都是刪除從光標所在處開始到行尾的內容
d0 刪除從光標前一個字符開始到行首的內容
dw 刪除一個單詞 若光標處在某個詞的中間則從光標所在位置開始刪至詞尾 在dw之前加一個數字n 表示刪除n 個指定的單詞
dL 刪除直到屏幕上最後一行的內容
dH 刪除直到屏幕上第一行的內容
dG 刪除直到工作緩存區結尾的內容
d1G 刪除直到工作緩存區開始的內容
yy 複製光標所在的整行 在yy 前可加上一個數字n 表示複製當前行及其後n-1 行的內容
p 粘貼 若在p前加上一個數字n,則粘貼n次。注意如下區別,使用數字+p,則複製是順次的;與多次按p命令結果不一樣,
重複使用時數字+p命令時,粘貼結果與我們使用編輯器一樣;多次按p命令,粘貼結果是順次的
例如複製如下兩行:
22
33
1)則使用命令2p後,複製結果如下:
22
33
22
33
2)連按兩次p命令後,複製結果如下:
22
22
33
33
:n1,n2 co n3 將 n1 行到 n2 行之間的內容拷貝到第 n3 行下。
:n1,n2 m m3 將 n1 行到 n2 行之間的內容移至第 n3 行下。
:n1,n2 d 將 n1 行到 n2 行之間的內容刪除。
:n1,n2 w filename 將 n1 行到 n2 行之間的內容保存到文件 filename 中
:n1,n2 w! Command 將文件中n1行到n2行的內容作爲 Command的輸入並執行之,
若不指定 n1、n2,則將整個文件內容作爲 Command 的輸入。
爲了記住以上命令,需要經常練習,以備不時之需。