Vim允许你自定义文本区下面的状态栏里的文本,这个功能是通过设置statusline选项来实现的。运行下面的命令:
:set statusline=%f
你会看见当前文件的路径(相对于当前文件夹的路径)在状态栏里。现在运行下面的命令:
:set statusline=%f\ -\ FileType:\ %y
这次你会在状态栏里看到类似于“foo.markdown - FileType:[markdown]”的内容。
如果你对C语言的printf函数或者Python的字符串插值比较了解的话,这个选项就会比较好理解了。如果不熟悉的话,只要记住%开头的文本都是会根据后面的字符进行替换的。在我们的例子里%f被替换为当前的文件名,%y被替换为当前的文件类型。
注意用\转义的空格,因为set命令可以一次设置多个选项,选项间是用空格分开的,所以这里的空格是需要转义的。
状态栏很容易就会变得非常复杂的,所以用一个好的方式来设置的话,我们也会比较清楚的。运行下面的命令:
:set statusline=%f "当前文件的路径
:set statusline+=\ -\ "分隔符
:set statusline+=FileType:"标签
:set statusline+=%y "当前文件的类型
第一行我们用=号来清除statusline之前存在的设置。在后面的命令里我们用+=来依次拼接我们的选项。我们同时会对每一行的设置都加上注释,方便别人和自己阅读。
运行下面的命令:
:set statusline=%l "当前行
:set statusline+=/ "分隔符
:set statusline+=%L "总行数
现在状态栏只包含文本的当前行号和总行好,看起来就向“12/223”一样。
一些其他的字符可以用在%后面来改变信息的显示方式,运行下面的命令:
:set statusline=%4l
现在行号的显示宽度是4,在行号不足4位的时候前面会自动填充空格的,例如“ 12” ,这样的话,就可以防止状态栏的文本显得比较混乱了。
默认情况下,填充的空格会加在值的左边。运行下面的命令:
:set statusline=Current:\ %4l\ Total:\ %dL
现在,你的状态栏可以看起来和下面一样:
Current: 12 Total: 223
你可以用-来让填充的空格出现在右边,运行下面的命令:
:set statusline=Current:\ %-4l Total:\ %-4L
现在你的状态栏应该看起来和下面的差不多:
Current: 12 Total: 223
现在看起来好多了,因为数字和标签考的比较近。
对于数值可以显示告诉Vim用0来作为填充符,运行下面的命令:
:set statusline=%04l
现在当你的光标在第12行的时候,你会在状态栏里看到“0012”。
最后,你可以限制输出值的长度。运行下面的命令:
:set statusline=%F
%F会显示当前文件的全路径,选择用下面的命令来改变显示的最大宽度:
:set statusline=%.20F
如果显示的路径长度超过做大长度的话,就会被截断的,就像下面一样:
<hapters/17.markdown
这个功能很有用,它可以防止某些字符输出太长而占用整个状态栏。
状态栏的一般格式在:help statusline定义了:
%-0{minwid}.{maxwid}{item}
除了%外,其他的项都是可选的。
后面我们会继续讨论状态栏的设置的,不过我们还需要讨论一种简单但是很有用的设置。运行下面的命令:
:set statusline=%f "当前文件的路径
:set statusline+=%= "切换到右边
:set statusline+=%l "当前行号
:set statusline+=/ "分隔符
:set statusline+=%l "总行号
现在状态栏里既包含了当前文件的路径,也包含了当前行和总行数,分别在左边和右边显示。%=告诉vim所有在这个后面设置的选项都会显示在状态栏的右边。