vim常用快捷鍵

vim常用快捷鍵

常用vim命令

命令列模式/ex模式的命令

1)vim與終端間的切換
:! 切換到terminal下執行命令並顯示結果,按回車返回vim
:sh 切換到命令行,按Ctrl+d返回vim
:x 保存並退出,相當於:wq
ZZ 保存並退出,相當於:wq

2)設置行號:set nu/set number
顯示命令 set showcmd

命令模式命令

1)移動光標命令
h或<– 光標左移一個字符
l或–> 光標右移一個字符
j或向下 光標下移一行
k或向上 光標上移一行

2)翻頁命令
Ctrl+b 向上移動一頁
Ctrl+f 向下移動一頁
10Ctrl+f 向下移動10頁
Ctrl+d 向下移動半頁
Ctrl+u 向上移動半頁

3)按行移動
gg 移動到文檔的第一行,相當於1G
G 移動到文檔的最後一行
nG 移動到文檔的第n行,配合set nu使用
nh 光標向前移動n個字符
n 光標向後移動n個字符(等價於nl)
nk 光標上移n行
n 光標下移n行(等價於nj)
0或^或 光標移至該行行首
$或 光標移至該行行尾
:nEnter 在ex模式下輸入行號,可直接定位到目標行

編輯命令:

1)刪除命令
x 刪除光標所在的字符
X 向前刪除一個字符
nx 連續向後刪除n個字符
dd 刪除光標所在行
d0 刪除光標所在處至行首的字符
d2)yyy0y 複製光標所在處至行尾的字符
p 將複製的內容粘貼到光標的後面/下一行
P 將複製的內容粘貼到光標的前面/上一行
注意:當刪除/複製一行的一部分時,p和P會把文本放在左側或右側;當刪除/複製幾行內容時,p和P會把文本放在下面或上面;
J 將光標所在行和下一行合併爲一行

u       恢復上一次操作
U       取消在當前行上執行的所有操作
Ctrl+r  重做上一次操作

在一般模式切換到編輯模式可以使用的常用命令:
i 從目前光標所在處插入
I 從目前所在行中第一個非空格符處開始插入
a 從目前光標所在處的下一個字符出插入
A 在光標所在行的最後一個字符處插入
r 替換光標所在處的字符
R 一直替換光標所在的字符,知道按下Esc爲止
s 刪除光標所在字符,進入插入模式
3s 刪除當前光標及其後面的2個字符,並進入插入模式
S 刪除光標所在行,進入插入模式

“a3yy 將光標所在位置的三行復制到a剪貼板
“ap 將a剪貼板中的內容粘貼到當前位置

:n1,n2s/word1/word2/g //n1和n2爲數字。在第n1和n2行之間尋找word1字符串,並將該字符串替換爲word2。
:1,s/word1/word2/g//word1word2:1, s/word1/wod2/gc //從第一行到最後一行查找word1字符串,並將該字符串替換爲字符串word2。且在替換前顯示提示符給用戶確認是否需要替換

:e! 強行回到文件打開時的狀態(取消所有的改變)

03.1 單詞間移動

w 光標向下一個單詞移動(光標定位在第一個字母,標點也當作一個單詞),當光標在行尾時,按下w將移動到下一行的行首。
b 光標向上一個單詞移動(與w方向相反)。當光標在行首時,按下b將移動到上一行的行尾。
e 光標向下一個單詞移動(光標定位在末尾的字母)
ge 光標向上一個單詞移動(與e方向相反)

將上面的命令改爲大寫,作用是跳過字母間的的非字母字符,在空格/Tab間的字符間跳轉。
W
B
E
gE

3.2 行首行尾定位

^/home/0 光標移動到所在行的行首
/end1 光標移動到當前行的行尾
23 光標移動到當前行的下面第二行

03.3 根據單個字符定位光標命令(光標所在行)
f? 向後查找字符?並定位到此(?代表一個字符,f代表find)
3f? 向後定位到第三個?字符
F? 同f?,方向相反

t? (t-to)向後定位字符?,但光標停留在定位字符的前面的一個字符
T? 向前定位字符?,但光標停留在定位字符的後面的一個字符
–>使用;可以重複執行上述命令(向後)
–>使用,(同[;],但方向相反)
提示輸入錯誤時,可按下Esc取消操作

