
Небольшая, но визуально приятная функция, немного повышающая удобство использования. Мне бы хотелось, чтобы Vim использовал другой цвет фона для активного окна.
Вот набросок того, что мне нужно:
Обычно этот vim имел бы весь фон черным, но если бы только активное окно имело свой собственный цвет, чтобы привлечь внимание пользователя. Выделения только строки состояния недостаточно!
решение1
Хептит, спасибо за идею.
Я просто заменяю автокоманды WinEnter и WinLeave для добавления/удаления номеров строк перед каждой строкой:
augroup BgHighlight
autocmd!
autocmd WinEnter * set number
autocmd WinLeave * set nonumber
augroup END
Теперь стало более стильно отслеживать, какое окно активно.
решение2
Группы подсветки, которые управляют цветом фона по умолчанию, — это « Normal
» и « NonText
». К сожалению, это «глобальные» подсветки, и их нельзя «локализовать» для каждого окна.
Однако вот действительно уродливый и неуклюжий пример:
augroup BgHighlight
autocmd!
highlight ActiveWindow guibg=lightblue
autocmd WinEnter * call matchadd('ActiveWindow', '.*', 10, 1682)
autocmd WinLeave * call matchdelete(1682)
augroup END
doautocmd BgHighlight WinEnter -
Поскольку это всего лишь пример, вам придется изменить его в соответствии с вашими индивидуальными потребностями, например, добавив подсветку ctermbg=... вместе с guibg=...
Недостатком является то, что это выделит только фон существующего текста в файлах, а не всю строку/окно. (Как я уже сказал, некрасиво и неаккуратно.)
решение3
Я искал то же самое и обнаружил (через этот выпуск)https://github.com/vim/vim/issues/2686), что теперь это поддерживается через wincolor
(https://vimhelp.org/options.txt.html#%27wincolor%27), который можно задать локально (setl), поэтому я добавил его в свой vimrc.
" different color depending on focus
hi NormalNC ctermbg=234
augroup winbg
autocmd!
au WinEnter * setl wincolor=
au WinLeave * setl wincolor=NormalNC
augroup END
что дает мне такой результат (да, я не ищу большой разницы, но поверьте мне, это меняет все).
решение4
Добавив решение, предоставленное @Tshirtman, я просто изменил эту настройку следующим образом, и она, как мне показалось, выглядит очень хорошо при переключении между разделенными панелями (просто делюсь тем же):
hi NormalNC ctermbg=236 ctermfg=102
augroup winbg
autocmd!
au WinEnter * setl wincolor= syn=on
au WinLeave * setl wincolor=NormalNC syn=off
augroup END