vi編輯器的三種模式
一般來講,vi編輯器有三種模式,分別是通常指令模式、編輯模式與指令行命令模式。 這三種模式的做用分別是:vim
通常指令模式(command mode)
以 vi 打開一個文件就直接進入通常指令模式了(這是默認的模式,也簡稱爲通常模式)。在這個模式中, 你可使用上下左右按鍵來移動光標,你可使用刪除字符或刪除整行來處理文件內容, 也可使用複製、黏貼來處理你的文件數據。編輯器
編輯模式(insert mode)
編輯模式能夠對內容進行編輯,按下i, I, o, O, a, A, r, R等任何一個字母以後便可進入編輯模式。若是要回到通常指令模式時, 則必需要按下Esc這個按鍵便可退出編輯模式。spa
命令行模式(command-line mode)
在通常模式當中,輸入:, /, ? 三個中的任何一個按鈕,就能夠將光標移動到最底下那一行。在這個模式當中, 能夠提供你搜尋資料的動做,而讀取、存盤、大量取代字符、離開 vi 、顯示行號等等的動做則是在此模式中達成的! 總之,三者的關係能夠用下圖來概況:命令行
各模式下的快捷鍵
通常指令模式code
移動光標的方法 | |
---|---|
h 或 向左箭頭鍵(←) | 光標向左移動一個字符 |
j 或 向下箭頭鍵(↓) | 光標向下移動一個字符 |
k 或 向上箭頭鍵(↑) | 光標向上移動一個字符 |
l 或 向右箭頭鍵(→) | 光標向右移動一個字符 |
hjkl 是排列在一塊兒的,所以可使用這四個按鈕來移動光標。 若是想要進行屢次移動的話,例如向下移動 30 行,能夠 使用 「30j」 或 「30↓」 的組合按鍵,亦即加上想要進行的次數(數字)後,按下動做便可! | |
[Ctrl] + [f] | 屏幕向下移動一頁,至關於 [Page Down]按鍵 |
[Ctrl] + [b] | 屏幕向上移動一頁,至關於 [Page Up] 按鍵 |
[Ctrl] + [d] | 屏幕向下移動半頁 |
[Ctrl] + [u] | 屏幕向上移動半頁 |
n<space> | n 表示數字,例如 20 。按下數字後再按空格鍵,光標會向右移動這一行的 n 個 字符。例如 20 則光標會向後面移動 20 個字符距離。 |
0 或功能鍵[Home] | 移動到這一行的最前面字符處 |
$ 或功能鍵[End] | 移動到這一行的最後面字符處 |
H | 光標移動到這個屏幕的最上方那一行的第一個字符 |
M | 光標移動到這個屏幕的中央那一行的第一個字符 |
L | 光標移動到這個屏幕的最下方那一行的第一個字符 |
G | 移動到這個文件的最後一行 |
nG | n 爲數字。移動到這個文件的第 n 行。例如 20G 則會移動到這個文件的第 20 行 |
gg | 移動到這個文件的第一行 |
n<Enter> | n 爲數字。光標向下移動 n 行 |
搜索與替換 | |
/word | 向光標之下尋找一個名稱爲 word 的字符串 |
?word | 向光標之上尋找一個字符串名稱爲 word 的字符串 |
n | 重複前一個搜尋的動做 |
N | 與 n 恰好相反,爲反向進行前一個搜尋動做。 例如 /word 後,按下 N 則表示 ?word |
:n1,n2s/word1/word2/g | n1 與 n2 爲數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,並將該字符串取代 爲 word2 , 好比:在 100 到 200 行之間搜尋 null並取代爲 NULL 則 :100,200s/null/NULL/g |
:1,$s/word1/word2/g | 從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 |
:1,$s/word1/word2/gc | 從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 。且在取代前顯示提示字符 給用戶確認 (confirm) 是否須要取代 |
刪除,複製與黏貼 | |
x, X | 在一行字當中,x 爲向後刪除一個字符, X 爲向前刪除一個字符 |
nx | n爲數字,連續向後刪除 n 個字符 |
dd | 刪除遊標所在的那一整行 |
ndd | n 爲數字。刪除光標所在的向下 n 行,例如 20dd 則是刪除 20 行 |
d1G | 刪除光標所在到第一行的全部數據 |
dG | 刪除光標所在到最後一行的全部數據 |
d$ | 刪除遊標所在處,到該行的最後一個字符 |
d0 | 刪除遊標所在處,到該行的第一個字符 |
yy | 複製遊標所在的那一行 |
nyy | n 爲數字。複製光標所在的向下 n 行,例如 20yy 則是複製 20 行 |
y1G | 複製光標所在行到第一行的全部數據 |
yG | 複製光標所在行到最後一行的全部數據 |
y0 | 複製光標所在的那個字符到該行行首的全部數據 |
y$ | 複製光標所在的那個字符到該行行尾的全部數據 |
p, P | p 爲將已複製的數據黏貼到光標下一行,P 則爲黏貼到上一行 |
J | 將光標所在行與下一行的數據結合成同一行 |
u | 回退,相似於Ctrl+z |
[Ctrl]+r | 前進,相似於Ctrl+y |
. | 重複前一個動做。 若是你想要重複刪除、重複黏貼等動做,按下小數點.就行了 |
通常指令模式切換到編輯模式的可用的快捷鍵blog
進入INSERT或REPLACE模式 | |
---|---|
i, I | 進入插入模式(Insert mode): i 爲從目前光標所在處插入,I 爲在目前所在行的第一個非空格符處開始插入 |
a, A | 進入插入模式(Insert mode): a 爲從目前光標所在的下一個字符處開始插入, A 爲從光標所在行的最後一個字符處開始插入 |
o, O | 進入插入模式(Insert mode): o 爲在目前光標所在的下一行處插入新的一行; O 爲在目前光標所在處的上一行插入新的一行 |
r, R | 進入取代模式(Replace mode): r 只會取代光標所在的那一個字符一次;R 會一直取代光標所在的文字,直到按下 ESC 爲止 |
[Esc] | 退出編輯模式,回到通常指令模式中 |
通常指令模式切換到命令行模式可用的快捷鍵字符串
命令行模式的存儲,離開等指令 | |
---|---|
:w | 將編輯的數據寫入硬盤文件中(保存) |
:w! | 若文件屬性爲只讀時,強制寫入該文件。不過,到底能不能寫入,仍是跟你對該文件的文件權限有關 |
:q | 離開 vi |
:q! | 若曾修改過文件,又不想儲存,使用 ! 爲強制離開不儲存文件 |
:wq | 儲存後離開,若爲 :wq! 則爲強制儲存後離開 |
ZZ | 若文件沒有更動,則不儲存離開,若文件已經被更動過,則儲存後離開! |
:w filename | 將編輯的數據儲存成另外一個文件 |
:r filename | 在編輯的數據中,讀入另外一個文件的數據。亦即將filename這個文件內容加到遊標所在行後面 |
:n1,n2 w filename | 將 n1 到 n2 的內容儲存成 filename 這個文件 |
:! command | 暫時離開 vi 到指令行模式下執行 command 的顯示結果。例如 :! ls /home 便可在 vi 當中察看 /home 底下以 ls 輸出的文件信息 |
vim 環境的變動 | |
:set nu | 顯示行號,設定以後,會在每一行的前綴顯示該行的行號 |
:set nonu | 與:set nu 相反,爲取消行號 |
《鳥哥的Linux私房菜》讀書筆記get