vim命令大全

1.1 Vim的幾種模式

正常模式:可以使用快捷鍵命令,或按:輸入命令行。

插入模式:可以輸入文本粹污,在正常模式下地粪,按i、a、o等都可以進(jìn)入插入模式檐蚜。

可視模式:正常模式下按v可以進(jìn)入可視模式魄懂, 在可視模式下,移動(dòng)光標(biāo)可以選擇文本闯第。按V進(jìn)入可視行模式市栗, 總是整行整行的選中。ctrl+v進(jìn)入可視塊模式咳短。

替換模式:正常模式下填帽,按R進(jìn)入。

2. 啟動(dòng)Vim

vim -c cmd file: 在打開文件前诲泌,先執(zhí)行指定的命令盲赊;

vim -r file: 恢復(fù)上次異常退出的文件;

vim -R file: 以只讀的方式打開文件敷扫,但可以強(qiáng)制保存哀蘑;

vim -M file: 以只讀的方式打開文件,不可以強(qiáng)制保存葵第;

vim -y num file: 將編輯窗口的大小設(shè)為num行绘迁;

vim + file: 從文件的末尾開始;

vim +num file: 從第num行開始卒密;

vim +/string file: 打開file缀台,并將光標(biāo)停留在第一個(gè)找到的string上。

vim –remote file: 用已有的vim進(jìn)程打開指定的文件哮奇。 如果你不想啟用多個(gè)vim會(huì)話膛腐,這個(gè)很有用。但要注意鼎俘, 如果你用vim哲身,會(huì)尋找名叫VIM的服務(wù)器;如果你已經(jīng)有一個(gè)gvim在運(yùn)行了贸伐, 你可以用gvim –remote file在已有的gvim中打開文件勘天。

3. 文檔操作

:e file –關(guān)閉當(dāng)前編輯的文件,并開啟新的文件捉邢。 如果對(duì)當(dāng)前文件的修改未保存脯丝,vi會(huì)警告。

:e! file –放棄對(duì)當(dāng)前文件的修改伏伐,編輯新的文件宠进。

:e+file – 開始新的文件,并從文件尾開始編輯藐翎。

:e+n file – 開始新的文件砰苍,并從第n行開始編輯潦匈。

:enew –編譯一個(gè)未命名的新文檔。(CTRL-W n)

:e – 重新加載當(dāng)前文檔赚导。

:e! – 重新加載當(dāng)前文檔茬缩,并丟棄已做的改動(dòng)。

:e#或ctrl+^ – 回到剛才編輯的文件吼旧,很實(shí)用凰锡。

:f或ctrl+g – 顯示文檔名,是否修改圈暗,和光標(biāo)位置掂为。

:f filename – 改變編輯的文件名,這時(shí)再保存相當(dāng)于另存為员串。

gf – 打開以光標(biāo)所在字符串為文件名的文件勇哗。

:w – 保存修改。

:n1,n2w filename – 選擇性保存從某n1行到另n2行的內(nèi)容寸齐。

:wq – 保存并退出欲诺。

ZZ – 保存并退出。

:x – 保存并退出渺鹦。

:q[uit] ——退出當(dāng)前窗口扰法。(CTRL-W q或CTRL-W CTRL-Q)

:saveas newfilename – 另存為

:browse e – 會(huì)打開一個(gè)文件瀏覽器讓你選擇要編輯的文件。 如果是終端中毅厚,則會(huì)打開netrw的文件瀏覽窗口塞颁; 如果是gvim,則會(huì)打開一個(gè)圖形界面的瀏覽窗口吸耿。 實(shí)際上:browse后可以跟任何編輯文檔的命令祠锣,如sp等。 用browse打開的起始目錄可以由browsedir來設(shè)置:

:set browsedir=last – 用上次訪問過的目錄(默認(rèn))咽安;

:set browsedir=buffer – 用當(dāng)前文件所在目錄伴网;

:set browsedir=current – 用當(dāng)前工作目錄;

:Sex – 水平分割一個(gè)窗口板乙,瀏覽文件系統(tǒng)是偷;

:Vex – 垂直分割一個(gè)窗口拳氢,瀏覽文件系統(tǒng)募逞;

4. 光標(biāo)的移動(dòng)

4.1 基本移動(dòng)

以下移動(dòng)都是在normal模式下。

