繁体   English   中英

在 Vim 中,当我处于命令行模式时,如何更改 StatusLine 的颜色?

[英]In Vim, how can I change the color of the StatusLine when I'm in Command Line mode?

我正在使用 Vim 8.2。 当我使用/:进入命令行模式时,我想更改StatusLine的颜色。

我的.vimrc中有以下内容。 应该改变当前 window 和非当前 windows 的StatusLine的背景和前景 colors

augroup InsertHook
  autocmd!
  " enter command line mode
  autocmd CmdlineEnter * hi StatusLine   gui=bold guifg=#7386A7 guibg=#FFE847
  autocmd CmdlineEnter * hi StatusLineNC gui=NONE guifg=#FFE847 guibg=#9EA8BA

  " leave command line mode
  autocmd CmdlineLeave * hi StatusLine   gui=bold guifg=#EFEEC9 guibg=#7386A7
  autocmd CmdlineLeave * hi StatusLineNC gui=NONE guifg=#DFDBC5 guibg=#9EA8BA
augroup END

这有点工作,但只有当我用/进入命令行模式然后输入一些东西时。 当我使用:进入命令行模式时,它不起作用。

我玩过上面的代码片段,分别用CmdlineEnterCmdwinLeave代替CmdwinEnterCmdlineLeave 而且我也尝试过CmdlineChanged ,但是当使用:/进入命令行模式时,我无法立即更改StatusLine的颜色。

有任何想法吗?

不幸的是,控制状态行的突出显示并不是那么简单。

这是一个 hack,当您进入/离开命令行时,它会更改每个window 的状态行突出显示:

hi CmdlineEnter ctermbg=green ctermfg=white
hi CmdlineLeave ctermbg=blue ctermfg=white
augroup cmd
    autocmd!
    autocmd CmdlineEnter * let &statusline = '%#CmdlineEnter#%f'
    autocmd CmdlineLeave * let &statusline = '%#CmdlineLeave#%f'
augroup END

例子

不过,我不确定如何更改它,以便仅突出显示当前 window 的状态行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM