摘抄自: http://linux.vbird.org/linux_basic/
作者: 鳥哥的 Linux 私房菜
vi 編輯器有 3 種基本工作模式
vi filename
打開已存在的文件或者新建一個文件
vi +行號 filename
在進入 vi 後,光標處於文件中特定的某行上,可在 vi 命令上加上行號和文件名
vi + filename
如果希望在進入 vi 之後光標處於文件最末行,則只需去掉命令中+後面的數字 n 即可
vi +/匹配的關鍵字 filename
進入 vi 後,光標就處於文件中第一個與指定模式串相匹配的那行上
vi *.filename
使用 vi 可以同時編輯多個文件,只要在進入 vi 的命令中寫入所要操作的文件即可,還可以使用通配符
插入文本命令:i 和 I
i 命令將文本插入到光標所在位置前
I 命令將文本插入當前行的行首。
追加文本命令:a 和 A
a 命令將新文本追加到光標當前所在位置之後
A 命令將新文本追加到所在行的行尾。
空行插入命令:o 和 O
o 命令將在光標所在行的下面插入一個空行,並將光標置於該行的行首。
O 命令在光標所在行的上面插入一個空行,並將光標置於該行的行首。
vi文本刪除命令(刪除文件內容)
文本刪除命令 |
命令的意義 |
文本刪除命令 |
命令的意義 |
x |
刪除光標處的字符 |
d( |
刪除到上一句開始的所有字符 |
X |
刪除光標前面的字符 |
d) |
刪除到下一句開始的所有字符 |
dd |
刪除光標所在的整行 |
d{ |
刪除到上一段開始的所有字符 |
D 或 d$ |
刪除從光標所在處開始到行尾 的內容 |
d} |
刪除到下一段開始的所有字符 |
d0 |
刪除從光標前一個字符開始到 行首的內容 |
d<CR> |
刪除包括當前行在內的兩行字符 |
dw |
刪除一個單詞 |
|
|
vi文本複製命令(複製文件內容)
文本複製命令 |
命令的意義 |
文本複製命令 |
命令的意義 |
yy |
複製光標所在的整行 |
y{ |
複製到上一段的開始 |
Y 或 y$ |
複製從光標所在處開始到行尾的內容 |
y} |
複製到下一段的開始 |
y0 |
複製從光標前一個字符開始到行首的內容 |
y<CR> |
複製包括當前行在內的兩行內容 |
y( |
複製到上一句的開始 |
yw |
複製一個單詞 |
y) |
複製到下一句的開始 |
|
|
1. 文本粘貼命令
- p 命令:粘貼命令,粘貼當前緩衝區中的內容。
2. 文本選擇命令
- v 命令:在命令模式下進行文本選擇。在需要選擇的文本的起始處按下 v 鍵進入塊選擇模式,然後移動光標到塊尾處。這之間的部分被高亮顯示,表示被選中。
- V 命令:在命令模式下按行進行文本選擇。在需要選擇的文本的第一行按下 V 鍵,然後移動光標到塊的最後一行。這之間的所有行被高亮顯示,表示被選中。
vi撤銷命令(u和U),撤銷上一次的操作
撤銷命令分爲以下兩種。
- u 命令:該命令撤銷上一次所做的操作。多次使用 u 命令會一步一步依次撤銷之前做過的操作(在一次切換到文本輸入模式中輸入的所有文本算一次操作)。
- U 命令:該命令會一次性撤銷自上次移動到當前行以來做過的所有操作,再使用一次 U 命令則撤銷之前的 U 命令所做的操作,恢復被撤銷的內容。
vi重複命令(重複上次操作)
重複命令只能在命令模式下工作,在該模式下按下.鍵
vi退出命令
:q
當用戶不清楚自己當前編譯的文件是否被修改時,可以使用該命令進行測試,而不必擔心因爲誤操作導致文件數據丟失。
:q!
該命令不論文件是否改變都會強行退出 vi 編輯器,對於此命令用戶應當慎用。
:w 新文件名
vi 保存當前編輯文件,但並不退出,而是繼續等待用戶輸入命令。在使用 w 命令時,可以再給當前編輯文件起一個新的文件名。這個功能相當於將該文件另存爲爲一個新的文件。
:w! 新文件名
說明:該命令與:w命令相同,所不同的是,即使指定的新文件存在,vi 編輯器也會用當前編輯文件對其進行替換,而不再詢問用戶。
:wq
vi 將先保存文件,然後退出 vi 返回到 shell。如果當前文件尚未取名,則需要現指定一個文件名。
:x
說明:若當前編輯文件曾被修改過,則 vi 會保存該文件。否則 vi 直接退出,不保存該文件。
vi字符替換命令(r和R命令)
1. r 命令
該命令將當前光標所指的字符替換爲提供的字符。可以在該命令之前加上數字 n,表示將從當前字符開始的 n 個字符替換爲提供的字符
2. R命令
該命令會讓 vi 進入 replace 模式。在此模式下,每個輸入的字符都會替換當前光標下的字符,直到輸入 <Esc> 結束該模式。
vi文本跨行移動(m命令)
vi 編輯器使用 m 命令實現文本的跨行移動。該命令的使用方法爲:imj
表示把第 i 行移至第 j 行的下方。
vi屏幕滾動命令(滾屏命令)
在命令模式下和文本輸入模式下均可以使用滾屏和分頁命令。滾屏和分頁命令如下表所示。
滾屏和分頁命令 |
命令意義 |
Ctrl+u |
將屏幕向前(文件頭方向)翻滾半屏 |
Ctrl+d |
將屏幕向後(文件尾方向)翻滾半屏 |
Ctrl+f |
將屏幕向文件尾方向翻滾一整屏 |
Ctrl+b |
將屏幕向文件首方向翻滾一整屏 |
可以在滾屏和分頁命令之前加上一個數字 n,表示屏幕向前或向後翻滾 n 行,或者屏幕向前或向後移動 n 頁。這些設置會被 vi 編輯器記住,下次用戶在使用滾屏和分頁命令時,還會滾動和上次設置相同的行數或者頁數。
vi字符串檢索(查找)命令
查找命令有 5 種
/string
/命令從光標處開始向後尋找字符串 string。
?string
? 命令從光標處開始向前尋找字符串 string。
n 命令重複上一條檢索命令。
N 命令重複上一條檢索命令,但檢索方向改變。例如上次的檢索命令是向前檢索,那麼此次檢索的方向是向後;如果上次的檢索命令是向後檢索,那麼此次檢索的方向是向前。
g/string
檢索 string。g/命令使光標停止在第一個檢索到的 string 串的行首。
vi字符串替換命令
[range]s/s1/s2/ [option]
- [range] 表示檢索範圍,省略時表示當前行。下面是一些檢索範圍的例子。
-
- 1,10表示從第 1 行到 10 行。
- %表示整個文件,同1, $。
- . ,$從當前行到文件尾。
- s 爲替換命令。
- s1 要被替換的串,s2 爲替換的串。
- option 表示選項:
-
- /g表示在全局文件中進行替換。
- /c表示在每次替換之前需要用戶進行確認。
- 省略時僅對每行第一個匹配串進行替換。
vi窗口切分命令(split命令)
在末行模式中,輸入 split 命令即可實現窗口的切分,其命令格式 : split文件名
split 也可簡寫爲 sp。這時窗口切分爲上下兩部分,下半部分對應原來的文件,上半部分對應新打開的文件。
有時用戶需要在多窗口之間進行切換,vi 編輯器提供一組命令支持用戶切換多個窗口,其命令如下表所示。
切換命令 |
命令的意義 |
Ctrl+w,然後 j |
移動光標到下面的一個窗口 |
Ctrl+w,然後 k |
移動光標到上面的一個窗口 |
Ctrl+w,然後 q |
關閉當前窗口 |
Ctrl+w,然後 w |
移動光標到另一個窗口 |
vi屬性設置命令
:set nu (nonu)
該命令顯示行號(或者不顯示行號)。
:set hlsearch (nohlsearch)
該命令設定搜尋字符串反白顯示(或者不反白顯示)。
:set all
該命令顯示所有的選項。
:syntax on (off)
該命令實現程序語法高亮顯示(或者不高亮顯示)。
:set ignorecase(noignorecase)
該命令忽略大小寫(或者區分大小寫)。