h或退格: 左移一個(gè)字符馋评;

l或空格: 右移一個(gè)字符放接;

j: 下移一行;

k: 上移一行留特;

gj: 移動(dòng)到一段內(nèi)的下一行纠脾;

gk: 移動(dòng)到一段內(nèi)的上一行玛瘸;

+或Enter: 把光標(biāo)移至下一行第一個(gè)非空白字符。

-: 把光標(biāo)移至上一行第一個(gè)非空白字符苟蹈。

w: 前移一個(gè)單詞糊渊,光標(biāo)停在下一個(gè)單詞開頭;

W: 移動(dòng)下一個(gè)單詞開頭慧脱,但忽略一些標(biāo)點(diǎn)渺绒;

e: 前移一個(gè)單詞,光標(biāo)停在下一個(gè)單詞末尾菱鸥;

E: 移動(dòng)到下一個(gè)單詞末尾宗兼,如果詞尾有標(biāo)點(diǎn),則移動(dòng)到標(biāo)點(diǎn)氮采;

b: 后移一個(gè)單詞殷绍,光標(biāo)停在上一個(gè)單詞開頭;

B: 移動(dòng)到上一個(gè)單詞開頭鹊漠,忽略一些標(biāo)點(diǎn)主到;

ge: 后移一個(gè)單詞,光標(biāo)停在上一個(gè)單詞末尾贸呢;

gE: 同ge镰烧,不過‘單詞’包含單詞相鄰的標(biāo)點(diǎn)。

(: 前移1句楞陷。

): 后移1句怔鳖。

{: 前移1段。

}: 后移1段固蛾。

fc: 把光標(biāo)移到同一行的下一個(gè)c字符處

Fc: 把光標(biāo)移到同一行的上一個(gè)c字符處

tc: 把光標(biāo)移到同一行的下一個(gè)c字符前

Tc: 把光標(biāo)移到同一行的上一個(gè)c字符后

;: 配合f & t使用结执,重復(fù)一次

,: 配合f & t使用,反向重復(fù)一次

上面的操作都可以配合n使用艾凯,比如在正常模式(下面會(huì)講到)下輸入3h献幔, 則光標(biāo)向左移動(dòng)3個(gè)字符。

0: 移動(dòng)到行首趾诗。

g0: 移到光標(biāo)所在屏幕行行首蜡感。

^: 移動(dòng)到本行第一個(gè)非空白字符。

g^: 同^恃泪,但是移動(dòng)到當(dāng)前屏幕行第一個(gè)非空字符處郑兴。

:移動(dòng)到行尾。</li><listyle="list?style:inherit!important">g:移動(dòng)到行尾贝乎。g: 移動(dòng)光標(biāo)所在屏幕行行尾情连。

n|: 把光標(biāo)移到遞n列上。

nG: 到文件第n行览效。

:n<cr> 移動(dòng)到第n行却舀。

:$<cr> 移動(dòng)到最后一行虫几。

H: 把光標(biāo)移到屏幕最頂端一行。

M: 把光標(biāo)移到屏幕中間一行挽拔。

L: 把光標(biāo)移到屏幕最底端一行辆脸。

gg: 到文件頭部。

G: 到文件尾部螃诅。

4.2 翻屏

ctrl+f: 下翻一屏每强。

ctrl+b: 上翻一屏。

ctrl+d: 下翻半屏州刽。

ctrl+u: 上翻半屏空执。

ctrl+e: 向下滾動(dòng)一行。

ctrl+y: 向上滾動(dòng)一行穗椅。

n%: 到文件n%的位置辨绊。

zz: 將當(dāng)前行移動(dòng)到屏幕中央。

zt: 將當(dāng)前行移動(dòng)到屏幕頂端匹表。

zb: 將當(dāng)前行移動(dòng)到屏幕底端门坷。

4.3 標(biāo)記

使用標(biāo)記可以快速移動(dòng)。到達(dá)標(biāo)記后袍镀,可以用Ctrl+o返回原來的位置默蚌。 Ctrl+o和Ctrl+i 很像瀏覽器上的后退前進(jìn)

m{a-z}: 標(biāo)記光標(biāo)所在位置苇羡,局部標(biāo)記绸吸,只用于當(dāng)前文件。

