2009/02/09

打造自己的VIM: 書籤及游標移動

有在用ultraEdit或pspad等編輯器的人,應該都知道我們可以設置一些標籤(編號通常由1到0)在檔案的某些地方,這些標籤可以讓使用者快速回到設置標籤的位置。

在VIM裡當然也有這個功能且更強大,但就某方面來講,也可以說以便利性或是上手速度來說也較不容易。今天這篇文章會由簡入難,先跟大家簡述一下VIM的書籤功能,接著再介紹如何使用VisualMark來打造一個簡單易用的書籤環境,最後會跟各位分享我在VIM裡常用的游標移動功能,這些功能能讓各位更快的將游標移到自己想到的位置。

有關VIM document裡有關游標移動的章節為[motion],關於[書籤]的部分請參考這裡。


VIM的書籤功能

VIM的書籤分成2大類,1)同檔案內可以編號由a-z,2)跨檔案可以由編號A-Z,這兩類的差別是第一種在每個檔案內都有自己的書籤a-z,第二種則是所有檔案共享,換句話說,你可以由檔案A藉著書籤的方式跳至該書籤的所在檔案。

書籤設置的方法為

m{a-zA-Z}

舉例來說在normal mode底下輸入ma,即會設置書籤a。而輸入mA則是建立跨檔案書籤。

跳到書籤處的方式為

`{a-zA-Z}

"`"為1左邊的那個鍵。

顯示書籤則為

:marks

使用後大家或許會發現VIM的書籤的有個致命的缺點,就是他不會在每行的最左邊顯示這裡有設置書籤及書籤編號,這個缺點可以用[ShowMarks]這個Plugin來改善,此外ShowMarks也提供一些不錯用的快速鍵,有需要的人自己看一下他們網頁,自己稍微試一下吧。


VisualMark

[VisualMark]是另一個VIM書籤Plugin,請看下圖,它提供了2個功能,一是反白有書籤的行(圖362行及369),二是逐一(根據行號)跳至書籤位置。這是我常用的功能,我也把他加入到我的功能表了。並且在vimrc加入這些key mapping。

"<F9> mark: in plugin filesmap
<F9> <Plug>Vm_toggle_signmap
<c-F9> <Plug>Vm_goto_next_signmap
<s-F9> <Plug>Vm_goto_prev_sign





游標的瞬間移動


我以前幾乎不用這些游標移動的功能,後來發現螢幕愈來愈大光按著j (即向下),從螢幕第一行要移到最後一行挺痛苦的,所以我這裡稍微跟大家分享我自己常用的有關游標移動的快速鍵。

h "左
j "下
k "左
l "右

"這類移到我多到在選擇單字時
w "移動到下一個單字字首
W "移動到下一個單字字首,移動更多(某些標點符號不停)
e "移動到下一個單字字尾
E "移動到下一個單字字尾,移動更多(某些標點符號不停)
H "移到螢幕首
M "移到螢幕中
L "移到螢幕尾

zz "將目前所在行移到螢幕中
zt "將目前所在行移到螢幕第一行
zb "將目前所在行移到螢幕最後一行

* "往前找出游標所在字串 (按 n、N 繼續找)
# "往後找出游標所在字串 (按 n、N 繼續找)
gd "將游標所在字串視為 local 變數,找到定義此 local 變數的地方 (如果有的話)


% "找披配的括號
[[ "找函數的開頭
]] "找下一個函數的開頭

No comments: