Linux下VI(VIM)快捷鍵整理分享

Time:2014/08/10 11:23:50   Click:

大家都(dōu)會(huì)在linux上修改一些常用的配置文件,如httpd/conf/httpd.cof php.ini等,所以,vi就(jiù)是在linux下最常用的,也是最好(hǎo)且的工具,今天,尚狐網絡爲大家收集一些常用的命令,希望對(duì)新手能(néng)有所幫助。

1. 本文的目标是提供一些vim的使用技巧,利用這(zhè)些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是現在基本上都(dōu)是用vim了。

2. 本文是整理和總結使用技巧,而非講解vim入門,因此不會(huì)涉及最基本的使用,例如如何上移或下移光标,對(duì)此類操作請參閱任何一本vim或者vi教程。

3. 本文閱讀對(duì)象是了解了vim的基本操作,而希望高效地利用vim進(jìn)行工作的人。熟練使用vim的人自然不必細讀,如果能(néng)留下您的寶貴意見,本人將(jiāng)感激不盡。

4. 本文由本人搜集整理,轉載請注明出處

本文一般情況下用(裡(lǐ)邊的字母一般大小寫無所謂,除非特别注明)表示按住ctrl同時(shí)按下相關字母,命令前加一個i表示在插入模式下用這(zhè)個命令

1. 選定文字 / 拷貝粘貼

v爲可視模式,可以選定多行。選定多行之後(hòu),可以用yy或者dd等等進(jìn)行拷貝和剪切。

p 是粘貼

y 和d 可以直接拷貝或者剪切選定的内容

yw是拷貝一個單詞

如果要複制整行的最簡單辦法就(jiù)是V,y,p 就(jiù)行了

v是可以選定一行任意個字符的,V是行選定的,一次一整行,然後(hòu)通過(guò)向(xiàng)下或向(xiàng)上移動光标而選定多行。

對(duì)于v選定的,拷貝後(hòu)就(jiù)是這(zhè)麼(me)多,選多少就(jiù)拷貝多少,而V選定的,粘貼的話會(huì)自動換到下一行

命令模式下,也是塊選定,不過(guò)是列塊選定

2. 折疊代碼

可以zf進(jìn)行折疊, 用zo打開(kāi)折疊,也可以方向(xiàng)鍵向(xiàng)右打開(kāi)折疊,zc 關閉折疊(隻要在被(bèi)折疊的塊中的任一個語句就(jiù)行)

3. 縮進(jìn)代碼

是右縮進(jìn)

按v選定後(hòu)按=就(jiù)是自動格式化代碼,自動縮進(jìn),内部的遞歸的縮進(jìn)都(dōu)做到了

行左移>,該命令用于調整源碼縮進(jìn)格式簡便快速。

4. 移動光标

%是從大括号的開(kāi)始移動到大括号的結束位置

:後(hòu)邊加行号就(jiù)是跳到這(zhè)一行

光标返回到以前的位置。相當于光标移動的“撤銷”

光标返回到後(hòu)來的位置。相當于光标移動的“恢複”

5. 多文件編輯 / 緩沖區命令

vim下每一個打開(kāi)的文件對(duì)應一個緩沖區(buffer)。

多文件編輯會(huì)有兩(liǎng)種(zhǒng)情形,一種(zhǒng)是在進(jìn)入 vim 前所用的參數就(jiù)是多個文件(這(zhè)種(zhǒng)情形稱爲 argument list)。另一種(zhǒng)情形是進(jìn)入 vim 後(hòu)另外再開(kāi)其它的文件(稱爲 buffer list)。不過(guò)都(dōu)可以統稱爲buffer。

5.1 打開(kāi)文件

vi flname1 flname2… flnameN

將(jiāng)多個文件調入緩沖,是 argument list。

:e filename

這(zhè)是在進(jìn)入 vim 後(hòu),在不離開(kāi) vim 的情形下再開(kāi)其它文件,隻要您要編輯的檔案是在目前目錄,Tab 補全鍵還(hái)是可以使用。是buffer list。

