vim是一個Unix文本編輯器陆爽,它以快速高效而聞名什往,是在終端中運(yùn)行的小應(yīng)用程序(當(dāng)然也有圖形界面),它最主要的特點(diǎn)是完全可以通過鍵盤控制慌闭,而不需要菜單欄或鼠標(biāo)回官。
例如儒旬,將文本插入到文件中钢坦,按i鍵并輸入雹嗦。瀏覽文本或輸入命令庸毫,在鍵盤上按Esc仔拟,然后按下對應(yīng)的任何鍵或組合鍵。對于大多數(shù)人來說飒赃,是一種非常不尋常的文本編輯方式利花,但這是基于Linux環(huán)境工作的開發(fā)者編輯配置文件、更改腳本载佳、編寫代碼等操作的主流方式炒事。
本文將介紹一些必要的基本命令,以供大家很快很容易地掌握vim編輯器蔫慧。建議初學(xué)者在使用中進(jìn)行學(xué)習(xí)挠乳,而不是只看不動手。不實(shí)戰(zhàn)操作姑躲,那你可能很快忘記這些命令睡扬。
使用vim打開文件后,一般會用到三種模式:命令模式(command mode)黍析、輸入模式(insert mode)和底行命令模式(last line mode)卖怜。
剛啟動vim時,默認(rèn)進(jìn)入命令模式阐枣。這時候马靠,我們敲打鍵盤的字母會被識別為不同的命令。如方向鍵h蔼两、j甩鳄、k、l额划;輸入鍵i娩贷、a、o锁孟,切換到輸入模式彬祖;冒號鍵:茁瘦,切換到底行命令模式。
進(jìn)入輸入模式储笑,可以任意的碼入字母甜熔、符號,按esc鍵退出到命令模式突倍。
在底行命令模式腔稀,可以輸入單個或者多個命令,按enter鍵結(jié)束運(yùn)行羽历。
1焊虏、vim的進(jìn)入和退出:vi、vim秕磷、:q诵闭、:q!、:wq
在terminal中直接敲vi或vim打開文本
:q退出文件
:q!強(qiáng)制退出文件澎嚣,丟棄你所做的任何改動
:wq?保存修改疏尿,然后退出文件
2、移動光標(biāo):h易桃、j褥琐、k、l鍵
h左移晤郑、l右移敌呈、j下移、k上移造寝,熟練使用hjkl鍵驱富,習(xí)慣之后我們能很快地在屏幕四處移動光標(biāo)。
3匹舞、插入褐鸥、刪除和撤銷:i、A赐稽、x叫榕、u鍵、ctrl+r
在command模式下:按下i鍵可以進(jìn)入insert模式姊舵,在光標(biāo)后插入文字晰绎,輸入完成按esc鍵(A鍵,光標(biāo)移動到本行末輸入)括丁;按下x鍵可以刪除光標(biāo)所在位置的字符荞下;按下u鍵可以撤銷操作,回到上一步。ctrl+r撤銷掉撤銷命令尖昏。
按下esc鍵會回到command模式或者撤銷一個不想輸入或部分完整的命令仰税。
4、刪除類命令:dw抽诉、d$陨簇、dd
dw?從光標(biāo)處刪除至一個單詞的末尾
d$?從光標(biāo)處刪除至本行末尾
dd刪除光標(biāo)所在行
5、在動作前輸入數(shù)字會使操作重復(fù)那么多次
3dd執(zhí)行三次光標(biāo)所在行迹淌,即往下刪除三行
2w?使光標(biāo)向前移動兩個單詞
0移動到光標(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 <回車>?即可在文件中查找error
n鍵向下繼續(xù)搜索耙饰,N鍵或shift+n鍵向上繼續(xù)搜索(shift+小寫=大寫)
8、替換命令
:s/old/new/g?g是全局進(jìn)行匹配
多種操作需要多加學(xué)習(xí)應(yīng)用
9纹份、在vim內(nèi)執(zhí)行外部命令
輸入?:!?然后輸入外部命令即可執(zhí)行該外部命令
所有的?:?命令都必須以敲回車鍵結(jié)束
10苟跪、使用操作符y復(fù)制文本,使用p粘貼文本
配合可視模式使用
多行操作是經(jīng)常會用到的矮嫉,切記!
11牍疏、set設(shè)置一些選項(xiàng)
:set xxx 可以設(shè)置 xxx 選項(xiàng)蠢笋。一些有用的選項(xiàng)如下:
'ic' 'ignorecase' ? ? ? 查找時忽略字母大小寫
'is' 'incsearch'? ? ? ? ? 查找短語時顯示部分匹配
'hls' 'hlsearch'? ? ? ? ? 高亮顯示所有的匹配短語
12、獲取在線系統(tǒng)幫助
如下三種方法:
- 按下 <HELP> 鍵 (如果鍵盤上有的話)
- 按下 <F1> 鍵 (如果鍵盤上有的話)
- 輸入? :help <回車>
13鳞陨、啟用更多的vim的特性
Vim 的功能特性要比 Vi 多得多昨寞,但其中大部分都缺省沒有啟用。為了使用更多的特性厦滤,需要創(chuàng)建一個?vimrc?文件援岩。
? 1. 開始編輯 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
? 下次啟動 Vim 時享怀,編輯器就會有了語法高亮的功能。
? 可以把喜歡的各種設(shè)置添加到這個 vimrc 文件中趟咆。
? 要了解更多信息請輸入 :help vimrc-intro
14添瓷、使用<tab>鍵進(jìn)行命令行補(bǔ)全
補(bǔ)全對于許多命令都有效,當(dāng)輸入:?命令時值纱,tab鍵可以匹配補(bǔ)全鳞贷。
15、vim自帶了一個教程說明虐唠,我們可以直接輸入vimtutor搀愧,打開教程做相應(yīng)的練習(xí)即可。
全局
:h[elp] 關(guān)鍵字?- 打開關(guān)鍵字幫助
:sav[eas] 文件名?- 另存為
:clo[se]?- 關(guān)閉當(dāng)前窗口
:ter[minal]?- 打開一個shell窗口
K?- 打開光標(biāo)所在單詞的man頁面
移動光標(biāo)
h?- 左移光標(biāo)
j?- 下移光標(biāo)
k?- 上移光標(biāo)
l?- 右移光標(biāo)
H?- 移動到當(dāng)前頁面頂部
M?- 移動到當(dāng)前頁面中間
L?- 移動到當(dāng)前頁面底部
w?- 移動到下個單詞開頭
W?- 移動到下個單詞開頭(單詞含標(biāo)點(diǎn))
e?- 移動到下個單詞結(jié)尾
E?- 移動到下個單詞結(jié)尾(單詞含標(biāo)點(diǎn))
b?- 移動到上個單詞開頭
B?- 移動到上個單詞開頭(單詞含標(biāo)點(diǎn))
ge?- 移動到上個單詞結(jié)尾
gE?- 移動到上個單詞結(jié)尾(單詞含標(biāo)點(diǎn))
%?- 跳轉(zhuǎn)到配對的符號(默認(rèn)支持的配對符號組:: '()', '{}', '[]' - 在vim中使用?:h matchpairs?獲得更多信息)
0?- 移動到行首
^?- 移動到行首的非空白符
$?- 移動到行尾
g_?- 移動到行內(nèi)最后一個非空白符
gg?- 移動到文件第一行
G?- 移動到文件最后一行
5gg?or?5G?- 移動到第五行
gd?- 跳轉(zhuǎn)到局部定義
gD?- 跳轉(zhuǎn)到全局定義
fx?- 移動到字符 x 下次出現(xiàn)的位置
tx?- 移動到字符 x 下次出現(xiàn)的位置的前一個字符
Fx?- 移動到字符 x 上次出現(xiàn)的位置
Tx?- 移動到字符 x 上次出現(xiàn)的位置的后一個字符
;?- 重復(fù)之前的f、t咱筛、F搓幌、T操作
,?- 反向重復(fù)之前的f、t眷蚓、F鼻种、T操作
}?- 移動到下一個段落 (當(dāng)編輯代碼時則為函數(shù)/代碼塊)
{?- 移動到上一個段落 (當(dāng)編輯代碼時則為函數(shù)/代碼塊)
zz?- 移動屏幕使光標(biāo)居中
Ctrl?+?e?- 向下移動屏幕一行(保持光標(biāo)不動)
Ctrl?+?y?- 向上移動屏幕一行(保持光標(biāo)不動)
Ctrl?+?b?- 向上滾動一屏
Ctrl?+?f?- 向下滾動一屏
Ctrl?+?d?- 向下滾動半屏
Ctrl?+?u?- 向上滾動半屏
插入模式 - 插入/追加文本
i?- 從光標(biāo)前開始插入字符
I?- 從行首開始插入字符
a?- 從光標(biāo)后開始插入字符
A?- 從行尾開始插入字符
o?- 在當(dāng)前行之下另起一行, 開始插入字符
O?- 在當(dāng)前行之上另起一行, 開始插入字符
ea?- 從當(dāng)前單詞末尾開始插入
Ctrl?+?h?- 在插入模式下,刪除光標(biāo)前的字符
Ctrl?+?w?- 在插入模式下沙热,刪除光標(biāo)前的單詞
Ctrl?+?j?- 在插入模式下叉钥,另起一行
Ctrl?+?t?- 在插入模式下,向右縮進(jìn)篙贸,寬度由 shiftwidth 控制
Ctrl?+?d?- 在插入模式下投队,向左縮進(jìn),寬度由 shiftwidth 控制
Ctrl?+?n?- 在插入模式下爵川,在光標(biāo)之前插入自動補(bǔ)全的下一個匹配項(xiàng)
Ctrl?+?p?- 在插入模式下敷鸦,在光標(biāo)之前插入自動補(bǔ)全的上一個匹配項(xiàng)
Ctrl?+?rx?- 插入寄存器 x 的內(nèi)容
Ctrl + ox - 暫時進(jìn)入正常模式以發(fā)出一個正常模式命令 x。
Esc?- 退出插入模式
編輯文本
r?- 替換當(dāng)前字符
R?- 在?ESC?按下之前寝贡,替換多個字符
J?- 將下一行合并到當(dāng)前行, 并在兩部分文本之間插入一個空格
gJ?- 將下一行合并到當(dāng)前行, 兩部分文本之間不含空格
gwip?- 重新調(diào)整段落
g~?- switch case up to motion
gu?- 小寫操作修飾符
gU?- 大寫操作修飾符
cc?- 將光標(biāo)所在的行刪除, 然后進(jìn)入插入模式
C?- 將光標(biāo)處到行尾刪除, 然后進(jìn)入插入模式
c$?- 將光標(biāo)處到行尾刪除, 然后進(jìn)入插入模式
ciw?- 將光標(biāo)所在的單詞刪除, 然后進(jìn)入插入模式
cw?or?ce?- 從光標(biāo)位置開始, 修改單詞
s?- 刪除當(dāng)前字符, 然后進(jìn)入插入模式
S?- 清空當(dāng)前行, 然后進(jìn)入插入模式 (同cc)
xp?- 當(dāng)前字符后移
u?- 撤銷
U - 撤銷上一次的改動行的操作
Ctrl + r - 重做(取消撤銷)
.?- 再次執(zhí)行上個命令
選擇文本(可視化模式)
v?- 進(jìn)入可視化模式, 移動光標(biāo)高亮選擇, ?然后可以對選擇的文本執(zhí)行命令
V - 進(jìn)入可視化模式(行粒度選擇)
o?- 切換光標(biāo)到選擇區(qū)開頭/結(jié)尾
Ctrl?+?v?- 進(jìn)入可視化模式(矩陣選擇)
O?- 切換光標(biāo)到選擇區(qū)的角
aw?- 選擇當(dāng)前單詞
ab?- 選擇被 () 包裹的區(qū)域(含括號)
aB?- 選擇被 {} 包裹的區(qū)域(含花括號)
at?- 選擇被 <> 標(biāo)簽包裹的區(qū)域(含<>標(biāo)簽)
ib?- 選擇被 () 包裹的區(qū)域(不含括號)
iB?- 選擇被 {} 包裹的區(qū)域(不含花括號)
it?- 選擇被 <> 標(biāo)簽包裹的區(qū)域(不含<>標(biāo)簽)
Esc - 退出可視化模式
可視化模式命令
>?- 向右縮進(jìn)
<?- 向左縮進(jìn)
y?- 復(fù)制
d?- 剪切
~?- 大小寫切換
u?- 將選中文本轉(zhuǎn)換為小寫
U?- 將選中文本轉(zhuǎn)換為大寫
剪切, 復(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)位置到行末 (同<kbd>D</kbd>)
x?- 剪切當(dāng)前字符
文字縮進(jìn)
>>?- 將當(dāng)前行向右縮進(jìn)扒披,寬度由 shiftwidth 控制
<<?- 將當(dāng)前行向左縮進(jìn),寬度由 shiftwidth 控制
>%?- 向右縮進(jìn) () 或 {} 內(nèi)的區(qū)域 (光標(biāo)需置于括號上)
>ib?- 向右縮進(jìn) () 內(nèi)的區(qū)域
>at?- 向右縮進(jìn) <>?標(biāo)簽內(nèi)的區(qū)域
3==?- 自動縮進(jìn) 3 行
=%?- 自動縮進(jìn) () 或 {} 內(nèi)的區(qū)域?(光標(biāo)需置于括號上)
=iB?- 自動縮進(jìn) {} 內(nèi)的區(qū)域 (光標(biāo)需置于括號上)
gg=G?- 自動縮進(jìn)整個緩沖區(qū)
]p?- 粘貼并調(diào)整縮進(jìn)至當(dāng)前行
退出
:w?- 保存
:w !sudo tee %?- 使用 sudo 保存當(dāng)前文件
:wq?or?:x?or?ZZ?- 保存并退出
:q?- 退出(修改未保存時警告)
:q!?or?ZQ?- 不保存強(qiáng)制退出
:wqa - 保存所有標(biāo)簽頁并全部退出
查找/替換
/pattern?- 查找<kbd>pattern</kbd>
?pattern?- 向上查找<kbd>pattern</kbd>
n?- 查找下一個
N?- 查找上一個
:%s/old/new/g?- 替換全部
:%s/old/new/gc?- (逐個)替換
:noh[lsearch]?- 移除搜索結(jié)果的高亮顯示
多文件搜索
:vim[grep] /pattern/{`{file}`}?- 在多個文件中搜索 <kbd>pattern</kbd>
:cn[ext]?- 移動至下一個
:cp[revious]?- 移動至上一個
:cope[n]?- 打開搜索結(jié)果列表
標(biāo)簽
:tabnew?or?:tabnew {page.words.file}?- 在新標(biāo)簽中打開文件
Ctrl?+?wT?- 將窗口變成標(biāo)簽
gt?or?:tabn[ext]?- 切換到下一個標(biāo)簽
gT?or?:tabp[revious]?- 切換到上一個標(biāo)簽
#gt?- 切換到第<kbd>#</kbd> 個標(biāo)簽
:tabm[ove] #?- 移動標(biāo)簽到第<kbd>#</kbd> 位(下標(biāo)從 0 開始)
:tabc[lose]?- 關(guān)閉當(dāng)前標(biāo)簽
:tabo[nly]?- 關(guān)閉其他標(biāo)簽
:tabdo?command - 在所有標(biāo)簽中執(zhí)行命令?
多文件編輯
:e[dit] 文件名?- 新建緩沖區(qū)打開?filename
:bn[ext]?- 切換到下個緩沖區(qū)
:bp[revious]?- 切換到上個緩沖區(qū)
:bd[elete]?- 關(guān)閉緩沖區(qū)
:ls?or?:buffers?- 列出所有打開的緩沖區(qū)
:sp[lit] 文件名?- 新建緩沖區(qū)打開 filename 并水平分割窗口
:vs[plit] 文件名?- 新緩沖區(qū)打開 filename 并垂直分割窗口
:vert[ical] ba[ll]?- edit all buffers as vertical windows
:tab ba[ll]?- edit all buffers as tabs
Ctrl?+?ws?- 水平分割窗口
Ctrl?+?wv?- 垂直分割窗口
Ctrl?+?ww?- 在窗口間切換
Ctrl?+?wq?- 關(guān)閉窗口
Ctrl?+?wx?- 將窗口切換到下一個窗口
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)所在視窗全寬并移至最上 (最上水平視窗)
? ??????????????????????????????????????????????你都看到這了圃泡,趕緊點(diǎn)個在看收藏碟案!以防迷路!F睦价说!