Je suis venu avec la solution suivante (en utilisant 'colorcolumn' et MHS '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
la voir à mes (en cours) dotfiles: https://github.com/blueyed/dotfiles/blob/master/vimrc#L351
Mise à jour I ont créé un plugin:
génial! très agréable. –
Cela pourrait être rendu plus efficace pour toutes les machines qui ont des difficultés. Nous n'avons pas vraiment besoin de courir pour toutes les fenêtres chaque fois que nous changeons de fenêtre. Nous avons juste besoin d'effectuer 'setwinvar' sur n'importe quelle fenêtre WinLeave, et' setlocal nocolorcolumn' sur WinEnter. (En supposant que notre session commence avec une seule fenêtre, et nous ne créons jamais plusieurs fenêtres sans entrer chacune d'elles.) – joeytwiddle
Enlever la merde au WinEnter * pour que les paramètres originaux de la ligne de la souris soient respectés –