如何根据状态行中的可用空格向vim状态行添加可变数量的字符

时间:2019-06-15 03:36:38

标签: vim statusline

我已经为vim设置了自定义状态行,但遇到了一个问题,当我执行:split时,由于设置方式的原因,很难看到缓冲区之间的分隔。现在,我想添加一个字符,以充当左侧文本与右侧文本之间的分隔边框。左边是文件名及其路径(其长度会有所变化),右边是有关缓冲区号的信息。我无法对字符进行硬编码,因为有时文件路径太长会被截断。我希望能够调用一个函数,该函数将根据状态行两端之间的空白量返回可变数量的字符。

我曾经想过多种方法来解决此问题,但我只是不知道该怎么办,因此无法在线找到答案。 一开始,我只想强调整个状态线,但我不知道该怎么做。

现在我添加可变数量的字符的想法有所不同,我想定义一个使用正则表达式读取状态行文本并将该行替换为完全适合给定空白的可变数量字符的函数

我不知道该怎么做,我们将不胜感激。 另外,我还想使状态栏的某个元素根据光标所在的缓冲区改变颜色,以便更容易找到正确的窗口,我也找不到任何方法,而且在指针中也找不到正确的方向将不胜感激。

set laststatus=2
set statusline=
set statusline+=%2*\ %l
set statusline+=\ %*
set statusline+=%1*\ ‹‹
set statusline+=%1*\ %t\ %*
set statusline+=%1*\ ››
set statusline+=%1*\ %m
set statusline+=%3*\ %F
set statusline+=%{AddSeperator()}
set statusline+=%=
set statusline+=%3*\ ‹‹
set statusline+=%3*\ %{strftime('%R',getftime(expand('%')))}
set statusline+=%3*\ ::
set statusline+=%3*\ %n
set statusline+=%3*\ ››\ %*

1 个答案:

答案 0 :(得分:2)

  

我只是不知道该怎么办,也无法在线找到答案

寻找答案的最佳地点是Vim的帮助系统。在这种情况下,它是:help 'statusline'。完成后,您可以简单地通过谷歌搜索其他人的工作,以身作则。 A relevant topic on SOan inspirational vimrc。而且,当然;-),这里是my status line

  

我无法对字符进行硬编码,因为有时文件路径太长会被截断。

这意味着您必须剪切文件路径。然后,您可以添加一个空格以确保至少有一个空格:

set statusline+=%3*\ %<%F
set statusline+=\ %=

如果您不喜欢“普通空格”,请阅读:help 'fillchars'

  

我还想使状态栏的某个元素根据光标所在的缓冲区改变颜色,以便更容易找到正确的窗口

只需对某些元素使用默认颜色(%*),它将自动在StatusLineStatusLineNC之间切换。与默认状态行的方法相同。如果您不喜欢当前的配色方案中的StatusLine,则可以使用:highlight命令来强制更改它。但是请注意,StatusLine也用于WildMenu

  

起初,我只想强调整个状态线,但我不知道该怎么做。

您不会在Vim中对“某些文本”加下划线。您可以使用“带下划线”的颜色组。 :hi User1 gui=underline guifg=... guibg=...等。