0

我已经为 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*\ ››\ %*
4

1 回答 1

2

我只是不知道该怎么做,我在网上找不到答案

寻找答案的最佳位置是 Vim 的帮助系统。在这种情况下,它是:help 'statusline'. 完成后,您可以简单地 google 以通过示例学习其他人的工作。一个关于SO的相关话题一个鼓舞人心的vimrc。而且,当然 ;-),这是我的状态栏

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

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

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

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

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

只需对某些元素使用默认颜色 ( ) ,%*它就会自动切换。与默认状态行相同。如果您不喜欢当前的配色方案,可以使用命令强制更改它。但请注意,它也用于.StatusLineStatusLineNCStatusLine:highlightStatusLineWildMenu

起初,我有一个想法,只是在整个状态行下划线,但我不知道该怎么做。

你不会在 Vim 中为“一些文本”添加下划线。您改为使用“带下划线”的颜色组。之类的:hi User1 gui=underline guifg=... guibg=...

于 2019-06-15T10:34:35.080 回答