在 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
的背景和前景色
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
,但是在使用 :
和 /
.[=27= 进入命令行模式时,我无法让 StatusLine
的颜色立即改变]
有什么想法吗?
不幸的是,控制状态行的突出显示并不是那么简单。
这是一个 hack,当您 enter/leave 命令行时,它会更改 每个 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 的状态行。
我正在使用 Vim 8.2。当我使用 /
和 :
.
StatusLine
的颜色
我的 .vimrc
中有以下内容。它应该改变当前 window 和非当前 windows
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
,但是在使用 :
和 /
.[=27= 进入命令行模式时,我无法让 StatusLine
的颜色立即改变]
有什么想法吗?
不幸的是,控制状态行的突出显示并不是那么简单。
这是一个 hack,当您 enter/leave 命令行时,它会更改 每个 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 的状态行。