vim7のタブ設定
vim version7 からタブが使えるようになったわけだが、虜になりつつある。
とりあえず基本
よく使うものを挙げておいてみる。[]内は省略可。countは数値。
コマンド
- :tabnew or :tabe[dit]
- 新たなタブを現在タブの後ろに開く
- :tabe[dit] or :tabnewfile
- fileを新たなタブに開く
- :tab cmd
- コマンド結果を新たなタブに開く。ex).
:tab help version7
- Ctrl+w gf
- カーソル下にあるファイルを新たなタブに開く
- :tabc[lose][!][ count]
- 現在のタブを閉じる(:qと同じ?)。count(バッファ番号)を指定するとそのタブを閉じる
- :tabo[nly][!] or countgt
- 他のタブを全て閉じる
- :tabn[ext][ count]
- 次のタブへ移動。countが指定されるとそのバッファ番号のタブへ移動
- :tabp[revious][ count]
- 前のタブへ移動。countが指定されるとその数分前のタブへ移動(
tabn
の時と違うので注意) - :tabs
- タブのリスト表示。
- :tabm[ove] count
- countへタブを移動(バッファ番号の変更)
カラー
- TabLine
- タブのカラー
- TabLineSel
- 現在タブのカラー
- TabLineFill
- 余った領域のカラー
その他設定
- tabline
- 表示されるタブ設定。
statusline
と同じような設定方が可能 - showtabline
- tablineの表示に関わる。0:表示しない 1:2つ以上のタブがあるとき表示 2:常に表示。ex).
set showtabline=2
オイラの設定
map系
nmap <S-t> :tab nmap <Tab> :tabn<CR>
Shit + tはちょっと特殊かもしれないがタブ系のコマンドは:tab
から始まるものがほとんどなので楽をするため。
Tabは単純に次のタブへ移るため。本当はCtrl + Tab,Ctrl + Shift + Tabで次タブと前タブへの移動をしたかったが、Tabがctrl + i
と同値だからか、Ctrlとの組み合わせがうまく行かなかったので苦肉の策といった感じ。
カラー
hi TabLine term=reverse cterm=reverse ctermfg=white ctermbg=black hi TabLineSel term=bold cterm=bold,underline ctermfg=5 hi TabLineFill term=reverse cterm=reverse ctermfg=white ctermbg=black
デフォルトだとどれが現在のタブか判別し難かったのでカスタマイズ。
showtabline,tabline
説明で
と書いたが、statuslineは他のバッファを考慮しなくて良い関係上楽なのだが、tablineの場合はそうもいかない。他のタブの状態を見れてこそのタブだ。よって関数を用いて文字列を形成し返す方法を取る。statusline
と同じような設定方が可能
正直わざわざやらなくてもデフォルトで十分であるかもしれないが、バッファの番号を出力しておきたかったのでカスタマイズした。
set showtabline=2 set tabline=%!MyTabLine() function MyTabLine() let s = '' for i in range(tabpagenr('$')) if i + 1 == tabpagenr() let s .= '%#TabLineSel#' else let s .= '%#TabLine#' endif let s .= '%' . (i+1) . 'T' let s .= ' ' . (i+1) . (1==getwinvar(i+1,'&modified')?'[+]':'') . ' %{MyTabLabel(' . (i+1) . ')} ' endfor let s .= '%#TabLineFill#%T' if tabpagenr('$') > 1 let s .= '%=%#TabLine#%999Xclose' endif return s endfunction function MyTabLabel(n) let buflist = tabpagebuflist(a:n) let winnr = tabpagewinnr(a:n) return bufname(buflist[winnr - 1]) endfunction
これらを.vimrcに入れておけばの様なバッファ番号更新情報 ファイル名
となる。更新情報はもしそのバッファが更新されていれば[+]
が入る。