Vim 的状态栏
本来很少关注 Vim 的状态栏,因为其设置有一大堆的好像很让人看不懂的符号,要想看明白的话,总觉得有些头疼。所以每次想要显示些什么东西,网上搜一下多数都可以得到,慢慢也就不再理它。直到最近看到一篇文章写的单独设置 quickfix 和 minibuffer 窗口的状态栏,才尝试着看了看,略有所得。
查看状态栏帮助:
:h statusline
设置状态栏:
:set statusline = {string} " 全局设置 :setlocal statusline = {string} " 局部设置
其中 {string} 指的是一组字串,状态栏设置的关键也在于此。
{string} 的基本组成是这样的:
%-0{minwid}.{maxwid}{item}
% 是新的 {item} 起始符,每个 {item} 都必须以此为开始
- 表示左对齐,默认是右对齐
0 表示当 {item} 是数值型时,不足的前缀以0补齐
{minwid} 是 {item} 的最小宽度,该值必须小于或等于50
{maxwid} 是 {item} 的最大宽度
{item} 即要显示到状态栏的内容,该内容可以是数字、字串、标记或 not applicable (不懂怎么译),具体内容可见帮助文档
以上几项,除起始符(%)和 {item} 外,其余均不是必须的。
另外,状态栏最多只能包含80个 {item}。
示例:
fun! FixMiniBufExplorerTitle() if "-MiniBufExplorer-" == bufname("%") setlocal statusline=%-3.3n%1*\|%* setlocal statusline+=\[\-Mini\ Buffers\ Explorer\-\] setlocal statusline+=%=\ %1*\|%*\ %<%P endif endfun
该函数是重设 MiniBuffer 的状态栏,若当前窗口是 MiniBuffer("-MiniBufExplorer"),则重设 statusline 为:
%-3.3n (Buffer 序号)
%1*\|%* ( 以 | 间隔,且 | 的颜色修改为 %1*,| 后状态栏颜色恢复成 %* )
\[\-Mini\ Buffers\ Explorer\-\] ( 重设的 MiniBuffer 标题 )
%= (空白扩展,即让此item之前的靠左边显示,此item之后的靠右边显示,中间留空)
\ %1*\|%*\ (和之前一样,分隔符)
%< (当窗口宽度不足显示全部状态栏时,此 item 之后部分可隐藏)
%P (显示文件位置百分比)
这个示例中,和平常用 "set statusline = " 最大的不同是,此例中的 statusline 的赋值没有以 字串 的形式,因此,当需要显示一些特定符号如竖线、空格时,均需要以 "\" 声明