vim - неактивные сплит панели - PullRequest
20 голосов
/ 07 декабря 2011

Если вы знакомы с приложением iTerm2, вы будете знать, что вы можете разделять представления, подобные vim, и неактивные представления «затемнены».

Я обычно работаю в vim с тремя вертикальными разбиениямипросмотров, и было бы неплохо затемнить неактивные, установив, например, цвет фона на более темный тон.

Есть ли способ сделать это?

image

Ответы [ 4 ]

18 голосов
/ 20 сентября 2012

Я пришел к следующему решению (используя «colorcolumn» и отключив «курсор»):

" Dim inactive windows using 'colorcolumn' setting
" This tends to slow down redrawing, but is very useful.
" Based on https://groups.google.com/d/msg/vim_use/IJU-Vk-QLJE/xz4hjPjCRBUJ
" XXX: this will only work with lines containing text (i.e. not '~')
function! s:DimInactiveWindows()
  for i in range(1, tabpagewinnr(tabpagenr(), '$'))
    let l:range = ""
    if i != winnr()
      if &wrap
        " HACK: when wrapping lines is enabled, we use the maximum number
        " of columns getting highlighted. This might get calculated by
        " looking for the longest visible line and using a multiple of
        " winwidth().
        let l:width=256 " max
      else
        let l:width=winwidth(i)
      endif
      let l:range = join(range(1, l:width), ',')
    endif
    call setwinvar(i, '&colorcolumn', l:range)
  endfor
endfunction
augroup DimInactiveWindows
  au!
  au WinEnter * call s:DimInactiveWindows()
  au WinEnter * set cursorline
  au WinLeave * set nocursorline
augroup END

Просмотреть его в моих (текущих) точечных файлах: https://github.com/blueyed/dotfiles/blob/master/vimrc#L351

Обновление Я создал из него плагин: https://github.com/blueyed/vim-diminactive

3 голосов
/ 19 января 2018

В neovim (v0.2.1) следующая конфигурация затемнит неактивные панели:

hi ActiveWindow ctermbg=16 | hi InactiveWindow ctermbg=233
set winhighlight=Normal:ActiveWindow,NormalNC:InactiveWindow
1 голос
/ 07 декабря 2011

Изменение цвета фона, как вы описали, потребовало бы разных цветовых схем для разных окон Vim. Насколько я знаю, это невозможно, поскольку это глобальная настройка (см. этот ответ несколько дней назад).

В качестве наглядного пособия к активному окну я нахожу, что строка состояния обычно достаточна. Группы выделения отличаются для активного окна (hi StatusLine) и любых неактивных окон (hi StatusLineNC). Вы можете выбрать цветовую схему с очень резким ограничением между ними или отредактировать свою любимую цветовую схему.

0 голосов
/ 08 января 2019

Бросив это как новый ответ. https://github.com/TaDaa/vimade стирает неактивные буферы, сохраняет подсветку синтаксиса, а также может исчезать знаки. Я автор, но я полагаю, что это может быть полезно для некоторых как более новая альтернатива. Поддерживает nvim и vim8, 256 цветных терминалов, termguicolors и gui.

...