3.4 成對符號匹配,如(),{},[]。

% 當光標定位在某個作括號上時,按下%時,就會定位到與之匹配的另一個括號上。重複按,光標就會在這兩個括號間跳轉。

3.5 行定位

30G 定位到第30行
gg 定位到第一行
G 定位到最後一行
50% 定位到文件的一半處
90% 定位到文件的大約90%處
H 定位到該頁面的頭部(home)
M 定位到該頁面的總部(middle)
L 定位到該頁面的末尾(Last)

3.6 顯示當前光標的位置信息

Ctrl+g
:set number 顯示行號
:set nonumber 不顯示行號
:set ruler 顯示光標所在的行列信息

3.7 滾動屏幕

Ctrl+d 屏幕向上滾動半頁
Ctrl+u 屏幕向下滾動半頁
Ctrl+e 屏幕向上滾動一行
Ctrl+y 屏幕向下滾動一行
zt 將光標所在行放置到該頁的頂部
zz 將光標所在行放置到該頁的中部
zb 將光標所在行放置到該頁的底部

3.8 簡單查找

/keyword 正向查找
?keyword 方向查找
n(next)繼續上次查找
N方向進行查找
設置查找時忽略大小寫 :set ignorecase
查找時可以使用上下鍵進行歷史的查找
取詞查找:將光標移動到要截取的詞上,然後按下*,vim將把這個詞作爲關鍵字查找。
#功能相似,只是方向相反
\<僅在單詞的開頭進行匹配,>僅在單詞的末尾進行匹配
/\

4.1

d3w 刪除光標後的3個單詞(包括光標所在單詞,並且刪除最後一個單詞後的空白)
d3e 刪除光標後的3個單詞(包括光標所在單詞,但是不刪除最後一個單詞後的空白)

4.2 改變文字內容c(change)

c2w[content] 將光標及其後的1個單詞刪除,並進入插入模式
cc 刪除光標所在行,並進入插入模式
cx(dl,)X(dh,D(d ,刪除當前至行尾的字符)
C (等價於c$,改變當前至行尾的字符)
s (等價於cl,改變一個字符)
S (等價於cc,改變一行)

在什麼地方放置數字
3dw 一次刪除一個單詞,執行三次
d3w 刪除3個單詞
3d2w 一次刪除2個單詞,執行3次

r 替換光標所在字符,不需要按Esc
cl/s 替換光標所在字符,需要按下Esc
5rx 將光標及其後的4個字符替換爲x
rEnter 將光標所在字符替換爲回車(從光標處斷行)
4rEnter 替換4個字符爲回車

. 等價於(n),重複上次操作
df> 從當前位置刪除到>

4.4 visul模式

v 選中字符模式
V 行選中模式
ve 選中一個字符串
Vjj 選中兩行

Ctrl+v 塊選擇(定位到塊的左上角,按下Ctrl+v,然後將光標移動到塊的右下角即可)
當選中一個塊後,可以使用o,O改變區域左右的邊界

4.5 移動文本

使用d,x等命令刪除文本時,內容都會被存儲。
移動文本的方法:先刪除要移動的文本,再在要放置的位置粘貼即可。

交換兩個字符
例如:本來是想輸入the,去輸成了teh。將光標移動到e上,然後按下xp,即可交換e和h.

4.6 拷貝文本

yw 複製一個單詞(包括單詞後的空白符)
y2w 複製兩個單詞
ye 複製一個單詞(不包括單詞後的空白符)
yy/Y 複製一行
y$ 複製到行尾

4.7 使用剪貼板

“*yy 複製一行到剪貼板
“*p 將剪貼板的內容粘貼回來

4.8 文本對象

daw 刪除一個內含單詞(aw,a word)
cis 刪除一個句子,並進入插入模式。(is,Inner Sentence)
das 刪除一個內含句子

4.9 替換模式

R 替換光標以後的字符,按下Esc結束

4.10 結論

x 刪除光標下的字符(“dl”的縮寫)
X 刪除光標前的字符(“dh”的縮寫)
D 從當前位置刪除到行尾(“d$”的縮寫)
dw 從當前位置刪除到下一個單詞開頭
d( 從當前位置刪除到當前句子的開頭
d) 從當前位置刪除到當前句子的結尾
diw 刪除光標上的單詞(不包括空白字符)
daw 刪除光標上的單詞(包括空白字符)
dG 刪除到文件末尾
dgg 刪除到文件首

如果你將”d”,改爲”c”,就會變爲修改命令(刪除相應字符,進入插入模式)。而改爲”y”,則變爲拷貝命令。其他命令類似。
~ 修改光標下字符的大小寫,並移動到下一個字符。

7.編輯多個文件

7.1 編輯另一個文件

:edit foo.txt //在編輯一個文件時打開foo.txt。vim會關閉當前文件而打開這個新文件。如果當前文件沒有保存,vim會提示你保存。
:edit! foo.txt //強制vim放棄當前修改並編輯新的文件。(也可以先保存當前文件在編輯新文件)
:hide edit foo.txt //如果你想編輯另一個文件,但有不想保存當前文件,可以隱藏它。

7.2 文件列表

可以在啓動vim時打開許多文件。例如
vim a.c b.c d.c(在文件間切換時,vim按照打開時的順序排列)
:n[ext] //編輯下一個文件
:wnext //保存當前文件再切換的下一個文件
:N/previous //編輯上一個文件
:wprevious //保存當前文件再切換的上一個文件
:first //移動到第一個文件
:last //移動到最後一個文件
:2next //向後跳兩個文件
:2previous //向前跳兩個文件
:file //
:files //列出目前vim打開的所有的文件
:set autowrite //每次都將修改存盤

7.3 從一個文件跳轉到另一個文件

Ctrl+^ 當使用:next或:previous時,該快捷鍵可以在這兩個文件間切換

7.4 文件備份

:set backup
:set backup=.bak //修改備份文件的擴展名爲.bak
:set nobackup //不進行文件備份

7.5 文件間拷貝文本

1)編輯一個你要拷貝的文本文件,把光標移動到要拷貝的文本的開始處,用"v"命令啓動可視模式,然後把光標移動到要拷貝文本的結尾處,輸入"y"拷貝文本。
例如,要拷貝上面這段文字,你可以執行:
:edit thisfile
/1)編輯
vjj$y
現在編輯要粘貼的文本的文本。光標移到你要插入文本的地方。用"p"命令把文本粘貼到那裏:
:edit otherfile
/There
p

