玩轉VIM編輯器-導航移動 - 郭—大—俠 - 部落格園 http://www.cnblogs.com/shaoguangleo/archive/2011/10/29/2806034.html
玩轉VIM編輯器-導航移動
如果像前面所說的,只是通過h、j、k、l 來移動游標,在大量移動的過程中會發現比較耗費時間並且效率不高。這一節就主要通過一些快捷的導航移動方式來快速移動游標到達指定的位置。 數值參數
比如準備向右移動4個字元,就可以使用4l,相當於llll。 滾動整頁或半頁
導航鍵 |
描述 |
CTRL+F |
向下滾動整頁 |
CTRL+B |
向上滾動整頁 |
CTRL+D |
向下滾動半頁 |
CTRL+U |
向上滾動半頁 |
CTRL+E |
向下滾動一行 |
CTRL+Y |
向上滾動一行 |
字的導航
導航鍵 |
描述 |
w |
移動到下一個word的開始處 |
W |
移動到下一個WORD的開始處 |
e |
移動到當前word的末尾 |
E |
移動到當前WORD的末尾 |
b |
移動到前一個word的開始處 |
B |
移動到前一個WORD的開始處 |
word和WORD的區別 word由一系列的字元、數字和底線構成,而WORD是由非空白符組成的字串,有空格分開。例如image[0].x = 192.15,那麼這個有很多的word組成,而只有三個WORD組成,分別為:image[0].x、=和192.15。 一行中的幾個游標特殊位置
導航鍵 |
描述 |
0 |
跳轉至當前行的開始 |
$ |
跳轉至當前行的結束 |
^ |
跳轉至當前行開始的第一個非Null 字元 |
g_ |
跳轉至當前行最後一個非空的字元 |
段落、章節、語句的跳轉
導航鍵 |
描述 |
{ |
移動至當前段落的開始 |
} |
移動至下一段落的開始 |
[[ |
移動至當前章節的開始 |
]] |
移動至下一章節的開始 |
( |
移動至當前語句的開始 |
) |
移動至下一語句的開始 |
好好體會段落、章節和語句的含義。其中段落比較使用,可以從一個子函數中來回的跳轉。章節:大跳轉。語句:空白行分割。 螢幕導航
導航鍵 |
描述 |
H |
移到螢幕頂端的行-home |
M |
移到螢幕中央的行-middle |
L |
移到螢幕底端的行-last |
nH |
移到螢幕頂端往下的第n行 |
nL |
移到螢幕底端網上的第n行 |
使用當前行重繪螢幕
導航鍵 |
描述 |
z然後ENTER |
將游標行移到螢幕頂端並滾動螢幕 |
z. |
將游標行移到螢幕中心並滾動螢幕 |
z- |
將游標行移到螢幕底端並滾動螢幕 |
200z然後ENTER |
會把第200行移到螢幕頂端 |
快速跳轉至檔案首尾
導航鍵 |
描述 |
:0 |
跳轉至檔案頭-方法1 |
gg |
跳轉至檔案頭-方法2 |
1G |
跳轉至檔案頭-方法3 |
:$ |
跳轉至檔案尾-方法1 |
G |
跳轉至檔案尾-方法2 |
跳轉至檔案的第N個字元、N%
導航鍵 |
描述 |
50% |
跳轉至檔案的50%處,即檔案中間 |
75% |
跳轉至檔案的75%處,即3/4處 |
100l |
跳轉至從當前位置開始計算的第100個字元 |
100<space> |
跳轉至從當前字元開始計算的第100個空格處,與上述100l含義相同 |
:goto 25 |
移動至從檔案開始處的第25個字元 |
25 | |
移動到當前行的第25個字元 |
顯示當前行數
命令 |
描述 |
:set number :set nu |
顯示行數 |
:set nonumber :set nonu |
不顯示行數 |
:set numberwidth=10 |
行數顯示預設寬度為4個字元,我們可以通過該命令來設為10個字元。 |
跳轉至特定行
導航鍵 |
描述 |
:50 |
跳轉至50行-方法1 |
50gg |
跳轉至50行-方法2 |
50G |
跳轉至50行-方法3 |
源碼導航 下面的幾個對與經常寫程式源碼的或者寫shell指令碼的系統管理員比較有用。
導航鍵 |
描述 |
% |
跳轉至匹配對,可以是()、{}或者[] |
[( |
跳轉至前一個沒有匹配的( |
[) |
跳轉至前一個沒有匹配的) |
[{ |
跳轉至前一個沒有匹配的{ |
[} |
跳轉至前一個沒有匹配的} |
在插入狀態移動游標 在常規狀態下,我們可以通過w和W來在word中移動游標,但是一旦進入了插入模式,就不能使用這兩個導航鍵了,但是我們也不需要退出插入模式,然後在使用w導航,我們可以使用SHIFT+方向鍵來快速移動。 使用CTRL+O和CTRL+L跳轉
Vim會儲存我們在其中的所有導航操作到一個列表,我們可以使用:jumps來查看該列表,同時可以使用下述導航鍵來進行跳轉。
CTRL+O |
跳轉至前一個記錄點 |
CTRL+i |
跳轉至後一個記錄點 |
5CTRL+O |
跳轉至目前記錄點的前5個 |
5CTRL+i |
跳轉至目前記錄點的後5個 |
在很長的一行中導航 我們知道一般終端的每一行都會有個字數限制,如果一行的字元數超過了這個限制,就會自動跳轉到下一行,比如實際的一行可能你看起來是5、6行的樣子,那麼這個時候你如果使用j、k那麼就有種跳轉了N行的假象。在這種情況下,如果在視覺情況下,跳轉到下一行(其實是同一行),使用下述導航鍵。
導航鍵 |
描述 |
gj |
視覺中的下一行 |
gk |
視覺中的上一行 |
g^ |
當前視覺行的行首 |
g$ |
當前視覺行的行尾 |
gm |
當前視覺行的中間 |
Vim命令列導航 在我們使用vim開啟檔案的時候,就可以按照自己的需要跳轉到指定的位置。
命令列 |
描述 |
vim +143 <filename> |
開啟檔案filename,並跳轉到143行 |
vim +/search-term <filename> |
開啟檔案filename,並跳轉到從檔案頭開始的第一個合格位置 |
vim +?search-term <filename> |
開啟檔案filename,並跳轉到從檔案尾開始的第一個合格位置 |
vim –t TAG |
跳轉到一個特定的TAG |
使用標記建立本地書籤 有兩種書籤,本地書籤和全域書籤,區別在於本地使用小寫字母,全域使用大寫字母。
書籤命令 |
描述 |
ma |
在游標位置建立書籤a |
`a |
跳轉到書籤a的精確位置 |
‘a |
跳轉到書籤a所在行的行首 |
建立全域書籤 將ma改為mA就可以建立全域書籤A。
這個主要用在當我們開啟多個檔案的時候,建立全域書籤可以方便的在各個檔案中跳轉。 顯示所有的書籤
可以使用命令:marks來顯示所有的書籤。我們會發現不過什麼時候開啟所有書籤,都會有’, ”,[ ,]和.。這幾個都是預設的書籤,有特殊的含義。
預設書籤 |
描述 |
`” |
退出前最後編輯的位置 |
`[ |
上次修改或者複製的第一個字元 |
`] |
上次修改或者複製的最後一個字元 |
`< |
上次visual地區的第一行 |
`> |
上次visual地區的最後一行 |
`. |
最後一次修改的位置 |
`^ |
最後一次插入模式停止的位置 |
還可以使用:marks a來顯示所有關於書籤a的詳細資料。 使用ctags來有效地在源碼中跳轉
1. 當然使用之前,需要先行安裝ctags包;
2. 在源碼檔案夾中,使用ctags *.c來產生一個檔案名稱為tags的資訊tags檔案;
3. 然後vim main.c 後,輸入:ta main就可以直接跳轉到mian定義處,
4. 也可以使用CTRL+]來跳轉到函數的定義處,使用它CTRL+T返回到原檔案;
5. 還可以使用它:ta *然後按tab來便利需要查詢的函數;
Vim命令 |
描述 |
:ts |
顯示所有的tag表 |
:tn |
跳轉到列表中的下一個tag |
:tp |
跳轉到列表中的前一個tag |
:tf |
跳轉到列表中的第一個tag |
:tl |
跳轉到列表中的最後一個tag |
把vim變為很有魅力的源碼瀏覽器 安裝taglish外掛程式,詳細資料可以參考安裝taglish文章。
例如開啟檔案vim main.c,然後輸入:TlistOpen就可以列出所有的tag資訊;
對特定的函數或變數斷行符號,就可以看到更詳細的資訊;
當然,tag視窗也是一個vim session,我們可以通過跳轉到下一個session的方法,回到tag視窗。 Vi移動命令的複習
移動 |
命令 |
往前滾動一整屏 |
^F |
往後滾動一整屏 |
^B |
往前滾動半屏 |
^D |
往後滾動半屏 |
^U |
往前滾動一行 |