原文地址:https://www.jeremyjone.com/460/ ,轉載請註明
雖然現在各種IDE,編輯器很好用,我個人也很喜歡使用VS Code,但有時候還是離不開Vim,比如終端。。。這個真的是。。。
自己總結了一下Vim使用方式,首發於 → 幕布 ← ,有興趣的同學可以收藏,同時也免費給幕布打一波廣告,真心好用。
內容同時也更新在我自己的 → 工具箱 ← ,這個剛開始整理,我會慢慢把我不同地方的文檔整理到一起,這算是給自己的一波強勢廣告~。
好吧,話不多說,把文檔內容粘貼過來。
Vim 使用說明
打開文件
vim filename
打開文件
vim -R filename
只讀打開文件
vim -M filename
強制避免對文件進行修改打開文件
vim filename1 filename2 filename3
同時打開多個文件,但是隻顯示第一個文件內容
:next | :n
編輯下一個文件
:wnext | :wn
保存當前文件內容並且繼續編輯下一個文件
Ctrl+^
在兩個文件之間切換
vim -o filename1 filename2
爲每一個文件打開一個窗口
:args filename4 filename5 filename6
在不關閉vim的同時,重新定義文件列表
保存和退出
:w
保存
:q | :quit
退出
ZZ | :wq | :x
保存退出
ZQ | :q!
不保存直接退出
:edit filename | :e filename
編輯另一個文件
:e!
放棄當前文件所有修改並重新載入原始內容
:qall
放棄所有窗口的修改並退出
:wall
保存所有窗口的修改
:wqall
保存所有修改並退出
:w filename | :sav filename | :saveas filename
另存爲
:f filename | :file filename
將修改的版本另存爲新文件,同時不保存源文件的修改
:set autowrite
設置自動存盤
該命令在每個:next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、Ctrl+]、Ctrl+^命令時執行。
Visual模式
v
進入Visual模式,從光標當前位置開始,移動所經過的內容都會被選中,直到下一次v結束
V
進入Visual模式,從光標當前行首開始,移動所經過的行都會被選中,直到下一次V結束
Ctrl+v
從光標當前位置開始,選中光標起點和終點所構成的矩形區域,再按Ctrl+v結束
ggVG
快速全選,gg:轉到行首,V:選擇整行,G:轉到尾行
顯示設置
:args
顯示當前文件
:set number | :set nu!
顯示行號
:set nonumber | :set nonu!
不顯示行號
:set ruler
在Vim窗口右下角顯示當前光標位置
:set autoindent
自動縮進
:set hlsearch
查詢結果高亮
:set nohlsearch
取消查詢結果高亮
:split | :vsplit
分割窗口
Ctrl+w
切換當前活動窗口
Ctrl+w h
切換到左邊窗口
Ctrl+w j
切換到下邊窗口
Ctrl+w k
切換到上邊窗口
Ctrl+w i
切換到右邊窗口
Ctrl+w t
切換到頂部窗口
Ctrl+w b
切換到底部窗口
:close
關閉活動窗口,阻止關閉最後一個活動窗口
:only
關閉除當前活動窗口之外的所有窗口,修改過的窗口不會關閉
:set warp
自動換行
:set ignorecase
忽略大小寫
==
對當前行自動格式化
數字==
對當前行起的下面"數字"行進行格式化
gg=G
對整個文檔進行格式化
編輯
增加
i
在光標之前插入
支持數字:3i!,在光標之前插入三個"!"
I
在當前行首插入
支持數字:3I@,在行首插入三個"@"
a
在光標之後插入
支持數字:3a!,在光標之後插入三個"!"
A
在當前行尾插入
支持數字:3A@,在行尾插入三個"@"
o
在當前光標行之下插入空行
O
在當前光標行之上插入空行
刪除
d+位移命令
刪除從光標位置到位移處的內容
支持數字: d+2+方向鍵,剪切左右方向的兩個字符,剪切上下方向2行+當前行(共三行)的內容
- 3dw | d3w 刪除當前光標後面的3個單詞
- 3d2w 刪除2光標後面兩個單詞,執行3次,共刪除6個單詞
- 左: 剪切前一個字符
- 右: 剪切後一個字符
- 上: 剪切當前行和上一行
- 下: 剪切當前行和下一行
- Shift+左: 剪切至當前單詞首字符
- Shift+右: 剪切至下一個單詞首字符
- dw 刪除從當前位置到下一個單詞詞首
- db 刪除從當前位置到前一個單詞詞首
- diw 刪除光標所在的單詞,不包括空白字符
- daw 刪除當前光標所在單詞,包括之後的空白字符
- dG 刪除當前行至文件末尾的內容
- dgg 刪除當前行至文件行首的內容
dd
刪除當前光標整行,並將之後內容上移一行
D | d$
刪除到行尾
c+位移命令
刪除從光標處到位移處的內容,並進入編輯模式。具體參照 “d+位移命令”
C | c$
刪除光標處至行尾,並進入編輯模式
x | dl
刪除當前光標右邊的一個字符
支持數字:3x,刪除光標右邊三個字符
X | dh
刪除當前光標左邊的一個字符
支持數字:3X,刪除光標左邊三個字符
s | cl
刪除當前光標之後的一個字符並進入編輯模式
支持數字:3s,刪除光標右邊三個字符
S | cc
刪除當前整行,保留該空行並且保留縮進,進入編輯模式。
支持數字:3S,刪除當前行開始往下3行內容
J
刪除當前行的換行符,相當於將下一行內容上移至當前行末尾
複製和粘貼
d+位移命令
剪切。(不貼則用作刪除)
y
複製
具體操作同剪切(d)
+y
複製到系統剪貼板
yy
複製一行
支持數字:3yy,複製當前行與下面兩行
p
粘貼到光標之後
支持數字:3p,粘貼3次
P
粘貼到光標之前
支持數字:3P,粘貼3次
+p
從系統剪貼板粘貼
重複和撤銷
u
撤銷
支持數字,3u,撤銷3次
Ctrl+r | .
重做,"."需要在Normal模式下執行
支持數字,3 + Ctrl+R,重做三次
U
重做,一次撤銷對一行的操作,再次使用則會撤銷前一次的"U"操作
移動
方向鍵
移動
數字+方向鍵
移動
- 左:向左移動"數字"個字符
- 右:向右移動"數字"個字符
- 上:向上移動"數字"行
- 下:向下移動"數字"行
w | W
移動到下一單詞首字符
支持數字,3w,移動到後面3個單詞首字符
b | B
移動到前一單詞首字符
支持數字,3b,移動到前面3個單詞首字符
e | E
移動到下一個單詞末字符
支持數字,3e,移動到後面3個單詞末字符
$ | <END>鍵
移動到當前行末尾
支持數字,3$,移動到下3行(當前行爲第一行)末尾
0 | ^ | <HOME>鍵
移動到當前行首
不支持數字
G
移動到最後一行
數字+G
移動到指定行
gg
移動到第一行
ge
移動到前一單詞末字符
支持數字,3ge,移動到前面3個單詞末字符
數字+%
移動到文檔某一位置,如:50%,移動到文檔中間,90%,移動到文檔靠近尾部
:+數字
移動到文檔的某一行
H
移動到當前界面頂部
M
移動到當前畫面中部
L
移動到當前界面底部
(
移動到句首
)
移動到句尾
{
移動到段首
}
移動到段尾
Ctrl+o
光標跳轉到之前的位置
Ctrl+i
光標跳轉到之後的位置(在使用Ctrl+o之後有效)
標記
m+字符
設定標記,將當前光標處用指定字符作爲標記
````+字符```跳轉到指定標記,如果該字符標記位存在,則會跳轉,使用m設定標記
:marks
查看標記
``
如果使用了G進行跳轉,那麼該命令則會在當前位置和跳轉後的位置進行來回切換
##滾動屏幕
Ctrl+y
向上一行
Ctrl+e
向下一行
Ctrl+u
向上半屏
Ctrl+d
向下半屏
Ctrl+b
向上整屏
Ctrl+f
向下整屏
zt
把當前行置於屏幕頂端
zz
把當前行置於屏幕中央
zb
把當前行置於屏幕底端
查找和替換
f+字符
光標跳轉到當前行的下一個該字符
F+字符
光標跳轉到當前行的前一個該字符
t+字符
光標跳轉到當前行的下一個該字符的前一個字符
T+字符
光標跳轉到當前行的前一個該字符的前一個字符
;
用來重複 f | F | t | T 這四個命令
%
跳轉到匹配成對的括號,包括小括號,中括號,大括號
/ | ? +字符串
搜索一個字符串,
/
用於向後查找
?
用於向前查找
n
用於該目標字符串的下一個位置(與 / | ? 指定方向同向)
支持數字,3n,該目標字符串在當前查找方向同向的第三次出現的位置
N
用於該目標字符串的上一個位置(與 / | ? 指定方向反向)
支持數字,3N,該目標字符串在當前查找方向反向的第三次出現的位置
\<
單詞開始
\>
單詞結尾
/<the\>,這樣只會搜索單詞 "the",而不會搜索到類似 "there"、"them"
$
匹配一行結尾
.
匹配任意字符
\
匹配特殊字符
^
匹配一行開頭
*
選取光標當前所在單詞向後進行搜索
支持數字,3*,該單詞第三次出現的位置
#
選取光標當前所在單詞向前進行搜索
支持數字,3#,該單詞第三次出現的位置
替換文本
:s/文本1/文本2/
用文本2替換第一次出現的文本1
:s/文本1/文本2/g
用文本2替換當前行所有匹配到的文本1
:%s/文本1/文本2/g
用文本2替換整個文件中所有匹配到的文本1
:%s/文本1/文本2/gc
用文本2替換整個文件中所有匹配到的文本1,並且每次替換時確認
r
等待鍵入下一個字符,用於替換當前光標處的字符
支持數字,3r+鍵入字符,當前光標處開始,往後3個字符替換爲鍵入的字符,如果替換爲換行符,則只會替換爲一個