#vim #macvim
#vim #маквим
Вопрос:
Я использую 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
Это вроде как работает, но только когда я вхожу в режим командной строки с помощью a /
, а затем что-то набираю. Это не работает, когда я вхожу в режим командной строки с a :
.
Я поиграл с приведенным выше фрагментом кода, заменив CmdwinEnter
и CmdwinLeave
на CmdlineEnter
и CmdlineLeave
, соответственно; и я также пытался CmdlineChanged
, но я не могу StatusLine
мгновенно изменить цвет при входе в режим командной строки с обоими :
и /
.
Есть какие-нибудь идеи?
Ответ №1:
Управление подсветкой строки состояния, к сожалению, не так просто.
Вот хак, который изменяет подсветку строки состояния для каждого окна, когда вы входите/выходите из командной строки:
hi CmdlineEnter ctermbg=green ctermfg=white hi CmdlineLeave ctermbg=blue ctermfg=white augroup cmd autocmd! autocmd CmdlineEnter * let amp;statusline = '%#CmdlineEnter#%f' autocmd CmdlineLeave * let amp;statusline = '%#CmdlineLeave#%f' augroup END
Однако я не уверен, как его можно изменить, чтобы он выделял только строку состояния текущего окна.