在状态栏中将文本颜色设置为字符串

时间:2019-04-19 17:02:45

标签: vim

首先,我将使用Airline,plytophogy/vim-virtualenv插件和gruvbox作为Airline主题。

我正在尝试将状态行中某些字符串的颜色更改为橙​​色。 在我的情况下,这是表示我当前工作环境的“ @my_env”字符串:enter image description here

当前,.vimrc中负责该文本的行是:

let g:airline_section_c='%t @%{virtualenv#statusline()}'

基于此question,我尝试将.vimrc行更改为

let g:airline_section_c='%t %#orange#@%{virtualenv#statusline()}'

似乎从“ @my_env”开始突出显示了状态行: Before

似乎单独使用%#any_color#甚至%##也会产生相同的效果。

我已经阅读了所有:h 'statusline',但似乎没有找到合适的解决方案。

所以我的问题是:是否可以在状态栏中为字符串设置颜色?

编辑

问题已得到解答here

似乎无法更改屏幕的文本颜色而不更改其整个格式设置组(包括背景)。

在字符串的末尾附加%#airline_c#可以解决突出显示的问题:

这就是

的样子

let g:airline_section_c='%t %#Special#%{virtualenv#statusline()}%#airline_c#'

其中Special是随机突出显示的组

1 个答案:

答案 0 :(得分:0)

:help statusline的格式说明中,您可以找到:

   * -   Set highlight group to User{N}, where {N} is taken from the                                                                                                                                          
          minwid field, e.g. %1*.  Restore normal highlight with %* or %0*.                                                                                                                                    
          The difference between User{N} and StatusLine  will be applied                                                                                                                                       
          to StatusLineNC for the statusline of non-current windows.                                                                                                                                           
          The number N must be between 1 and 9.  See hl-User1..9 

因此,如果您进行更改:

let g:airline_section_c='%t %#orange#@%{virtualenv#statusline()}'

进入:

let g:airline_section_c='%t %#orange#@%{virtualenv#statusline()}%*'

它应该在virtualenv之后停止着色。