注意::e 或者:new 或者:split 後(hòu)邊可以跟目錄,這(zhè)樣(yàng)就(jiù)可以在目錄下慢慢找要打開(kāi)的文件了

5.2 緩沖區跳轉

:n 編輯下一個文件。

:2n 編輯下二個文件。

:N 編輯前一個文件。注意,這(zhè)種(zhǒng)用法隻能(néng)用于 argument list 的情形。

:rew 回到首文件

:args 查看當前編輯緩沖文件狀态

:e# 或 Ctrl-^ 編輯前一個檔案,用于兩(liǎng)文件互相編輯時(shí)相當好(hǎo)用。這(zhè)種(zhǒng)用法不管是 argument list 或buffer list 檔案間皆可使用。 使用Ctrl-^ 命令更便捷,但如終端類型不正确該功能(néng)將(jiāng)無效。

用:ls來顯示緩沖區中的文件,編号後(hòu)邊有#的代表是前一個文件,可以通過(guò):e#來進(jìn)入,有%a的代表是當前文件,什麼(me)也沒(méi)有的可以通過(guò):bn來進(jìn)入,這(zhè)裡(lǐ)的n代表文件編号。

:b文件名或編号 移至該文件。

在 :ls 中就(jiù)會(huì)出示各文件的編号,這(zhè)個編号在未離開(kāi) vim 前是不會(huì)變的。這(zhè)個指令 elvis 也是可以使用。當然 :e#編号 也是可以的,這(zhè)樣(yàng)的用法則是所有 vi clone 都(dōu)通用了。

在 buffers 中,減号 - 表示這(zhè)個 buffer 并未載入,不過(guò),不必擔心,載入相當快速的。加号 + 表示這(zhè)個 buffer 已經(jīng)修改過(guò)了。

:bn buffer next。這(zhè)裡(lǐ)的n代表字母n

:bl buffer last。

以上兩(liǎng)個指令 elvis 不适用。

如果您是使用 vim 的 GUI,那就(jiù)在菜單上就(jiù)會(huì)有 Buffers 這(zhè)個選項,可以很容易的知道(dào)及移動各buffer 間。

5.3 移除緩沖區

:bd(elete) buffer 在未離開(kāi) vim 前是不會(huì)移除的,可使用這(zhè)個指令移除。其實移除它幹什麼(me)呢?vim是您在叫(jiào)用時(shí)才會(huì)載入的,因此這(zhè)些 buffers 并不是像 cache 一般要占内存的。

5.4 重新編輯

放棄一修改過(guò)的文件,重新編輯。

(1)使用命令 :q!強行退出後(hòu)再vi flname重新進(jìn)入。

(2)使用命令 :e!強行重編輯更便捷。這(zhè)樣(yàng)也是會(huì)打開(kāi)文件,但會(huì)放棄目前編輯文件的改變,否則如果文件已有變動,vim 預設是不讓您随便離開(kāi)的。:e! 後(hòu)不接什麼(me)的話,代表舍棄一切修改,重新載入編輯中文件。

5.5 其他命令

:files 或 :buffers 或 :ls 會(huì)列出目前 buffer 中的所有文件。

在 elvis 中可使用 :b 來叫(jiào)出 buffers。

:f 或 Ctrl-g 顯示目前編輯的文件名、是否經(jīng)過(guò)修改及目前光标所在之位置。

:f 文件名 改變編輯中的文件名。(file)

:r 文件名 在光标所在處插入一個文件的内容。(read)

:35 r 文件名 將(jiāng)文件插入至 35 行之後(hòu)。

gf 這(zhè)是 vim 的特殊打開(kāi)文件的方法,會(huì)打開(kāi)光标所在處的 word 爲名的文件,當然,這(zhè)個文件要在當前目錄内,否則會(huì)創建新文件。

6. 查找命令

用/查找單詞後(hòu),n可以跳到下一個,N則是上一個,:nohls可以取消高亮

