Делаем активное окно в vim более заметным

Делаем активное окно в vim более заметным

Мое рабочее пространство обычно представляет собой один очень большой xterm с vim, разделенный на шесть или более буферов. Было бы очень полезно, если бы было более очевидно, какой из буферов является активным. Сейчас я использую наличие номеров строк для этого:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

но это означает, что когда я меняю буферы, мой код прыгает влево или вправо, что раздражает. Плюс, я хотел бы иметь возможность видеть, какая строка 94, даже внеактивныйбуфер. Так есть ли способ изменить цвета номеров строк в активном буфере?

решение1

Следуя вашему шаблону, вы можете изменять различные свойства, такие как colorcolumn:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

Это окрасит столбец 80 в текущем окне, отключив его в других. Это немного менее раздражающе, чем установка/снятие номеров строк.

Еще менее навязчивый вариант, если вы привыкли подсвечивать текущую строку (set cul), это сделать:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

Все зависит от того, как вы используете устройство и с чем вы готовы мириться.

решение2

Цвет строки состояния — наиболее распространенный способ узнать, какое окно активно. Он определяется в вашей цветовой схеме этими двумя строками:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

Первый — для текущего окна, второй — для «не текущего» окна.

Это отрывок изxoria256, вам следует адаптировать цвета к вашей цветовой схеме.

Но вы можете попробовать что-то вроде этого (будьте осторожны, цвета во второй строке совершенно случайны):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END

решение3

См. также мой плагин, который затемняет неактивные окна:https://github.com/blueyed/vim-diminactive

решение4

Вы можете добавить это в свой файл ~/.vimrc, и тогда строки состояния неактивных окон будут иметь темно-серый фон, чтобы отличаться от белой строки состояния активного окна.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Смотрите этот пример снимка экрана. Среднее окно активно (белая строка состояния). Левое и правое окна неактивны (темно-серая строка состояния).

введите описание изображения здесь

Связанный контент