Ambiente:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- Terminale GNOME 3.22.1 Uso della versione 0.46.1 + GNUTLS di VTE
- VIM - Vi IMproved 8.0 (12 settembre 2016, compilato il 22 febbraio 2017 16:26:11)
- tmux 2.2
Di recente ho iniziato a utilizzare tmux e ho osservato che i colori all'interno di Vim cambiano a seconda che stia correndo all'interno o all'esterno di tmux. Di seguito sono riportati screenshot di Vim all'esterno (a sinistra) e all'interno (a destra) di tmux durante la visualizzazione di un diff Git:
La mia TERMvariabile è
- Fuori dal tmux:
xterm-256color - All'interno di tmux:
screen-256color
Vim riporta questi tipi di terminali come previsto (via :set term?):
- Fuori dal tmux:
term=xterm-256color - All'interno di tmux:
term=screen-256color
Vim riporta anche che entrambe le istanze sono in esecuzione in modalità 256 colori (via :set t_Co?):
- Fuori dal tmux:
t_Co=256 - All'interno di tmux:
t_Co=256
Ci sono molte domande simili in merito al far funzionare Vim in modalità 256 colori all'interno di tmux (la migliore risposta che ho trovato è qui ), ma non credo che sia il mio problema date le informazioni di cui sopra.
Posso duplicare il problema al di fuori di tmux se eseguo Vim con il tipo di terminale impostato su screen-256color:
$ TERM=screen-256color vim
Questo mi fa credere che c'è semplicemente una differenza tra le capacità del terminale xterm-256colore screen-256colorquella che causa la differenza di colore. Il che porta alla domanda posta nel titolo: cosa specificatamente nelle capacità del terminale fa sì che i colori di Vim siano diversi? Vedo le differenze tra correre :set termcapdentro e fuori di tmux, ma sono curioso di sapere quali variabili causino effettivamente la differenza nel comportamento.
Indipendentemente dalla domanda precedente, è possibile che i colori di Vim siano coerenti quando si esegue all'interno o all'esterno di tmux? Alcune cose che ho provato includono:
- Impostazione esplicita del terminale predefinito che tmux utilizza
~/.tmux.confsu vari valori (alcuni contro il parere delle FAQ di tmux ):
imposta -g default-terminal "screen-256color"
set -g default-terminal "xterm-256color"
set -g default-terminal "screen.xterm-256color"
set -g default-terminal "tmux-256color"
- Avvio di tmux utilizzando
tmux -2.
In tutti i casi, Vim ha continuato a mostrare colori diversi all'interno di tmux.
xterm-256colorversione (cercare "38; 5;" nel file), ma non riesco a screen-256color. Ad esempio, ovunque sia presente un \e[38;5;81min xterm-256color(colore # 81 della tavolozza a 256 colori, una tonalità blu centrale), screen-256colorcontiene \e[34minvece (il blu standard della tavolozza a 8 colori). Quindi la domanda principale è perché Vim non usa la tavolozza a 256 colori in caso di TERM=screen-256color.
xterm-256colorversione sembra stampare lo schermo due volte, prima con i colori legacy e poi con la tavolozza a 256 colori. Cerca ad esempio "F1" nel file, troverai due corrispondenze in xterm-256color, la prima con il \e[34mcolore, la seconda con \e[38;5;81m. Non so cosa stia succedendo qui.
set -g default-terminal "screen.xterm-256color"in ~/.tmux.confe ricaricare il config nella tmux (<Cs>: fonte-file ~ / .tmux.conf) ha lavorato per me (problema evidenziare). thx


script, avviarevim, chiuderevime quindi chiuderescriptla shell e allegare iltypescriptfile risultante ? Quindi ripetere gli stessi passaggi conTERM=screen-256color viminvece.