Domanda

Se hai familiarità con l'applicazione iTerm2, saprai che puoi dividere le visualizzazioni in modo simile a vim e le visualizzazioni inattive sono "inattive".

Di solito lavoro in vim con tre viste divise verticali e sarebbe bello attenuare quelle inattive impostando il colore di sfondo su un tono più scuro, ad esempio.

C'è un modo per farlo?

È stato utile?

Soluzione

Ho trovato la seguente soluzione (utilizzando "colorcolumn" e deselezionando "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

Visualizzalo nei miei dotfile (attuali): https://github.com/ blueyed / dotfiles / blob / master / vimrc # L351

Aggiorna Ne ho creato un plug-in: https://github.com/blueyed/vim-diminactive

Altri suggerimenti

In neovim (v0.2.1), la seguente configurazione oscurerà i riquadri inattivi:

hi ActiveWindow ctermbg=16 | hi InactiveWindow ctermbg=233
set winhighlight=Normal:ActiveWindow,NormalNC:InactiveWindow

Cambiare il colore di sfondo come descritto richiederebbe schemi di colori diversi per le diverse finestre di Vim.Per quanto ne so questo non è possibile, in quanto è un'impostazione globale (vedi questa risposta di pochi giorni fa).

Come aiuto visivo per capire quale finestra è attiva, trovo che la riga di stato sia normalmente sufficiente.I gruppi di evidenziazione sono diversi per la finestra attiva (hi StatusLine) e per qualsiasi finestra non attiva (hi StatusLineNC).Puoi scegliere uno schema di colori con un contrasto molto netto tra di loro o modificare il tuo schema di colori preferito.

Lanciarlo come una nuova risposta. https://github.com/TaDaa/vimade dissolve i buffer inattivi, preserva l'evidenziazione della sintassi e può anchesegni di dissolvenza.Sono l'autore, ma immagino che questo potrebbe essere utile ad alcuni come alternativa più recente.Supporta nvim e vim8, terminali a 256 colori, termguicolors e gui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top