Vim (その2) Advent Calendar 2016 の 19日目の記事です。
vim-responsive-tabline
タブページ数に応じて幅が変わる tabline を実現する vim-responsive-tabline を作りました。
動機
自分はウィンドウの分割等はせず、1バッファを1タブページに割り当てる使い方をしているため、タブページが増えやすく tabline に表示しきれなくなることが度々あります。
そこで、chrome のようにタブが増えたらタブ1つあたりの幅を小さくしてくれると嬉しいなと思い vim-responsive-tabline を作成しました。
仕組み
1つのタブページあたりの幅を &columns
をタブページ数で割って算出するという単純な仕組みです。
表示するファイル名が tab_width
(タブ1つあたりの幅)を超えていた場合は切り詰め、tab_width
以下の場合はスペースで埋めることで、幅を固定しています。
let label_margin = 2
let filename_length = strwidth(filename) + label_margin
if filename_length > a:tab_width
" Truncate filename
let ellipsis = '...'
let filename = filename[0:(a:tab_width - strwidth(ellipsis) - label_margin - 1)].ellipsis
else
" Append spacer
let filename = filename . repeat(' ', a:tab_width - filename_length)
endif
課題
- オプションの追加
- help の作成
参考
vim-responsive-tabline を作成するにあたって、以下のサイトを参考にさせていただきました。
感想
小さいプラグインではありますが、Vim を自分好みにちょっと近づけられたような気がして満足度は高めです。