2012年11月24日土曜日

[vim] 別のファイル開いた時、Ctrl+tで元のファイルに戻れたら便利だと思う

背景


ソース読むときなり、プログラム書くときなり、タグジャンプはよく使ってるな。というか使わんとやってられん。今のこの環境、結構満足できてるんだけど、ひとつ不満なことがある。それは、別のファイル開いたら、さっきまで開いてたファイルがどれだったか、わかんなくなってしまうこと。そこまで深くないソースなら、それほど開くバッファ多くないから不便は無いが、深いソースになってくるとbuffer内に10個くらい溜まってきて、さっき見てた奴どれかわからなくなる。

うまく定着するかはわからんが、対策を一つ思いついた。今開いてるwindowからバッファが離れるタイミングで、タグスタックにそのバッファを登録しておけば、別のファイル開いてもタグでジャンプしたみたいな感覚で、Ctrl+t押せば元のファイルに戻れるのではないか?。これやってみるか。

しかし、タグスタックに対象を追加する方法が見つからない。そんなコマンドヘルプにも無いし、ぐぐってもいいの出てこない。いやでも絶対やり方あるでしょ、と思って調べ続けるけどない。。仕方ない、力技でいく。

方法は、「BufWinLeaveするときに、どっか適当なファイルにジャンプして、そのあと別のバッファを開く」というやりかた。ジャンプすれば、タグスタックに追加されるってなら、どこでもいいからジャンプしちゃえばいいじゃんってやりかた。・・・絶対、もっと良いやり方あるよな。。でも、できないよりはマシか。。

やってみた感



vimrcには以下の感じで設定する。
"----------------------------------------------------------+
" add currnet file to tagstack
"----------------------------------------------------------+

autocmd BufWinLeave .vimrc call AddTagstack()
autocmd BufWinLeave *.vim call AddTagstack()
autocmd BufWinLeave *.py call AddTagstack()
autocmd BufWinLeave *.php call AddTagstack()
autocmd BufWinLeave *.markdown call AddTagstack()

set tags+=/home/karino/.foraddtagstack
function! AddTagstack()
    execute "tag tag_for_add_tagstack"
endfunction
そして、/home/karino/.foraddtagstackは以下の感じ。
tag_for_add_tagstack ~/.foraddtagstack /^tag_for_add_tagstack/;" f
とりあえず、できるようにはなった。。
なかなか便利だ。
でも、なんていうか。絶対もっといい方法あるはず。。

0 件のコメント:

コメントを投稿