查找時(shí),:set ignorecase”項讓VIM忽略大小寫,“:set noignorecase” 來關閉這(zhè)項功能(néng)。

7. 修改文字

cw:删除一個單詞并進(jìn)入插入模式,cc:删除一行并進(jìn)入插入模式。

r:然後(hòu)輸入的字母將(jiāng)替換當前字母并保持命令模式,R則是不停的替換(一個挨著(zhe)一個)。

0到行首,$到行尾。

8. 函數間跳轉

ctrl+]和ctrl+T分别是查找函數的定義和返回,好(hǎo)像需要ctag的支持

i 跳轉到光标所指标識符的定義行,是打開(kāi)一個新的小窗口顯示,記住要加個i,最好(hǎo)是找自己項目下的文件,否則找庫函數的話還(hái)不如man.

大寫 K 看光标所指标識符的 man 幫助頁

9. 窗口命令

= ctrl+w

:split 文件名 同時(shí)在一個頁面(miàn)顯示多個文件的内容,類似多窗口,用切換當前窗口

f 切分顯示光标在處的文件名,VIM 會(huì)在 path 中搜索該文件名,比如常用它打開(kāi) #include 語句中的文件

_ 當同時(shí)打開(kāi)幾個文件時(shí),按 _ 使當前窗口最大化

用Ctrl-W命令指定光标移動:

Ctrl-W + 擴大窗口

Ctrl-W - 縮小窗口

Ctrl-W h 移動到窗口左邊

Ctrl-W j 移動到窗口下邊

Ctrl-W k 移動到窗口上邊

Ctrl-W l 移動到窗口右邊

等于是按下後(hòu),松開(kāi)鍵盤,再按下一個命令就(jiù)可以了.

如果要關閉分割窗口可以用:close,剩下隻有一個窗口的話就(jiù)不能(néng)關了。

多窗口是split,像用e打開(kāi)多個文件是將(jiāng)文件放在緩沖區中。

10. 自動完成(chéng)

i 向(xiàng)上搜索,補全一個詞

i 向(xiàng)下搜索,補全一個詞

i 補全一行。

比如你寫過(guò)一行 for (int i = 0; i 即可。如果補全出來的不是你想要的那一行,你可以按 或 選擇上一個或下一個匹配行i 在文件系統中搜索,補全一個文件名

如果按 或 補全一個詞,在當前文件中沒(méi)有找到匹配,VIM 將(jiāng)搜索 #include 語句中的文件,而文件的位置將(jiāng)在 path 中搜索。

i 把上一行對(duì)應列的字符抄下來

i 把下一行對(duì)應列的字符抄上來,這(zhè)兩(liǎng)個都(dōu)可以一直按下去,到了行尾自己會(huì)停的.

11. 注釋整塊内容

注釋塊的方法:

選定要注釋掉的行 I // Esc

I之後(hòu)輸入的東西就(jiù)是插入到選定的行前邊的,直至Esc.

要去掉注釋的辦法:選定注釋符//,然後(hòu)d

列塊選定後(hòu)I是在前邊都(dōu)插入,A是在後(hòu)邊都(dōu)插入

是按列塊模式的選定,是行選定,v是普通選定

12. 其他命令

u可以撤銷上一步操作, ctrl+r可以恢複

i命令執行一個普通模式的命令,執行完畢後(hòu)回到插入模式,不用多次Esc

i後(hòu)續字符 輸入特殊的 ASCII 字符或鍵。

. 在光标當前位置處重複上一次操作

:!命令行 執行一條外部命令

光标移到起(qǐ)始行,輸入ma
光标移到結束行,輸入mb
光标移到粘貼行,輸入mc

然後(hòu) :'a,'b co 'c

把 co 改成(chéng) m 就(jiù)成(chéng)剪切了。


TOP

錦江區聚格樂享網絡工作室@2012 版權所有
蜀ICP備12016524号-2

立即咨詢
成(chéng)都(dōu)網站建設,成(chéng)都(dōu)做網站,錦江區聚格樂享網絡工作室
40f13d50b73e104f832ed1b719ae6935