Vim 基本功

vim 分為三種模式的作用分別是:

一般指令模式 (command mode)以 vi 打開一個檔案就直接進入一般指令模式了(這是預設的模式,也簡稱為一般模式)。
編輯模式 (insert mode)在一般指令模式中可以進行刪除、複製、貼上等等的動作。當你按下『i, I, o, O, a, A, r, R』等任何一個字母之後才會進入編輯模式。要回到一般指令模式, 要按下『Esc』按鍵退回 一般指令模式。
指令列命令模式 (command-line mode)在一般模式當中,輸入『 : / ? 』三個中的任何一個按鈕,就可以將游標移動到最底下那一列。

一般指令模式可用的按鍵

h 或 向左方向鍵(←)游標向左移動一個字元
j 或 向下方向鍵(↓)游標向下移動一個字元
k 或 向上方向鍵(↑)游標向上移動一個字元
l 或 向右方向鍵(→)游標向右移動一個字元
[Ctrl] + [f]螢幕『向下』移動一頁,相當於 [Page Down]按鍵
[Ctrl] + [b]螢幕『向上』移動一頁,相當於 [Page Up] 按鍵
[Ctrl] + [d]螢幕『向下』移動半頁
[Ctrl] + [u]螢幕『向上』移動半頁
+游標移動到非空白字元的下一列
游標移動到非空白字元的上一列
n<space>那個 n 表示『數字』,按下數字後再按空白鍵,游標會向右移動這一列的 n 個字元。
0 或功能鍵[Home]移動到這一列的最前面字元處
$ 或功能鍵[End]移動到這一列的最後面字元處
H游標移動到這個螢幕的最上方那一列的第一個字元
M游標移動到這個螢幕的中央那一列的第一個字元
L游標移動到這個螢幕的最下方那一列的第一個字元
G移動到這個檔案的最後一列
nGn 為數字。移動到這個檔案的第 n 列
gg移動到這個檔案的第一列
n<Enter>n 為數字。游標向下移動 n 列
/word向游標之下尋找一個名稱為 word 的字串
?word向游標之上尋找一個字串名稱為 word 的字串
n這個 n 是英文按鍵。代表『重複前一個搜尋的動作』
N這個 N 是英文按鍵。與 n 剛好相反,為『反向』進行前一個搜尋動作。
:n1,n2s/word1/word2/gn1 與 n2 為數字。在第 n1 與 n2 列之間尋找 word1 這個字串,並將該字串取代為 word2
:1,$s/word1/word2/g從第一列到最後一列尋找 word1 字串,並將該字串取代為 word2
:1,$s/word1/word2/gc從第一列到最後一列尋找 word1 字串,並將該字串取代為 word2 。且在取代前顯示提示字元給使用者確認 (confirm) 是否需要取代
x, Xx 為向後刪除一個字元 (相當於 [del] 按鍵), X 為向前刪除一個字元(相當於 [backspace] 亦即是倒退鍵)
nxn 為數字,連續向後刪除 n 個字元
dd刪除游標所在的那一整列
nddn 為數字。刪除游標所在的向下 n 列
d1G刪除游標所在到第一列的所有資料
dG刪除游標所在到最後一列的所有資料
d$刪除游標所在處,到該列的最後一個字元
d0刪除游標所在處,到該列的最前面一個字元
yy複製游標所在的那一列
nyyn 為數字。複製游標所在的向下 n 列
y1G複製游標所在列到第一列的所有資料
yG複製游標所在列到最後一列的所有資料
y0複製游標所在的那個字元到該列行首的所有資料
y$複製游標所在的那個字元到該列行尾的所有資料
p, Pp 為將已複製的資料在游標下一列貼上,P 則為貼在游標上一列!
J將游標所在列與下一列的資料結合成同一列
c重複刪除多個資料
u復原前一個動作
[Ctrl]+r重做上一個動作
.重複前一個動作

編輯模式可用的按鍵

i, I進入插入模式(Insert mode):
i 為『從目前游標所在處插入』, I 為『在目前所在列的第一個非空白字元處開始插入』
a, A進入插入模式(Insert mode):
a 為『從目前游標所在的下一個字元處開始插入』, A 為『從游標所在列的最後一個字元處開始插入』
o, O進入插入模式(Insert mode):
這是英文字母 o 的大小寫。o 為『在目前游標所在的下一列處插入新的一列』; O 為在目前游標所在處的上一列插入新的一列
r, R進入取代模式(Replace mode):
r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止;
[Esc]回到一般指令模式

指令列模式可用的按鍵

:w將編輯的資料寫入硬碟檔案中
:w!若檔案屬性為『唯讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權限有關啊!
:q離開 vi
:q!若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。
:wq儲存後離開,若為 :wq! 則為強制儲存後離開
:w [filename]將編輯的資料儲存成另一個檔案(類似另存新檔)

參考資料

https://chatgpt.yundongfang.com/2605/.html

https://linux.vbird.org/linux_basic/centos7/0310vi.php