Линия курсора Vim не изменяется в автокоманде между разбиениями - PullRequest
0 голосов
/ 29 октября 2018

Я хочу изменить цвет линии курсора между активным и неактивным разделением в vim.

Итак, я попытался

augroup CursorLine
    au!
    au VimEnter,WinEnter,BufWinEnter * highlight CursorLine ctermfg=black ctermbg=green 
    au WinLeave * highlight CursorLine ctermfg=NONE ctermbg=red 
augroup END

И затем я открыл vim, сделал вертикальное разделение :vsp file, а затем переключился между двумя разделениями, но обе панели все еще имели зеленый фон, а неактивная не переключалась на красный при выходе.

Что не так с этими командами?

1 Ответ

0 голосов
/ 29 октября 2018

Группы выделения имеют глобальный охват. Если вы измените цвета или форматирование одного из них, все экземпляры будут обновлены (на следующем экране перерисовывается). Чтобы поддерживать разные выделения для активных / неактивных элементов, вам понадобится явная поддержка Vim для этого. Это существует для строки состояния (в форме hl-StatusLine против hl-StatusLineNC групп выделения), но не для линии курсора.

В вашем случае, WinLeave autocmd будет немедленно заменен WinEnter для следующего окна, поэтому ваша попытка изменить красный цвет в основном игнорируется.

Если вы хотите вместо этого отключить строку курсора для неактивных окон, это возможно, потому что опция 'cursorline' является локальной для окна. Мой плагин CursorLineCurrentWindow делает это действительно простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...