मैं निम्नलिखित समाधान के साथ आए हैं ('colorcolumn' और unsetting 'cursorline' का प्रयोग करके): मेरे (वर्तमान) dotfiles पर
" 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
देखें यह: https://github.com/blueyed/dotfiles/blob/master/vimrc#L351
अद्यतन मैं इसमें से एक प्लगइन बनाया है: https://github.com/blueyed/vim-diminactive
कमाल! बहुत अच्छा। –
यह किसी भी मशीन जो संघर्ष कर रहे हैं के लिए अधिक कुशल बनाया जा सकता है। हर बार जब हम खिड़की स्विच करते हैं तो हमें सभी खिड़कियों के लिए दौड़ने की ज़रूरत नहीं है। हमें WinLeave पर किसी भी विंडो पर 'setwinvar' और WinEnter पर' setlocal nocolorcolumn 'करने की आवश्यकता है। (यह माना जाता है कि हमारा सत्र केवल एक खिड़की से शुरू होता है, और हम उनमें से प्रत्येक को दर्ज किए बिना कई खिड़कियां कभी नहीं बनाते हैं।) – joeytwiddle
एयू विनइंटर * सेट शर्ट को हटाएं ताकि उपयोगकर्ता की मूल कर्सरलाइन सेटिंग्स का सम्मान किया जा सके –