vim超實(shí)用指南第美,收藏這一篇就夠了!

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睦价说!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市风秤,隨后出現(xiàn)的幾起案子鳖目,更是在濱河造成了極大的恐慌,老刑警劉巖缤弦,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件领迈,死亡現(xiàn)場離奇詭異,居然都是意外死亡碍沐,警方通過查閱死者的電腦和手機(jī)惦费,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抢韭,“玉大人薪贫,你說我怎么就攤上這事】坦В” “怎么了瞧省?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵扯夭,是天一觀的道長。 經(jīng)常有香客問我鞍匾,道長交洗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任橡淑,我火速辦了婚禮构拳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梁棠。我一直安慰自己置森,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布符糊。 她就那樣靜靜地躺著凫海,像睡著了一般。 火紅的嫁衣襯著肌膚如雪男娄。 梳的紋絲不亂的頭發(fā)上行贪,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機(jī)與錄音模闲,去河邊找鬼建瘫。 笑死,一個胖子當(dāng)著我的面吹牛尸折,可吹牛的內(nèi)容都是我干的啰脚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翁授,長吁一口氣:“原來是場噩夢啊……” “哼拣播!你這毒婦竟也來了晾咪?” 一聲冷哼從身側(cè)響起收擦,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谍倦,沒想到半個月后塞赂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昼蛀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年宴猾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叼旋。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡仇哆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夫植,到底是詐尸還是另有隱情讹剔,我是刑警寧澤油讯,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站延欠,受9級特大地震影響陌兑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜由捎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一兔综、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狞玛,春花似錦软驰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒙畴,卻和暖如春贰镣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膳凝。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工碑隆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹬音。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓上煤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親著淆。 傳聞我的和親對象是個殘疾皇子劫狠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容