Question

Si vous connaissez l'application ITERM2, vous saurez que vous pouvez diviser des vues similaires à VIM, et les vues inactives sont «atténuées».

Je travaille habituellement dans VIM avec trois vues verticales et il serait agréable de diminuer les inactifs en définissant la couleur d'arrière-plan sur un ton plus foncé, par exemple.

Y a-t-il un moyen de faire cela?

Était-ce utile?

La solution

J'ai trouvé la solution suivante (en utilisant «ColorColumn» et dénouant «cursorline»):

" 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

Affichez-le sur mes (actuels) dotfiles: https://github.com/blueyed/dotfiles/blob/master/vimrc#l351

Mise à jourJ'en ai créé un plugin: https://github.com/blueyed/vim-diminactive

Autres conseils

Dans Neovim (V0.2.1), la configuration suivante diminuera les volets inactifs:

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

La modification de la couleur d'arrière-plan comme vous le décrivez nécessiterait différentes colorialmes pour différentes fenêtres VIM. Pour autant que je sache, ce n'est pas possible, car c'est un cadre global (voir Cette réponse Il y a quelques jours).

En tant qu'aide visuelle à laquelle la fenêtre est active, je trouve que la ligne de statut est généralement suffisante. Les groupes de surbrillance sont différents pour la fenêtre active (hi StatusLine) et toutes les fenêtres innactives (hi StatusLineNC). Vous pouvez soit choisir un schéma de colours avec une contraste très austère entre eux, soit modifier votre schéma de colours préféré.

Jeter cela comme une nouvelle réponse. https://github.com/tadaa/vimade FADE Les tampons inactifs, préserve la syntaxe qui met en évidence et peut également attiser les signes. Je suis l'auteur, mais je pense que cela pourrait être utile à certains comme une alternative plus récente. Soutient NVIM et VIM8, 256 Terminaux de couleur, TermguiColors et GUI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top