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 =2let filename_length = strwidth(filename)+ label_margin
if filename_length >a:tab_width
" Truncate filenamelet ellipsis ='...'letfilename=filename[0:(a:tab_width - strwidth(ellipsis)- label_margin -1)].ellipsis
else " Append spacerletfilename=filename . repeat(' ',a:tab_width - filename_length)endif
課題
- オプションの追加
- help の作成
参考
vim-responsive-tabline を作成するにあたって、以下のサイトを参考にさせていただきました。
感想
小さいプラグインではありますが、Vim を自分好みにちょっと近づけられたような気がして満足度は高めです。