m{A-Z}: 標(biāo)記光標(biāo)所在位置设江,全局標(biāo)記锦茁。標(biāo)記之后,退出Vim叉存, 重新啟動(dòng)码俩,標(biāo)記仍然有效。

`{a-z}: 移動(dòng)到標(biāo)記位置歼捏。

‘{a-z}: 移動(dòng)到標(biāo)記行的行首稿存。

`{0-9}:回到上[2-10]次關(guān)閉vim時(shí)最后離開的位置。

“: 移動(dòng)到上次編輯的位置瞳秽“曷模”也可以,不過“精確到列寂诱,而”精確到行 拂苹。如果想跳轉(zhuǎn)到更老的位置安聘,可以按C-o痰洒,跳轉(zhuǎn)到更新的位置用C-i瓢棒。

`”: 移動(dòng)到上次離開的地方。

`.: 移動(dòng)到最后改動(dòng)的地方丘喻。

:marks 顯示所有標(biāo)記脯宿。

:delmarks a b – 刪除標(biāo)記a和b。

:delmarks a-c – 刪除標(biāo)記a泉粉、b和c连霉。

:delmarks a c-f – 刪除標(biāo)記a、c嗡靡、d跺撼、e、f讨彼。

:delmarks! – 刪除當(dāng)前緩沖區(qū)的所有標(biāo)記歉井。

:help mark-motions 查看更多關(guān)于mark的知識(shí)。

5. 插入文本

5.1 基本插入

i: 在光標(biāo)前插入哈误;一個(gè)小技巧:按8哩至,再按i,進(jìn)入插入模式蜜自,輸入=菩貌, 按esc進(jìn)入命令模式,就會(huì)出現(xiàn)8個(gè)=重荠。 這在插入分割線時(shí)非常有用箭阶,如30i+<esc>就插入了36個(gè)+組成的分割線。

I: 在當(dāng)前行第一個(gè)非空字符前插入戈鲁;

gI: 在當(dāng)前行第一列插入尾膊;

a: 在光標(biāo)后插入;

A: 在當(dāng)前行最后插入荞彼;

o: 在下面新建一行插入冈敛;

O: 在上面新建一行插入;

:r filename在當(dāng)前位置插入另一個(gè)文件的內(nèi)容鸣皂。

:[n]r filename在第n行插入另一個(gè)文件的內(nèi)容抓谴。

:r !date 在光標(biāo)處插入當(dāng)前日期與時(shí)間。同理寞缝,:r !command可以將其它shell命令的輸出插入當(dāng)前文檔癌压。

5.2 改寫插入

c[n]w: 改寫光標(biāo)后1(n)個(gè)詞。

c[n]l: 改寫光標(biāo)后n個(gè)字母荆陆。

c[n]h: 改寫光標(biāo)前n個(gè)字母滩届。

[n]cc: 修改當(dāng)前[n]行。

[n]s: 以輸入的文本替代光標(biāo)之后1(n)個(gè)字符被啼,相當(dāng)于c[n]l帜消。

[n]S: 刪除指定數(shù)目的行棠枉,并以所輸入文本代替之。

注意泡挺,類似cnw,dnw,ynw的形式同樣可以寫為ncw,ndw,nyw辈讶。

6. 剪切復(fù)制和寄存器

6.1 剪切和復(fù)制、粘貼

[n]x: 剪切光標(biāo)右邊n個(gè)字符娄猫,相當(dāng)于d[n]l贱除。

[n]X: 剪切光標(biāo)左邊n個(gè)字符,相當(dāng)于d[n]h媳溺。

y: 復(fù)制在可視模式下選中的文本月幌。

yy or Y: 復(fù)制整行文本。

y[n]w: 復(fù)制一(n)個(gè)詞悬蔽。

y[n]l: 復(fù)制光標(biāo)右邊1(n)個(gè)字符飞醉。

y[n]h: 復(fù)制光標(biāo)左邊1(n)個(gè)字符。

