vim - dim inaktive geteilte Scheiben
Frage
Wenn Sie mit der iTerm2-Anwendung vertraut sind, wissen Sie, dass Sie Ansichten ähnlich wie vim teilen können und die inaktiven Ansichten "abgeblendet" sind.
Normalerweise arbeite ich in vim mit drei vertikalen geteilten Ansichten, und es wäre schön, die inaktiven Ansichten zu dimmen, indem Sie beispielsweise die Hintergrundfarbe auf einen dunkleren Ton einstellen.
Gibt es eine Möglichkeit, dies zu tun?
Lösung
Ich habe die folgende Lösung gefunden (unter Verwendung von 'Farbspalte' und Deaktivieren von 'Cursorzeile'):
" 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
Zeigen Sie es in meinen (aktuellen) Punktedateien an: https://github.com/ blueyed / dotfiles / blob / master / vimrc # L351
Update Ich habe daraus ein Plugin erstellt: https://github.com/blueyed/vim-diminactive
Andere Tipps
In neovim (v0.2.1) werden durch die folgende Konfiguration inaktive Fenster gedimmt:
hi ActiveWindow ctermbg=16 | hi InactiveWindow ctermbg=233
set winhighlight=Normal:ActiveWindow,NormalNC:InactiveWindow
Wenn Sie die von Ihnen beschriebene Hintergrundfarbe ändern, sind für verschiedene Vim-Fenster unterschiedliche Farbschemata erforderlich.Soweit ich weiß, ist dies nicht möglich, da es sich um eine globale Einstellung handelt (siehe diese Antwort von vor einigen Tagen)..
Als visuelle Hilfe für welches Fenster aktiv ist, finde ich die Statuszeile normalerweise ausreichend.Die Hervorhebungsgruppen unterscheiden sich für das aktive Fenster (hi StatusLine
) und alle inaktiven Fenster (hi StatusLineNC
).Sie können entweder ein Farbschema mit einer sehr starken Einschränkung auswählen oder Ihr Lieblingsfarbschema bearbeiten.
Wirf dies als neue Antwort raus. https://github.com/TaDaa/vimade blendet inaktive Puffer aus, behält die Syntaxhervorhebung bei und kann dies auchZeichen verblassen.Ich bin der Autor, aber ich denke, dass dies für einige als neuere Alternative nützlich sein könnte.Unterstützt nvim und vim8, 256 Farbterminals, Termguicolors und GUI.