Pergunta

Se você estiver familiarizado com o aplicativo iTerm2, saberá que pode dividir visualizações semelhantes ao vim, e as visualizações inativas ficam "esmaecidas".

Normalmente trabalho no vim com três visualizações divididas verticais e seria bom escurecer as inativas definindo a cor de fundo para um tom mais escuro, por exemplo.

Existe uma maneira de fazer isso?

Foi útil?

Solução

Eu encontrei a seguinte solução (usando 'colorcolumn' e removendo a 'linha do cursor'):

" 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

Veja em meus (atuais) dotfiles: https://github.com/ blueyed / dotfiles / blob / master / vimrc # L351

Atualizar Eu criei um plugin a partir dele: https://github.com/blueyed/vim-diminactive

Outras dicas

No neovim (v0.2.1), a seguinte configuração escurecerá os painéis inativos:

hi ActiveWindow ctermbg=16 | hi InactiveWindow ctermbg=233
set winhighlight=Normal:ActiveWindow,NormalNC:InactiveWindow

Alterar a cor do plano de fundo conforme você descreve exigiria diferentes esquemas de cores para diferentes janelas do Vim.Pelo que eu sei, isso não é possível, pois é uma configuração global (consulte esta resposta de alguns dias atrás).

Como auxílio visual para saber qual janela está ativa, acho que a linha de status é normalmente suficiente.Os grupos de destaque são diferentes para a janela ativa (hi StatusLine) e quaisquer janelas inativas (hi StatusLineNC).Você pode escolher um esquema de cores com uma contraste bem definido entre eles ou editar seu esquema de cores favorito.

Lançando isso como uma nova resposta. https://github.com/TaDaa/vimade esmaece buffers inativos, preserva o destaque de sintaxe e também podesinais de desbotamento.Eu sou o autor, mas acho que isso pode ser útil para alguns como uma alternativa mais recente.Suporta nvim e vim8, terminais de 256 cores, termguicolors e gui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top