y:從光標(biāo)當(dāng)前位置復(fù)制到行尾屯阀。</li><listyle="list?style:inherit!important">y0:從光標(biāo)當(dāng)前位置復(fù)制到行首缅帘。</li><listyle="list?style:inherit!important">:m,ny<cr>復(fù)制m行到n行的內(nèi)容。</li><listyle="list?style:inherit!important">y1G或ygg:復(fù)制光標(biāo)以上的所有行难衰。</li><listyle="list?style:inherit!important">yG:復(fù)制光標(biāo)以下的所有行钦无。</li><listyle="list?style:inherit!important">yaw和yas:復(fù)制一個(gè)詞和復(fù)制一個(gè)句子,即使光標(biāo)不在詞首和句首也沒關(guān)系盖袭。</li><listyle="list?style:inherit!important">d:刪除(剪切)在可視模式下選中的文本失暂。</li><listyle="list?style:inherit!important">d:從光標(biāo)當(dāng)前位置復(fù)制到行尾。y0:從光標(biāo)當(dāng)前位置復(fù)制到行首鳄虱。:m,ny復(fù)制m行到n行的內(nèi)容弟塞。y1G或ygg:復(fù)制光標(biāo)以上的所有行。yG:復(fù)制光標(biāo)以下的所有行拙已。yaw和yas:復(fù)制一個(gè)詞和復(fù)制一個(gè)句子决记,即使光標(biāo)不在詞首和句首也沒關(guān)系。d:刪除(剪切)在可視模式下選中的文本倍踪。d?or D: 刪除(剪切)當(dāng)前位置到行尾的內(nèi)容系宫。

d[n]w: 刪除(剪切)1(n)個(gè)單詞

d[n]l: 刪除(剪切)光標(biāo)右邊1(n)個(gè)字符。

d[n]h: 刪除(剪切)光標(biāo)左邊1(n)個(gè)字符建车。

d0: 刪除(剪切)當(dāng)前位置到行首的內(nèi)容

[n] dd: 刪除(剪切)1(n)行扩借。

:m,nd<cr> 剪切m行到n行的內(nèi)容。

d1G或dgg: 剪切光標(biāo)以上的所有行缤至。

dG: 剪切光標(biāo)以下的所有行潮罪。

daw和das:剪切一個(gè)詞和剪切一個(gè)句子,即使光標(biāo)不在詞首和句首也沒關(guān)系。

d/f<cr>:這是一個(gè)比較高級(jí)的組合命令嫉到,它將刪除當(dāng)前位置 到下一個(gè)f之間的內(nèi)容沃暗。

p: 在光標(biāo)之后粘貼。

P: 在光標(biāo)之前粘貼屯碴。

6.2 文本對(duì)象

aw:一個(gè)詞

as:一句。

ap:一段膊存。

ab:一塊(包含在圓括號(hào)中的)导而。

y, d, c, v都可以跟文本對(duì)象。

6.3 寄存器

a-z:都可以用作寄存器名隔崎〗褚眨”ayy把當(dāng)前行的內(nèi)容放入a寄存器。

A-Z:用大寫字母索引寄存器爵卒,可以在寄存器中追加內(nèi)容虚缎。 如”Ayy把當(dāng)前行的內(nèi)容追加到a寄存器中。

:reg 顯示所有寄存器的內(nèi)容钓株。

“”:不加寄存器索引時(shí)实牡,默認(rèn)使用的寄存器。

“*:當(dāng)前選擇緩沖區(qū)轴合,”*yy把當(dāng)前行的內(nèi)容放入當(dāng)前選擇緩沖區(qū)创坞。

“+:系統(tǒng)剪貼板∈芨穑”+yy把當(dāng)前行的內(nèi)容放入系統(tǒng)剪貼板题涨。

7. 查找與替換

7.1 查找

/something: 在后面的文本中查找something。

?something: 在前面的文本中查找something总滩。

/pattern/+number: 將光標(biāo)停在包含pattern的行后面第number行上纲堵。

/pattern/-number: 將光標(biāo)停在包含pattern的行前面第number行上。

n: 向后查找下一個(gè)闰渔。

N: 向前查找下一個(gè)席函。

可以用grep或vimgrep查找一個(gè)模式都在哪些地方出現(xiàn)過,

其中:grep是調(diào)用外部的grep程序冈涧,而:vimgrep是vim自己的查找算法向挖。

用法為: :vim[grep]/pattern/[g] [j] files

g的含義是如果一個(gè)模式在一行中多次出現(xiàn),則這一行也在結(jié)果中多次出現(xiàn)炕舵。

j的含義是grep結(jié)束后何之,結(jié)果停在第j項(xiàng),默認(rèn)是停在第一項(xiàng)咽筋。

