2013-06-09 11 views
9

non sono in grado di configurare git a seguire le mie richieste:Come configurare colorato diff git con vim come un cercapersone

  1. uso vim come un cercapersone diff
  2. mantenere i colori per diff quando si aggiungono i file in modalità interattiva

mio ~/.gitconfig configurazione:

[color] 
    ui = auto 
    # diff = false 

[pager] 
    diff = vim - 

Con questa configurazione il modalità interattiva per git add --interactive produce output colorato come previsto:

interactive adding

Lo svantaggio di questo è che diff in vim è danneggiato. Vedere l'uscita di git diff:

diff using vim

Quando si utilizza git diff | vim - i colori sono OK, ma io sono troppo pigro per digitare il comando completo. Esiste un metodo noto che conserva i colori in entrambi i casi?

+0

Vedi http://stackoverflow.com/questions/39470081/vim-check- if-running-as-a-pager su come eseguire automaticamente: AnsiEsc al caricamento. – 0fnt

risposta

11

È necessario installare AnsiEsc plugin ed eseguire :AnsiEsc subito dopo il caricamento del file. È possibile impostare il cercapersone su vim -c AnsiEsc - per farlo.

alternativa, utilizzare vim propria evidenziazione: utilizzando lo stesso metodo (-c command) eseguire

%sm/\e.\{-}m//g 
set ft=diff 

:

diff = "vim -c '%sm/\\e.\\{-}m//g' -c 'set ft=diff' -" 
+2

perfetto, grazie! Ho usato una versione leggermente migliorata che imposta il cursore nella parte superiore del buffer dopo la sostituzione. Ignora anche le differenze vu vuote: _diff = "vim -c '% sm/\\ e. \\ {-} m // ge' -c 'imposta ft = diff' -c 'normale gg' -" _ –

+0

Ho aggiunto -c 'setlocal buftype = nofile' per impedire a vim di lamentarsi di modifiche non salvate durante il tentativo di: q – notlesh

0

Prova queste impostazioni:

git config --global diff.tool vimdiff 
git config --global merge.tool vimdiff 

git config --global difftool.prompt false 
4

Avete due alternative qui.

Use Vimdiff as a difftool

$ git config --global diff.tool vimdiff 
$ git config --global difftool.prompt false 
$ git config --global alias.d difftool 

[diff] 
    tool = vimdiff 
[difftool] 
    prompt = false 
[alias] 
    d = difftool # Not needed, just a convenience. $ git difftool, still works. 

regolare Git diff, ma con highlithing colore.

$ git config --global color.ui true 

[color] 
    ui = true 

In questo momento, si ha uno strano mix. Ovviamente puoi usare entrambi, ma lo pager sta facendo casino.
Il motivo per cui ottieni ^[32m ecc. È perché stai cercando di leggere i colori della shell in Vim. Questo non funziona.