vi編輯器的三種模式

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

相關文章
相關標籤/搜索