Vim 的纵向编辑模式
vim 命令整理(1) - 跳转

Vim 的状态栏

Qspy posted @ 2013年10月21日 01:07 in Vim with tags vim statusline , 14675 阅读

本来很少关注 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 的赋值没有以 字串 的形式,因此,当需要显示一些特定符号如竖线、空格时,均需要以 "\" 声明


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter