vim是一個(gè)Unix文本編輯器,它以快速高效而聞名,是在終端中運(yùn)行的小應(yīng)用程序(當(dāng)然也有圖形界面),它最主要的特點(diǎn)是完全可以通過(guò)鍵盤(pán)控制,而不需要菜單欄或鼠標(biāo)。
例如,將文本插入到文件中,按i鍵并輸入。瀏覽文本或輸入命令,在鍵盤(pán)上按Esc,然后按下對(duì)應(yīng)的任何鍵或組合鍵。對(duì)于大多數(shù)人來(lái)說(shuō),是一種非常不尋常的文本編輯方式,但這是基于Linux環(huán)境工作的開(kāi)發(fā)者編輯配置文件、更改腳本、編寫(xiě)代碼等操作的主流方式。
本文將介紹一些必要的基本命令,以供大家很快很容易地掌握vim編輯器。建議初學(xué)者在使用中進(jìn)行學(xué)習(xí),而不是只看不動(dòng)手。不實(shí)戰(zhàn)操作,那你可能很快忘記這些命令。
使用vim打開(kāi)文件后,一般會(huì)用到三種模式:命令模式(command mode)、輸入模式(insert mode)和底行命令模式(last line mode)。
剛啟動(dòng)vim時(shí),默認(rèn)進(jìn)入命令模式。這時(shí)候,我們敲打鍵盤(pán)的字母會(huì)被識(shí)別為不同的命令。
如方向鍵h、j、k、l;輸入鍵i、a、o,切換到輸入模式;
冒號(hào)鍵:,切換到底行命令模式。 進(jìn)入輸入模式,可以任意的碼入字母、符號(hào),按esc鍵退出到命令模式。
在底行命令模式,可以輸入單個(gè)或者多個(gè)命令,按enter鍵結(jié)束運(yùn)行。
1、vim的進(jìn)入和退出:vi、vim、:q、:q!、:wq 在terminal中直接敲vi或vim打開(kāi)文本 :q退出文件 :q!強(qiáng)制退出文件,丟棄你所做的任何改動(dòng) :wq 保存修改,然后退出文件
2、移動(dòng)光標(biāo):h、j、k、l鍵 h左移、l右移、j下移、k上移,熟練使用hjkl鍵,習(xí)慣之后我們能很快地在屏幕四處移動(dòng)光標(biāo)。
3、插入、刪除和撤銷(xiāo):i、A、x、u鍵、ctrl+r 在command模式下:按下i鍵可以進(jìn)入insert模式,在光標(biāo)后插入文字,輸入完成按esc鍵(A鍵,光標(biāo)移動(dòng)到本行末輸入);按下x鍵可以刪除光標(biāo)所在位置的字符;按下u鍵可以撤銷(xiāo)操作,回到上一步。ctrl+r撤銷(xiāo)掉撤銷(xiāo)命令。 按下esc鍵會(huì)回到command模式或者撤銷(xiāo)一個(gè)不想輸入或部分完整的命令。
4、刪除類(lèi)命令:dw、d$、dd dw 從光標(biāo)處刪除至一個(gè)單詞的末尾 d$ 從光標(biāo)處刪除至本行末尾 dd刪除光標(biāo)所在行
5、在動(dòng)作前輸入數(shù)字會(huì)使操作重復(fù)那么多次 3dd執(zhí)行三次光標(biāo)所在行,即往下刪除三行 2w
使光標(biāo)向前移動(dòng)兩個(gè)單詞 0
移動(dòng)到光標(biāo)的行首
6、關(guān)于定位和文件狀態(tài) gg
跳到文件第一行 G / shift+g
跳到文件最后一行 ctrl+g
顯示當(dāng)前編輯文件名和文件中光標(biāo)位置 gf
進(jìn)入光標(biāo)所在位置路徑的文件
7、關(guān)于搜索命令 /
加上字符串可以用于在當(dāng)前文件中查找該字符串 ?用于反向查找
例如:/error <回車(chē)> 即可在文件中查找error n鍵向下繼續(xù)搜索,N鍵或shift+n鍵向上繼續(xù)搜索(shift+小寫(xiě)=大寫(xiě))
8、替換命令 :s/old/new/gg是全局進(jìn)行匹配 多種操作需要多加學(xué)習(xí)應(yīng)用
9、在vim內(nèi)執(zhí)行外部命令 輸入 :!然后輸入外部命令即可執(zhí)行該外部命令 所有的 : 命令都必須以敲回車(chē)鍵結(jié)束
10、使用操作符y復(fù)制文本,使用p粘貼文本
配合可視模式使用 多行操作是經(jīng)常會(huì)用到的,切記!
11、set設(shè)置一些選項(xiàng) :set xxx 可以設(shè)置 xxx 選項(xiàng)。一些有用的選項(xiàng)如下: 'ic' 'ignorecase' 查找時(shí)忽略字母大小寫(xiě) 'is' 'incsearch' 查找短語(yǔ)時(shí)顯示部分匹配 'hls' 'hlsearch' 高亮顯示所有的匹配短語(yǔ)
12、獲取在線(xiàn)系統(tǒng)幫助
如下三種方法: - 按下 鍵 (如果鍵盤(pán)上有的話(huà)) - 按下 鍵 (如果鍵盤(pán)上有的話(huà)) - 輸入 :help <回車(chē)>
13、啟用更多的vim的特性
Vim 的功能特性要比 Vi 多得多,但其中大部分都缺省沒(méi)有啟用。為了使用更多的特性,需要?jiǎng)?chuàng)建一個(gè) vimrc 文件。
1. 開(kāi)始編輯 vimrc 文件,具體命令取決于所用的操作系統(tǒng): :edit ~/.vimrc
這是 Unix 系統(tǒng)所使用的命令 :edit $VIM/_vimrc
這是 MS-Windows 系統(tǒng)所使用的命令
2. 接著讀取 vimrc 示例文件的內(nèi)容: :r $VIMRUNTIME/vimrc_example.vim
3. 保存文件,命令為: :write 下次啟動(dòng) Vim 時(shí),編輯器就會(huì)有了語(yǔ)法高亮的功能。
可以把喜歡的各種設(shè)置添加到這個(gè) vimrc 文件中。
要了解更多信息請(qǐng)輸入 :help vimrc-intro
14、使用鍵進(jìn)行命令行補(bǔ)全
補(bǔ)全對(duì)于許多命令都有效,當(dāng)輸入:命令時(shí),tab鍵可以匹配補(bǔ)全。
15、vim自帶了一個(gè)教程說(shuō)明,我們可以直接輸入vimtutor,打開(kāi)教程做相應(yīng)的練習(xí)即可。
全局
:h[elp] 關(guān)鍵字- 打開(kāi)關(guān)鍵字幫助
:sav[eas] 文件名- 另存為
:clo[se]- 關(guān)閉當(dāng)前窗口
:ter[minal]- 打開(kāi)一個(gè)shell窗口
K- 打開(kāi)光標(biāo)所在單詞的man頁(yè)面
移動(dòng)光標(biāo)
h- 左移光標(biāo)
j- 下移光標(biāo)
k- 上移光標(biāo)
l- 右移光標(biāo)
H- 移動(dòng)到當(dāng)前頁(yè)面頂部
M- 移動(dòng)到當(dāng)前頁(yè)面中間
L- 移動(dòng)到當(dāng)前頁(yè)面底部
w- 移動(dòng)到下個(gè)單詞開(kāi)頭
W- 移動(dòng)到下個(gè)單詞開(kāi)頭(單詞含標(biāo)點(diǎn))
e- 移動(dòng)到下個(gè)單詞結(jié)尾
E- 移動(dòng)到下個(gè)單詞結(jié)尾(單詞含標(biāo)點(diǎn))
b- 移動(dòng)到上個(gè)單詞開(kāi)頭
B- 移動(dòng)到上個(gè)單詞開(kāi)頭(單詞含標(biāo)點(diǎn))
ge- 移動(dòng)到上個(gè)單詞結(jié)尾
gE- 移動(dòng)到上個(gè)單詞結(jié)尾(單詞含標(biāo)點(diǎn))
%- 跳轉(zhuǎn)到配對(duì)的符號(hào)(默認(rèn)支持的配對(duì)符號(hào)組::'()', '{}', '[]' - 在vim中使用:h matchpairs獲得更多信息)
0- 移動(dòng)到行首
^- 移動(dòng)到行首的非空白符
$- 移動(dòng)到行尾
g_- 移動(dòng)到行內(nèi)最后一個(gè)非空白符
gg- 移動(dòng)到文件第一行
G- 移動(dòng)到文件最后一行
5ggor5G-移動(dòng)到第五行
gd- 跳轉(zhuǎn)到局部定義
gD- 跳轉(zhuǎn)到全局定義
fx- 移動(dòng)到字符 x 下次出現(xiàn)的位置
tx- 移動(dòng)到字符 x 下次出現(xiàn)的位置的前一個(gè)字符
Fx- 移動(dòng)到字符 x 上次出現(xiàn)的位置
Tx- 移動(dòng)到字符 x 上次出現(xiàn)的位置的后一個(gè)字符
;- 重復(fù)之前的f、t、F、T操作
,- 反向重復(fù)之前的f、t、F、T操作
}- 移動(dòng)到下一個(gè)段落(當(dāng)編輯代碼時(shí)則為函數(shù)/代碼塊)
{- 移動(dòng)到上一個(gè)段落(當(dāng)編輯代碼時(shí)則為函數(shù)/代碼塊)
zz- 移動(dòng)屏幕使光標(biāo)居中
Ctrl+e-向下移動(dòng)屏幕一行(保持光標(biāo)不動(dòng))
Ctrl+y-向上移動(dòng)屏幕一行(保持光標(biāo)不動(dòng))
Ctrl+b- 向上滾動(dòng)一屏
Ctrl+f- 向下滾動(dòng)一屏
Ctrl+d- 向下滾動(dòng)半屏
Ctrl+u- 向上滾動(dòng)半屏
插入模式 - 插入/追加文本
i- 從光標(biāo)前開(kāi)始插入字符
I- 從行首開(kāi)始插入字符
a- 從光標(biāo)后開(kāi)始插入字符
A- 從行尾開(kāi)始插入字符
o- 在當(dāng)前行之下另起一行, 開(kāi)始插入字符
O- 在當(dāng)前行之上另起一行, 開(kāi)始插入字符
ea- 從當(dāng)前單詞末尾開(kāi)始插入
Ctrl+h-在插入模式下,刪除光標(biāo)前的字符
Ctrl+w-在插入模式下,刪除光標(biāo)前的單詞
Ctrl+j-在插入模式下,另起一行
Ctrl+t-在插入模式下,向右縮進(jìn),寬度由 shiftwidth 控制
Ctrl+d-在插入模式下,向左縮進(jìn),寬度由 shiftwidth 控制
Ctrl+n-在插入模式下,在光標(biāo)之前插入自動(dòng)補(bǔ)全的下一個(gè)匹配項(xiàng)
Ctrl+p-在插入模式下,在光標(biāo)之前插入自動(dòng)補(bǔ)全的上一個(gè)匹配項(xiàng)
Ctrl+rx- 插入寄存器x 的內(nèi)容
Ctrl + ox -暫時(shí)進(jìn)入正常模式以發(fā)出一個(gè)正常模式命令 x。
Esc- 退出插入模式
編輯文本
r- 替換當(dāng)前字符
R-在ESC按下之前,替換多個(gè)字符
J- 將下一行合并到當(dāng)前行,并在兩部分文本之間插入一個(gè)空格
gJ- 將下一行合并到當(dāng)前行,兩部分文本之間不含空格
gwip- 重新調(diào)整段落
g~- switch case up tomotion
gu- 小寫(xiě)操作修飾符
gU- 大寫(xiě)操作修飾符
cc- 將光標(biāo)所在的行刪除, 然后進(jìn)入插入模式
C- 將光標(biāo)處到行尾刪除, 然后進(jìn)入插入模式
c$- 將光標(biāo)處到行尾刪除, 然后進(jìn)入插入模式
ciw- 將光標(biāo)所在的單詞刪除, 然后進(jìn)入插入模式
cworce-從光標(biāo)位置開(kāi)始, 修改單詞
s- 刪除當(dāng)前字符, 然后進(jìn)入插入模式
S- 清空當(dāng)前行, 然后進(jìn)入插入模式 (同cc)
xp- 當(dāng)前字符后移
u- 撤銷(xiāo)
U - 撤銷(xiāo)上一次的改動(dòng)行的操作
Ctrl + r -重做(取消撤銷(xiāo))
.- 再次執(zhí)行上個(gè)命令
選擇文本(可視化模式)
v- 進(jìn)入可視化模式, 移動(dòng)光標(biāo)高亮選擇, 然后可以對(duì)選擇的文本執(zhí)行命令
V - 進(jìn)入可視化模式(行粒度選擇)
o- 切換光標(biāo)到選擇區(qū)開(kāi)頭/結(jié)尾
Ctrl+v-進(jìn)入可視化模式(矩陣選擇)
O- 切換光標(biāo)到選擇區(qū)的角
aw- 選擇當(dāng)前單詞
ab- 選擇被 () 包裹的區(qū)域(含括號(hào))
aB- 選擇被 {} 包裹的區(qū)域(含花括號(hào))
at- 選擇被 <>標(biāo)簽包裹的區(qū)域(含<>標(biāo)簽)
ib- 選擇被 () 包裹的區(qū)域(不含括號(hào))
iB- 選擇被 {} 包裹的區(qū)域(不含花括號(hào))
it- 選擇被 <>標(biāo)簽包裹的區(qū)域(不含<>標(biāo)簽)
Esc - 退出可視化模式
可視化模式命令
>- 向右縮進(jìn)
- 向左縮進(jìn)
y- 復(fù)制
d- 剪切
~- 大小寫(xiě)切換
u- 將選中文本轉(zhuǎn)換為小寫(xiě)
U- 將選中文本轉(zhuǎn)換為大寫(xiě)
剪切, 復(fù)制, 粘貼
yy- 復(fù)制當(dāng)前行
2yy - 復(fù)制 2 行
yw- 復(fù)制當(dāng)前單詞
yiw- 復(fù)制光標(biāo)處的單詞
yaw- 復(fù)制光標(biāo)處的單詞及其前后的空格
y$- 復(fù)制, 從光標(biāo)位置到行末
p- 在光標(biāo)后粘貼
P- 在光標(biāo)前粘貼
dd- 剪切當(dāng)前行
2dd- 剪切 2 行
dw- 剪切當(dāng)前單詞
diw- 刪除光標(biāo)處的單詞
daw- 刪除光標(biāo)處的單詞及其前后的空格
D- 剪切, 從光標(biāo)位置到行末
d$- 剪切, 從光標(biāo)位置到行末 (同D)
x- 剪切當(dāng)前字符
文字縮進(jìn)
>>- 將當(dāng)前行向右縮進(jìn),寬度由 shiftwidth 控制
<- 將當(dāng)前行向左縮進(jìn),寬度由shiftwidth 控制
>%- 向右縮進(jìn) () 或 {} 內(nèi)的區(qū)域(光標(biāo)需置于括號(hào)上)
>ib- 向右縮進(jìn) () 內(nèi)的區(qū)域
>at- 向右縮進(jìn) <>標(biāo)簽內(nèi)的區(qū)域
3==- 自動(dòng)縮進(jìn) 3 行
=%- 自動(dòng)縮進(jìn) () 或 {} 內(nèi)的區(qū)域(光標(biāo)需置于括號(hào)上)
=iB- 自動(dòng)縮進(jìn) {} 內(nèi)的區(qū)域(光標(biāo)需置于括號(hào)上)
gg=G- 自動(dòng)縮進(jìn)整個(gè)緩沖區(qū)
]p- 粘貼并調(diào)整縮進(jìn)至當(dāng)前行
退出
:w- 保存
:w !sudo tee %- 使用 sudo 保存當(dāng)前文件
:wqor:xorZZ-保存并退出
:q- 退出(修改未保存時(shí)警告)
:q!orZQ-不保存強(qiáng)制退出
:wqa - 保存所有標(biāo)簽頁(yè)并全部退出
查找/替換
/pattern-查找pattern
?pattern-向上查找pattern
n- 查找下一個(gè)
N- 查找上一個(gè)
:%s/old/new/g- 替換全部
:%s/old/new/gc- (逐個(gè))替換
:noh[lsearch]- 移除搜索結(jié)果的高亮顯示
多文件搜索
:vim[grep] /pattern/{`{file}`}- 在多個(gè)文件中搜索 pattern
:cn[ext]- 移動(dòng)至下一個(gè)
:cp[revious]- 移動(dòng)至上一個(gè)
:cope[n]- 打開(kāi)搜索結(jié)果列表
標(biāo)簽
:tabnewor:tabnew{page.words.file}- 在新標(biāo)簽中打開(kāi)文件
Ctrl+wT-將窗口變成標(biāo)簽
gtor:tabn[ext]-切換到下一個(gè)標(biāo)簽
gTor:tabp[revious]-切換到上一個(gè)標(biāo)簽
#gt- 切換到第# 個(gè)標(biāo)簽
:tabm[ove] #- 移動(dòng)標(biāo)簽到第# 位(下標(biāo)從 0 開(kāi)始)
:tabc[lose]- 關(guān)閉當(dāng)前標(biāo)簽
:tabo[nly]- 關(guān)閉其他標(biāo)簽
:tabdocommand - 在所有標(biāo)簽中執(zhí)行命令
多文件編輯
:e[dit] 文件名- 新建緩沖區(qū)打開(kāi)filename
:bn[ext]- 切換到下個(gè)緩沖區(qū)
:bp[revious]- 切換到上個(gè)緩沖區(qū)
:bd[elete]- 關(guān)閉緩沖區(qū)
:lsor:buffers-列出所有打開(kāi)的緩沖區(qū)
:sp[lit] 文件名- 新建緩沖區(qū)打開(kāi) filename 并水平分割窗口
:vs[plit] 文件名- 新緩沖區(qū)打開(kāi)filename 并垂直分割窗口
:vert[ical] ba[ll]- editall buffers as vertical windows
:tab ba[ll]- edit allbuffers as tabs
Ctrl+ws-水平分割窗口
Ctrl+wv-垂直分割窗口
Ctrl+ww-在窗口間切換
Ctrl+wq- 關(guān)閉窗口
Ctrl+wx- 將窗口切換到下一個(gè)窗口
Ctrl+w=-使所有窗口的高度和寬度相等
Ctrl+wh-切換到左側(cè)窗口
Ctrl+wl-切換到右側(cè)窗口
Ctrl+wj-切換到下側(cè)窗口
Ctrl+wk-切換到上側(cè)窗口
Ctrl+wH-使游標(biāo)所在視窗全高并移至最左 (最左垂直視窗)
Ctrl+wL-使游標(biāo)所在視窗全高并移至最右 (最右垂直視窗)
Ctrl+wJ-使游標(biāo)所在視窗全寬并移至最下 (最下水平視窗)
Ctrl+wK-使游標(biāo)所在視窗全寬并移至最上 (最上水平視窗)
審核編輯:劉清
-
Unix系統(tǒng)
+關(guān)注
關(guān)注
0文章
15瀏覽量
9642 -
VIM
+關(guān)注
關(guān)注
0文章
134瀏覽量
15293
原文標(biāo)題:vim超實(shí)用指南,收藏這一篇就夠了!
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論