vimgrep前面可以加數(shù)字限定搜索結(jié)果的上限溶推,如

:1vim/pattern/ % 只查找那個(gè)模式在本文件中的第一個(gè)出現(xiàn)。


其實(shí)vimgrep在讀純文本電子書時(shí)特別有用,可以生成導(dǎo)航的目錄蒜危。

比如電子書中每一節(jié)的標(biāo)題形式為:n. xxxx虱痕。你就可以這樣:

:vim/^d{1,}./ %

然后用:cw或:copen查看結(jié)果,可以用C-w H把quickfix窗口移到左側(cè)辐赞,

就更像個(gè)目錄了部翘。

7.2 替換

:s/old/new - 用new替換當(dāng)前行第一個(gè)old。

:s/old/new/g - 用new替換當(dāng)前行所有的old响委。

:n1,n2s/old/new/g - 用new替換文件n1行到n2行所有的old新思。

:%s/old/new/g - 用new替換文件中所有的old。

:%s/^/xxx/g - 在每一行的行首插入xxx赘风,^表示行首夹囚。

:%s//xxx/g?在每一行的行尾插入xxx,/xxx/g?在每一行的行尾插入xxx邀窃,表示行尾荸哟。

所有替換命令末尾加上c,每個(gè)替換都將需要用戶確認(rèn)瞬捕。 如:%s/old/new/gc鞍历,加上i則忽略大小寫(ignore)。

還有一種比替換更靈活的方式肪虎,它是匹配到某個(gè)模式后執(zhí)行某種命令堰燎,

語法為 :[range]g/pattern/command

例如 :%g/^ xyz/normal dd。

表示對(duì)于以一個(gè)空格和xyz開頭的行執(zhí)行normal模式下的dd命令笋轨。

關(guān)于range的規(guī)定為:

如果不指定range秆剪,則表示當(dāng)前行。

m,n: 從m行到n行爵政。

0: 最開始一行(可能是這樣)仅讽。

$: 最后一行

.: 當(dāng)前行

%: 所有行

7.3 正則表達(dá)式

高級(jí)的查找替換就要用到正則表達(dá)式。

\d: 表示十進(jìn)制數(shù)(我猜的)

\s: 表示空格

\S: 非空字符

\a: 英文字母

\|: 表示 或

\.: 表示.

{m,n}: 表示m到n個(gè)字符钾挟。這要和 \s與\a等連用洁灵,如 \a\{m,n} 表示m 到n個(gè)英文字母。

{m,}: 表示m到無限多個(gè)字符掺出。

**: 當(dāng)前目錄下的所有子目錄徽千。

:help pattern得到更多幫助。

轉(zhuǎn)自:

vim 操作命令大全 - jjcoder的專欄 - CSDN博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末汤锨,一起剝皮案震驚了整個(gè)濱河市双抽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲礼,老刑警劉巖牍汹,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铐维,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡慎菲,警方通過查閱死者的電腦和手機(jī)嫁蛇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來露该,“玉大人睬棚,你說我怎么就攤上這事〗庥祝” “怎么了抑党?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)书幕。 經(jīng)常有香客問我新荤,道長(zhǎng)揽趾,這世上最難降的妖魔是什么台汇? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮篱瞎,結(jié)果婚禮上苟呐,老公的妹妹穿的比我還像新娘。我一直安慰自己俐筋,他們只是感情好牵素,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澄者,像睡著了一般笆呆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粱挡,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天赠幕,我揣著相機(jī)與錄音,去河邊找鬼询筏。 笑死榕堰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嫌套。 我是一名探鬼主播逆屡,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼踱讨!你這毒婦竟也來了魏蔗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤痹筛,失蹤者是張志新(化名)和其女友劉穎沫勿,沒想到半個(gè)月后挨约,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡产雹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年诫惭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔓挖。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夕土,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瘟判,到底是詐尸還是另有隱情怨绣,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布拷获,位于F島的核電站篮撑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏匆瓜。R本人自食惡果不足惜赢笨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驮吱。 院中可真熱鬧茧妒,春花似錦、人聲如沸左冬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拇砰。三九已至梅忌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間除破,已是汗流浹背牧氮。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留皂岔,地道東北人蹋笼。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像躁垛,于是被迫代替她去往敵國(guó)和親剖毯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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