状态条

最后更新于:2022-04-01 21:04:41

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 " 文件的类型 ~~~ 第一个命令使用`=`来设置状态条只显示文件名,从而将之前的所有会在状态条中显示的值都屏蔽掉。之后再使用`+=`逐渐添加其他要显示的内容,一次添加一条。同时还使用注释来说明每一条所表示的含义以方便其他的人阅读我们的代码(也会方便我们自己以后阅读)。 执行下面的命令: ~~~ :set statusline=%l " 当前行号 :set statusline+=/ " 分隔符 :set statusline+=%L " 总行数 ~~~ 现在状态条只包含当前所在行以及文件的总行数,并且显示成`12/223`这个样子。 ## 宽度和边距 可以在`%`后面添加额外的字符来改变状态条中信息的显示样式。执行下面的命令: ~~~ :set statusline=[%4l] ~~~ 现在状态条中的文件行数会至少显示为4个字符的宽度(例如:`[ 12]`),这可以用于防止状态条中的文字总是令人厌烦地跳来跳去。 默认情况下在值的左边添加边距。执行下面的命令: ~~~ :set statusline=Current:\ %4l\ Total:\ %4L ~~~ 你的状态条看来会是这个样子: ~~~ 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 ~~~ 如果有必要路径会被删简,像下面这样: ~~~ ';