tabeで開いているファイルはそのタブにジャンプする
こんな感じで,どんどん同じファイルが別タブで増えるのが嫌だったけど情報か見つからなかったので, vimrcを書きました
中身
これを$MYVIMRC
にコピペすればtabeでできるはず
command! -nargs=1 -complete=file Tabe call MyTabEdit(<f-args>)
function! MyTabEdit(...) abort
let l:sbuf = &switchbuf
if bufexists(a:1)
let l:bufnr = bufnr(a:1)
if l:bufnr is bufnr("%")
" いま開いているなら何もしない
return
endif
for i in range(tabpagenr('$'))
let l:bufs = tabpagebuflist(i+1)
for j in l:bufs
if j is l:bufnr
" 別タブで開いているならsbufferで飛ぶ
set switchbuf=usetab
execute "sbuffer" j
let &switchbuf = l:sbuf
return
endif
endfor
endfor
" 見えていないバッファなら, 別タブで開く
execute "tab split" a:1
else
" バッファがなければ開く
execute "tabe" a:1
endif
endfunction
cnoremap tabe Tabe
cnoremap tabedit tabedit
-
command! ...
:TabeでMyTabEdit関数を呼び出せるようにコマンド登録する.-complete=file
を入れとくとtabキーでファイル補完ができるらしい -
MyTabEdit
コメントにあるとおり.
別タブで開く時は, switchbuf=usetabにして, sbufferでバッファを開くようにしている. -
cnoremap ...
:tabe
と入力したときに:Tabe
と自動で変換する
同様に:tabedit
と入力したときは:Tabedit
とならないように,:tabedit
と変換する.
その他
変数の展開の仕方から, 関数の作成, 実行方法まで何もかもわからなかった.
勉強しながらかいたのでもっといい方法あるのかも...
ご存知でしたらおしえてください