Status Lines

来看看如何自定义状态栏显示.

Statusline 是 Vim 的一个 option, 可通过:

:set statusline?

查看当前的 statusline 配置.

当然, 我们也可以自定义状态栏的显示内容.

打开一个Markdown 文件, 命令行模式下, 输入:

:set statusline=%f\ -\ FileType:\ %y

会看到状态栏显示如下类似内容:

foo.md - FileType: [markdown]

这里的 %f表示当前文件的相对路径, %y 表示文件的类型.

statusline 的设置, 有些类似 C 里面的 printf.

它的通用格式如下:

%-0{minwid}.{maxwid}{item}

其中, 除了%{item}, 其他都是可选的. 而 minwd, maxwid 分别指的是最小和最大宽度.

看几个简单的例子就清楚了.

显示行号:

:set statusline=Current:\ %4l\ Total:\ %4L

会看到状态栏显示如下类似内容:

Current:    9 Total:   66

这里设置了最短长度4, 默认用空格来补全.

可以设置为用0来补全:

:set statusline=Current:\ %04l\ Total:\ %04L

状态栏显示如下:

Current: 0009 Total: 0066

再比如, 显示文件的绝对路径:

:set statusline=%.20F

此处, 最大宽度设置为20, 状态栏显示如下:

<-on-buffer-local.md

通过 :h statusline , 可以查看所有可用的 item 及其对应含义.

此外, 如果 statusline 是以 %! 开头, 比如 :set statusline=%!MyStatusLine() , 则表示MyStatusLine() 是个表达式, 这个表达式的结果才是 statusline 对应的值.

如果你安装了airline, 命令模式输入:

:set statusline?

会看到输出结果:

statusline=%!airline#statusline(1)

这里就是使用了%!.

书中还介绍了%=, 用于对齐, 这里就略过了.

OK, 本节结束, 我去吃点好吃的奖励下自己还没弃坑😋