在 Vim 中,如何在命令行模式下更改状态行的颜色?

问题描述 投票:0回答:1

我正在使用 Vim 8.2。当我使用

StatusLine
/
进入命令行模式时,我想更改
:
的颜色。

我的

.vimrc
中有以下内容。应该改变当前窗口和非当前窗口
StatusLine
的背景和前景色

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

这有点管用,但只有当我使用

/
进入命令行模式,然后输入一些内容时。当我使用
:
.

进入命令行模式时它不起作用

我玩过上面的代码片段,分别用

CmdwinEnter
CmdwinLeave
代替
CmdlineEnter
CmdlineLeave
;并且我也尝试过
CmdlineChanged
,但是当使用
StatusLine
:
进入命令行模式时,我无法让
/
的颜色立即改变。

有什么想法吗?

vim macvim
1个回答
0
投票

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

这里有一个 hack,可以在您进入/离开命令行时更改every窗口的状态行高亮显示:

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

我不确定如何更改它,以便它只突出显示当前窗口的状态行。

© www.soinside.com 2019 - 2024. All rights reserved.