Vim
vim 配置入門 | 阮一峰的網路日誌
Practice
翻頁
向下翻頁:Ctrl + D
(Down,翻半頁),Ctrl + F
(Forward,翻一頁)
向上翻頁:Ctrl + U
(Up,翻半頁),Ctrl + B
(Backward,翻一頁)
編輯
-
i
(insert): 游標處輸入 -
a
(append): 下一個字元處輸入 -
o
(open a line below): 下一行輸入 -
I
: 行首輸入 -
A
: 行尾輸入 -
O
: 上一行輸入
複製、貼上和刪除
複製:y
(yank)
複製當前行:yy
複製兩行:2yy
貼上:p
(paste)
貼上三次:3p
刪除當前行:dd
撤銷:u
(undo)
重做:Ctrl
r
查詢和替換
查詢
向後查詢:/word
向前查詢:?word
查詢以 abc 開頭的行:/^abc
查詢以 abc 結尾的行:/abc$
重複查詢:n
(下一個), N
(上一個)
替換
:s/old/new
(替換當前行第一個):s/old/new/g
(替換當前行所有):%s/old/new/g
(全域性替換):%s/old/new/gc
(全域性替換,每次替換前詢問):1,9s/old/new/g
(替換 1 到 9 行):.,$s/old/new/g
(替換當前行到最後一行):%s/old/new/gi
(忽略大小寫替換):%s#old#new#g
(也可以使用其他間隔符)
替換當前字元:r
進入 REPLACE 模式:R
批次註釋和自定義快捷鍵
:1,9s/^/#/g " 註釋 1 到 9 行
:1,9s/^#//g " 取消註釋 1 到 9 行
:map ^P I#<Esc> " 設定 Ctrl + P 為在行首新增 # 註釋
:map ^B 0x " 刪除行首字元(刪除 #)
:unmap ^P " 取消該快捷鍵
^P
使用Ctrl
+V
+P
打出。I
表示在行首輸入,#
為輸入內容,<Esc>
表示退回命令模式。0
表示跳到行首,x
表示刪除當前字元。
Vim 批次註釋和自定義註釋快捷鍵
簡書:Vim 文字替換
Vim 文字替換 | C 語言中文網
移動游標
跳轉到行首:0
或 ^
(0
是移到行的絕對開頭,^
是移到第一個非空白符)
跳轉到行尾:$
跳轉到檔案開頭:gg
跳轉到檔案結尾:G
跳轉到第三行:3G
或者 :3
Misc
vim 選項
vim -r file " 恢復上次 vim 開啟時崩潰的檔案
vim -R file " 以只讀方式開啟
vim + file " 將游標置於最後一行的行首
vim +n file " 並將游標置於第 n 行的行首
vim +/pattern file " 將游標置於第一個與 pattern 匹配的位置的行首
vim -c command file " 在對檔案進行編輯前,先執行指定的命令。
Vim 刪除文字
快捷鍵 | 功能描述 |
---|---|
x |
刪除當前字元 |
dd |
刪除當前行 |
3dd |
從當前行開始刪除 3 行 |
dG |
刪除當前行及之後的所有內容 |
D |
刪除行內當前字元及之後的內容 |
:1,9d |
刪除 1 到 9 行的所有內容 |
注意,被刪除的內容並沒有真正刪除,都放在了剪貼簿中。按下
p
鍵,就可以將剛才刪除的內容再貼上到當前位置。
Vim 複製和貼上文字
快捷鍵 | 功能描述 |
---|---|
p |
將剪貼簿中的內容貼上到游標後 |
P |
將剪貼簿中的內容貼上到游標前 |
y |
複製已選中的文字到剪貼簿 |
yy |
將當前行復制到剪貼簿 |
3yy |
從當前行開始複製 3 行到剪貼簿 |
yw |
將游標位置的單詞複製到剪貼簿 |
J |
將當前行與下一行合併 |
Vim 撤銷和恢復
撤銷:u
重做:Ctrl
r
撤銷或重做對當前行的操作:U
Vim 配置
命令 | 功能描述 |
---|---|
:w file |
另存為 file |
:set nu |
顯示行號 |
:set nonu |
取消顯示行號 |
:set cursorline |
突出顯示當前行 |
:set mouse=a :set selection=exclusive :set selectmode=mouse,key |
啟用滑鼠 |
:set autoindent |
自動縮排 |
:set tabstop=4 |
設定 Tab 鍵寬度 |
:set shiftwidth=4 |
設定自動換行縮排長度 |
:set expandtab |
自動將 Tab 轉為空格 |
:syntax enable |
開啟語法高亮 |
:set fileencoding=gbk |
轉換檔案編碼 |
:set all |
檢視所有的設定引數 |
:help nu |
檢視幫助 |
-
可以在開關類配置項的後面加
?
來檢視配置項的值::set nu?
-
可以在開關類配置項的後面加
!
來切換配置項的值::set nu!
-
可以在開關類配置項的後面加
&
來重置配置項的值::set nu&
-
可以在開關類配置項的前面加
no
來關閉配置項::set nonu
-
:set nu
也可以寫作:set number
-
可以編輯配置檔案來更改 vim 的預設配置,此時不需要
:
-
系統配置檔案:
/root/.vimrc
-
使用者配置檔案:
~/.vimrc
-
可以建立軟連結同步 root 配置:
sudo ln -s ~/.vimrc /root/
Vim 顯示行號
Vim 配置檔案
Vim 移動游標
以單詞為單位移動:W
B
移動到行首或行尾:$
^
或 0
移動到指定字元:f
F
移動到頁首:gg
移動到頁尾:G
移動到第 3 行:3G
或 :3
移動到匹配的括號處:%
Vim 視覺化模式
視覺化模式用於選中文字。
進入視覺化模式:v
(按一下進入,再按一下退出)
行視覺化模式:V
塊視覺化模式:Ctrl
+ V
命令 | 功能 |
---|---|
d |
刪除選中的文字 |
D |
刪除選中部分所在的行 |
y |
將選中部分複製到剪貼簿中。 |
p |
將剪貼簿中的內容貼上到游標之後 |
P |
將剪貼簿中的內容貼上到游標之前 |
u |
將選中部分的內容全部改為小寫 |
U |
將選中部分的內容全部改為大寫 |
> |
將選中部分右移一個 Tab 的長度 |
< |
將選中部分左移一個 Tab 的長度 |
Vim 多視窗編輯模式
:sp/file
水平切分
:vs/file
垂直切分
也可以在開啟 Vim 時使用 -o
選項直接開啟兩個(多個)檔案:vim -o file1 file2
切換視窗:Ctrl
+ W
+ W
將一個檔案的所有內容複製到當前行下面的新行::r file
Vim 執行 Linux 命令
按下 !!
選中當前行,執行 Linux 命令,並用執行結果覆蓋選中內容。
按下 !}
選中當前行以及之後的所有行,執行 Linux 命令,並用執行結果覆蓋選中內容。
選中的內容會作為 Linux 命令的輸入
:! <command> " 直接執行命令
:.! <command> " 選中當前行執行命令
:1,9! " 選中 1~9 行執行命令
:w! " 選中檔案的所有內容執行命令,但命令的執行結果不會寫入到檔案。
:r! " 直接執行命令,並將命令的執行結果插入到當前行下面的新行。
:3r! " 直接執行命令,並將命令的執行結果插入到第 3 行下面的新行。
:1,9w! " 選中 1~9 行執行命令,但命令的執行結果不會寫入到檔案。
實用命令
:%!sort