vim 高階技巧

2021-06-21 16:00:11 字數 3249 閱讀 6479

【**】

1、緩衝區

其實,你用:e 瀏覽開啟的檔案都沒有被關閉,這些檔案都在緩衝區中。你可以用下面的命令來檢視緩衝區:

:ls

於是,在你的vim下,你會看到如下介面:

你可以看到vim開啟了四個檔案,編號是4,5,6,7,如果你要切換開啟的檔案,這個時候,你不要按回車(按了也沒事,只不過按了就看不到:ls輸出的buffer列表了),你可以使用下面的命令切換檔案(buffer後面的4表示切到4號檔案也就是src/http/ngx_http.c):

:buffer 4

或是:

注意,

你還可以動用如下命令,快速切換:

:bnext      縮寫 :bn

:bprevious   縮寫 :bp

:blast  縮寫 :bl

:bfirst 縮寫 :bf

上圖中,我們還可以看到5有乙個%a,這表示當前檔案,相關的標記如下:

- (非活動的緩衝區)

a (當前被啟用緩衝區)

h (隱藏的緩衝區)

% (當前的緩衝區)

# (交換緩衝區)

= (唯讀緩衝區)

+ (已經更改的緩衝區)

2、vim 執行命令

quickfix

假如我們有乙個hello.cpp檔案和乙個makefile,於是我們可以直接在vim下輸入 :make , 於是就可以make這個hello.cpp檔案,如果出錯了,我們需要按回車返回,這個時候,我們可以使用下面的命令來把出錯顯到在vim的分屏中:

:cw

於是,就會出現下面右邊的那個樣子:(是不是看上去和我一樣很帥?)

上圖中左邊是我的makefile,右邊是我的錯誤百出的源**,右邊下面是quickfix窗屏。你可以看到quickfix窗屏指向的第乙個錯誤已經定位到我們相就錯誤的檔案行上了。

你可以使用像瀏覽檔案那樣用j, k在quckfix窗屏中上下移動到相應的錯誤上然後按回車,然後就可以在上面的窗屏裡定位到相應的原始檔的**行。但是,如果是這樣的話, 你要定位下一條錯誤還得用ctrl +w 回到quickfix屏中來然後重複來過。

你可以使用下面的命令而不用回到quickfix中來:

:cp 跳到上乙個錯誤:cn 跳到下乙個錯誤:cl 列出所有錯誤:cc 顯示錯誤詳細資訊

下面我們來看另乙個quickfix的功能。

如果你用過vim的cscope外掛程式,你就知道cscope可以用來查詢相當的**,但cscope需要事先生成乙個資料庫,對一些簡單的查詢,其實,我們用vim的grep命令就可以了,不需要專門為之生成資料庫。vim的grep命令和shell的幾乎一樣。

我們來看個例子:

比如我們正在瀏覽nginx的**,這時,我想看看**用到了nginx的ngx_http_var_indexed巨集。於是,我可以在vim裡輸入如下的命令:

上面這個命令意思是遞迴查詢src目錄下所有的.c和.h檔案,其中包括ngx_http_var_indexed巨集。然後,你就會看到vim到shell裡去執行並找到了相關的檔案,按回車返回vim後,別忘了用 【:cw 】把grep的輸出取回來,於是我們就有下面的樣子:

然後同上面一樣,你可以用 j,k 鍵移動quickfix裡的游標到相應的行,然後按回車定位檔案,或是使用【:cn】或【:cp】來移動到定位。(這樣,你會把多個檔案開啟到緩衝區,別忘了【:ls】來檢視緩衝區)

你看,到這裡,乙個小小的ide就這樣產生了,而且,最帥的時,我們連一點外掛程式都沒有裝,也沒有在.vimrc檔案中配置過什麼

3、有用的快捷鍵

字元相關

【guu 】 – 把一行的文字變成全小寫。或是【vu】

【guu】 – 把一行的檔案變成全大寫。或是【vu】

按【v】鍵進入選擇模式,然後移動游標選擇你要的文字,按【u】轉小寫,按【u】轉大寫

【ga】 –  檢視游標處字元的ascii碼

【g8】 – 檢視游標處字元的utf-8編碼

【gf】  - 開啟游標處所指的檔案 (這個命令在打到#include標頭檔案時挺好用的,當然,僅限於有路徑的)

【*】或【#】在當前檔案中搜尋當前游標的單詞

縮排相關

【>>】向右給它進當前行 【<

【=】  - 縮排當前行 (和上面不一樣的是,它會對齊縮排)

【=%】 – 把游標位置移到語句塊的括號上,然後按=%,縮排整個語句塊(%是括號匹配)

【g=gg】 或是 【gg=g】  - 縮排整個檔案(g是到檔案結尾,gg是到檔案開頭)

複製貼上相關

按【v】 鍵進入選擇模式,然後按h,j,k,l移動游標,選擇文字,然後按 【y】 進行複製,按 【p】 進行貼上。

【dd】剪下一行(前面加個數字可以剪下n行),【p】貼上

【yy】複製一行(前面加個數字可以複製n行),【p】貼上

游標移動相關

【ctrl + o】向後回退你的游標移動

【ctrl + i 】向前追趕你的游標移動

這兩個快捷鍵很有用,可以在tab頁和windows中向前和向後trace你的游標鍵,這也方便你跳轉游標。

讀取shell命令相關

【:r!date】 插入日期

上面這個命令,:r 是:read的縮寫,!是表明要執行乙個shell命令,意思是我要把shell命令的輸出讀到vim裡來。

Vim實戰指南 三 高階技巧

當vi入門後,在你日常使用中,會遇到下面幾個問題 我編輯好的文字,怎麼無法儲存?是不是要重新來一次?我誤操作,怎麼回退撤銷?只能退出vi重新開啟嗎?我能同時複製多個不連續的行嗎?一行一行複製貼上太慢了。下面我將要介紹的內容不僅會解決上述問題,還會介紹幾個高階小技巧。vi file實際上,你可以用vi...

vim 高階應用

從windows 拷貝到linux vim 中常常用格式混亂的現象,只需要執行如下幾步,即可實現格式化。1 gg 跳到檔案的第一行。2 shift v進入檢視模式 行選模式 3 g shift g 跳到檔案的最後一行,即此時己經全部選中。4 按下等號進行格式化操作。批量操作在編碼中也常用的基本技能。...

vim高階應用

命令模式 s 為表示替換動作,表示所有行,g 表示全文,表示行首,表示行尾。s usr bin bin g 把檔案中所有路徑 usr bin換成 bin或 s usr bin bin g d 刪除全部 dg 刪除游標後所有行 u 恢復上一步操作 x 不提示,直接退出並儲存 1,s m g 將dos格...