Vim編輯器的詳細用法
阿新 • • 發佈:2020-08-22
vim編輯器是Linux系統自帶的編輯器,其操作較一般的編輯器要複雜許多,但熟練運用vim會極大地提升Linux系統下編輯文字的速度。看完本文趕緊去試下吧!
vim模式介紹
vim有三種模式,分別為命令模式(command mode),編輯模式(insert mode)及末行模式(last line mode)。我們在剛進入vim編輯器時為命令模式,在按下a時會進入編輯模式,同時螢幕的左下角會顯示INSERT,此時就可以輸入你想要的文字。在完成輸入操作後,按下Esc鍵會退回到命令模式,此時按下 : 就會進入末行模式,其實就是vim的命令列模式,在此模式按下wq就可以儲存檔案並退出了。
{% note info %}
下文中命令前出現 :
{% endnote %}
vim的基本操作
開啟檔案
開啟單個檔案或者新建單個檔案:
vim FILENAME
不儲存對文章的改動重新編輯檔案 = :q!+vim FILENAME
:
:e!
編輯檔案1時不儲存退出編輯檔案2:
:open FILENAME2
多檔案
:sp file 新建視窗開啟 filename 並水平分割視窗 :vsp file 新緩視窗開啟 filename 並垂直分割視窗 Ctrl + ws 水平分割視窗 Ctrl + wv 垂直分割視窗 Ctrl + ww 在視窗間切換 Ctrl + wq 關閉視窗 Ctrl + wh 切換到右側視窗 Ctrl + wl 切換到左側視窗 Ctrl + wj 切換到下側視窗 Ctrl + wk 切換到上側視窗 :qall! 不儲存退出所有視窗
插入
在命令模式下鍵入a,A,i,I,o,O均會使vim進入編輯模式,區別在於:
i 在當前位置的前插入新的字元
I 在當前行的行首插入新的字元
a 在當前位置的後面插入新的字元
A 在當前行的行尾插入新的字元
o 在當前行的下面插入一個新行
O 在當前行的上面插入一個新行
查詢
/pattern 向下搜尋pattern ?pattern 向上搜尋pattern vim中搜索特殊字元需要進行轉義包括 . \ * [] / ? ~ $ % ^ *等 游標選擇某個單詞,按住Shift+3,即可把所有的單詞標註出來 n 切換下一個搜尋結果 N 切換上一個搜尋結果 :noh 取消搜尋結果的高亮顯示
替換命令
:s/old/new 用new去替換當前行匹配到的第一個old
:%s/old/new 用new去替換全文各行的第一個old
:s/old/new/g 用new替換當前行的所有old
:s/old/new/g 將全文中的old用new替換
此外還可以指定行數進行替換:
如要替換11-23行所有的old,可以鍵入如下指令:
:11,23 s/old/new/g
若要在23-35行所有行前加4個空格以示縮排,可以鍵入如下指令:
:23,35 s/^/ /g
撤銷與重做
u 撤銷上一步操作
Ctrl+r 重做,即對撤銷的撤銷
刪除
x 刪除當前字元,即游標在哪個位置就刪除那個位置的字元
5x 從當前游標開始往後刪除5個字元
X 刪除當前字元前的一個字元
5X 從當前游標往前刪除5個字元(不包括當前字元)
d$ 刪除當前字元至行尾所有單詞
d^ 刪除當前字元至行首前的所有字元(不包括當前字元)
dw 刪除當前字元至單詞尾部
daw 刪除游標所在的單詞
dd 刪除游標所在行的整行
ndd 刪除游標所在行及其下共5行
S 刪除當前行並進入編輯模式
dgg 刪除當前行至文件首部的所有行 效果等同於末行模式下的:1,.d
dG 刪除當前行至文件尾部的所有行 效果等同於末行模式下的:.,$d($表示最後一行)
末行模式下還可以進行更加複雜的操作而不需要考慮游標的位置
如刪除第11行至34行的操作就可以這樣
:11,34d
複製貼上
yy 複製游標所在的當前行
5yy 複製游標及下面共5行
yG 複製當前行至文件開始的所有行
ygg 複製當前行至文件結束的所有行
yw 複製當前游標所在處的一個單詞
J 將下一行內容移動到本行的末尾
同樣的在末行模式下也可以跨行復制,如複製11至34行
:11,34y
把10至23行的內容移動到56行之後,可以使用
:10,23 m 56
使用p把dd刪除或yy複製的內容粘貼出來
p 在當前行的下面貼上
P 在當前行的上面貼上
快速操作:
ddp 快速交換當前行及下一行
yyp 快速複製當前行並貼上
儲存及退出
:wq 儲存並退出
:x 儲存並退出
:q 直接退出
:q! 強制退出不做更改
zz 儲存並退出
移動
移動操作並不常用,畢竟↑↓←→鍵就可以完成而且無需記憶
h 游標向←移動1個字元 10h 游標向←移動10個字元
l 游標向→移動1個字元 10l 游標向→移動10個字元
j 游標向↑移動1個字元 10j 游標向↑移動10個字元
k 游標向↓移動1個字元 10k 游標向↓移動10個字元
gg 移動到文件頭部,等同於:1
G 移動到文件尾部,等同於:$
當然你也可以在開啟檔案時就指定行數,比如想開啟檔案時直接到最後一行,可以使用
vim + FILENAME
開啟檔案直接到哪一行
vim +n FILENAME #開啟檔案直接到第n行,而不用開啟檔案後在移動游標
視覺化
v 進入視覺化,左下角顯示視覺化或者VISUAL
V 進入可視行,左下角顯示可視行或者VISUAL LINE
Ctrl+v 進入可視塊,左下角顯示可視塊或者VISUAL BLOCK
上述選擇使用上下左右鍵,非滑鼠
d 刪除選中文字
y 複製選中文字
gu 選中區域轉為小寫
gU 選中區域轉為大寫
g~ 大小寫互調
> 向右縮排一個單位
< 向左縮排一個單位
其他操作
:!COMMAND執行命令,如:!ls會列出本文件當前目錄的所有檔案而不用退出文件
:suspend或Crtl-Z掛起vim,回到shell,可以使用fg返回vim編輯器
:set nu 設定行號,可將此命令寫入vim的配置檔案/etc/vimrc或者~/.vimrc,就可以保證每次開啟都顯示行數
:set ff=unix 設定文件的dos編碼為unix風格,在vim開啟亂碼時可以嘗試使用該命令修正
:set syntax=? 設定文件的語言為?,如c,python,sh
:set syntax獲得目前的文件語言
:set paste 解決複製文字來時縮排亂的問題
複雜註釋
:3,10 s/^/#/g 註釋3至5行
:3,10 s/^#//g 取消註釋3至10行
:1,$ s/^/#/g 註釋整個文件
:1,$ s/^#//g 取消註釋整個文件 #全選整篇文件也可使用%來替換