因為Vim7開始有Tabbed Edit, 所以也開始慢慢的適應並取代掉以往開好幾個Terminal的習慣.
在有Samba的環境, 我會比較喜歡用Gvim, 配合一個Terminal就可以一邊寫程式一邊看Log, 很方便. 為了讓我少碰滑鼠, 也開始Mapping些Hotkey去給Tabbed Edit使用. 我習慣Mozilla的Hotkey, 所以只先做了:tabnew跟:tabnext :tabprev.
map
map
map
而後來發現在Insert mode時這些key會出狀況, 又加上了
imap
imap
但是到了使用Terminal時就慘了, 我用PuTTY不改任何Terminal Setting時, Ctrl-Left 跟 Ctrl-Right就會失效, 花了一點時間去抓一下Keymap後, 才發現在Xterm下的Arrow Key有著不同的keycode, 所以要改成
map ^[[D :tabprev
map ^[[C :tabnext
其中的^[是用Ctrl-V Esc打出來的. 所以完整的通用解法是
2006/07/24補: 加上用urxvt時的
if &term =~ “xterm”
if has (“terminfo”)
set t_Co=16
set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m
set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m
map ^[[D :tabprev
map ^[[C :tabnext
imap ^[[D
imap ^[[C
else
set t_Co=16
set t_Sf=
set t_Sb=
map
map
imap
imap
endif
elseif &term =~ “rxvt”
set t_Co=16
set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m
set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m
map ^[OD :tabprev
map ^[OC :tabnext
imap ^[OD
imap ^[OC
endif
syntax on
這樣就可以在Terminal下正確的用<C-Left>跟<C-Right>了.
[…] NEKOB-log-E » Blog Archive » Vim7 的 與 (tags: Tech Vim Tips) […]