タブ切替えとかのキーマップ

vim もタブが使えるようになってとても happy ですが、毎回 :tabn って打つのも面倒。ちなみに脳内では「たぶん」という発音になっていてちょっと気持ち悪いです。

世の中では にしている人が多いらしい。しかし、気持ちとしては elscreen な状態なので、 elscreen の prefix key であるところの "C-]" に対応して、 "C-] c" or "C-] C-c" にしたいところ。

ちょっとまとめてみました。

状況 新規作成 ~ 次へ ~ 前へ ~
screen C-t c C-t C-c C-t n C-t C-n C-t p C-t C-p
elscreen C-] c C-] C-c C-] n C-] C-n C-] p C-] C-p
vim C-] c C-] C-c C-] n C-] C-n C-] p C-] C-p

なかんじにしたいと。(すごい冗長な表だ...。)

食われちゃうキー

この場合、 prefix であるところの C-t, C-] がつぶされるんだけど、 emacs で transpose-chars も abort-recursive-edit も使わなかったこと、広瀬さんの

最初に思い付いたのが、C-] でこれは telnetエスケープのときにしか使わないのでなかなか良い。でも欠点としては、片手で押せないからコーヒーを飲みながら操作できない…。てことでわしは C-t で落ち着いた。 prefixは ~/.screenrc で次のようにして変えることができる。

(http://www.gentei.org/~yuuji/rec/pc/intro-screen.htmlより) によってほぼ決まりでした。

じゃあ vim はどうなんだろう? C-] は :help 見るときに使ったし(vimtutorで知った)、C-t はいまんとこ使ってないけど、便利そうな tag 関連。んー、まあ tag のことはとりあえず忘れて、 C-] は救済したいよね。

キーを拾う

いろいろ試行錯誤しているうちに、どうも

map c :tabnew

とかを設定しても、 C-] を打ってからしばらく待つと単体の C-] が入力されたと解釈するみたい! なんかすごいね。

そして意外にはまったのが C-c でした。

map  :tabnew

しても C-C の時点で C-] の入力がキャンセルされたと扱われるみたい。 emacs の C-g みたく、ちょっと特別扱いなのかな?

よくわかんないけど C-] と同じように遅延解釈みたいなのでごまかせないかな、と思っててきとうに

map  

としてみたら、 C-c 2連打でもとの C-c っぽくなったのでいいことにしよう。

結論

ということで、以下のような設定に落ち着きました。

" タブの設定
if version >= 700
    map <C-C><C-C> <C-C>
    map <C-]>c :tabnew<CR>
    map <C-]><C-C> :tabnew<CR>
    map <C-]>n :tabn<CR>
    map <C-]><C-N> :tabn<CR>
    map <C-]>p :tabp<CR>
    map <C-]><C-P> :tabp<CR>
endif

思えばzshを本気で使い出したのも広瀬さんのページの「tcshなんて...」(続きはhttp://www.gentei.org/~yuuji/rec/pc/intro-zsh.html をどうぞ!)だったり、日々 yatex のお世話になっていたり。まあ、あと、gentei.orgのns先にもお世話になってるようです。

こりゃはやいとこ限定解除しないと失礼ですよね! いや、たぶん教習所通いますが...。