20

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

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

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

6 ответов6

19

Следуя вашему шаблону, вы можете изменять различные свойства, такие как 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

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

6

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

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
6

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

1

Мне нравится скрывать линию курсора для неактивных окон

augroup CursorLineOnlyInActiveWindow
  autocmd!
  autocmd VimEnter,WinEnter,BufWinEnter * setlocal cursorline
  autocmd WinLeave * setlocal nocursorline
augroup END  

(спасибо https://codeyarns.com/2013/02/07/how-to-show-cursorline-only-in-active-window-of-vim/)

1

Вот что я делаю:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

Относительные числа - всего лишь вспомогательное средство для расчета повторного количества команд, для них нет смысла в окне, которое вы не редактируете.

0

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

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .