Vim - Pandes divisées divisantes
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?
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.