使用寄存器

"fyas //拷貝一個句子到寄存器f,"yas"表示拷貝一個句子,"f告訴vim把文本拷貝到寄存器f(f表示First)
"l3y //拷貝3行到寄存l(l表示line)
Ctrl+V jjww "by //拷貝文本列塊到寄存器b,Ctrl+V開啓可視模式,"jjww"爲選中文本命令

編輯另一個文件,並移動到要插入文本的地方,例如要插入f寄存器的內容:
"fp

"wdaw   //將刪除的單詞存放在w寄存器中
:write >>logfile //將當前文件的內容寫入到目標文件的末尾。

7.6 顯示文件
vim -R file     //以只讀模式啓動vim,但是可以強制寫入
vim -M file        //使vim工作在只讀模式,任何對文件的修改都會失敗
用戶可以通過以下命令去掉這層保護:
:set modifiable
:set write

7.7 修改文件名

編輯一個新的文件的快捷方法是使用一個現存的文件。例如你已經有一個copy.c文件,先打開它:
:edit copy.c
編輯該文件,使用一個新的文件名保存該文件:
:saveas newfile.c
vim會用給定的名稱保存文件,並開始編輯文件。這樣下一次你用":write"保存修改時,
被寫入的就是"newfile.c",而"copy.c"不會被改變。

8.分割窗口

8.1 分割窗口

最簡單的命令是:
:split   //水平分割  
:vsplit //垂直分割
ctrl-w w    在窗口間跳轉
CTRL-W h    跳轉到左邊的窗口
CTRL-W j    跳轉到下面的窗口
CTRL-W k    跳轉到上面的窗口
CTRL-W l    跳轉到右邊的窗口

CTRL-W H    跳轉到最左邊的窗口
CTRL-W J    跳轉到最下面的窗口
CTRL-W K    跳轉到最上面的窗口
CTRL-W L    跳轉到最右邊的窗口

:qall   表示 "quit all" (全部退出)
:wall   表示 "write all" (全部保存)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章