sono venuto con la seguente soluzione (usando 'colorcolumn' e disinserimento '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
vederlo al mio dotfile (correnti): https://github.com/blueyed/dotfiles/blob/master/vimrc#L351
Aggiornamento I hanno creato un plugin fuori di esso: https://github.com/blueyed/vim-diminactive
fantastico! molto bella. –
Questo potrebbe essere reso più efficiente per tutte le macchine che stanno lottando. Non abbiamo davvero bisogno di girare per tutte le finestre ogni volta che cambiamo finestra. Abbiamo solo bisogno di eseguire 'setwinvar' su qualsiasi finestra abbiamo WinLeave, e' setlocal nocolorcolumn' su WinEnter. (Questo presuppone che la nostra sessione inizi con una sola finestra, e non creiamo più finestre senza inserirle ciascuna.) – joeytwiddle
Rimuovere auEnEnterEnter * set merda in modo che vengano rispettate le impostazioni originali della linea di cursore –