Quando non si utilizza tmux
o screen
, avete solo bisogno di configurare i emulatori di terminale per pubblicizzare se stessi come "in grado di visualizzare 256 colori", impostando la loro TERM
-xterm-256color
o qualsiasi valore comparabile che funziona con i vostri terminali e piattaforme . Il modo in cui lo farai dipenderà dall'emulatore del terminale e non rientrerà nell'ambito della tua domanda e questa risposta.
Non è necessario fare nulla in Vim in quanto è perfettamente in grado di fare la cosa giusta da solo.
Quando si utilizza tmux
o screen
, quei programmi impostare il proprio valore di default per $TERM
, di solito screen
, e Vim fa quello che ha a che fare con le informazioni che è dato.
Se si desidera una più uniforme (e colorata) il comportamento, è necessario configurare loro di utilizzare un valore di "migliore" per $TERM
:
tmux
aggiungere questa riga a ~/.tmux.conf
:
set -g default-terminal "screen-256color"
schermo
aggiungere questa riga a ~/.screenrc
:
term "screen-256color"
Ora, entrambi i multiplexer dirà a Vim che supportano 256 colori e Vim farà quello che ci si aspetta che faccia.
modificare
La mia risposta presuppone che si è in grado di modificare i file di configurazione, ma, dal momento che si è in grado di modificare il ~/.vimrc
, non credo che io sono quel lontano il marchio .
modifica 2
Il valore dell'opzione term
(recuperato con &term
) è il nome del terminale come raccolto da Vim all'avvio. Quel nome è ciò che dovresti configurare nel tuo emulatore di terminale stesso.
Il valore dell'opzione t_Co
(&t_Co
) è quello che Vim considera il numero massimo di colori che può essere visualizzato dal terminale host. Esso è definito secondo il testo corrispondente al $TERM
in terminfo
:
term | t_Co
-----------------+------
xterm | 8
xterm-256color | 256
screen | 8
screen-256color | 256
Quando Vim viene avviato, ottiene il valore della variabile TERM
ambiente, interroga il database terminfo
con quel valore e memorizza una serie di informazioni nella sua ambiente in diverse variabili t_…
tra cui ... il numero di colori disponibili in t_Co
. Dato un tipo di terminale "legale" (che Vim può cercare), Vim sempre assume il numero corretto di colori.
Impostazione t_Co
-256
lasciando term
al suo valore Vim definito - o, più in generale, l'impostazione t_Co
e/o term
a valori che non corrispondono con il terminale host - non ha senso e probabilmente creare problemi quando Vim invia un segnale che non è compreso dal terminale o viceversa.
Mentre è del tutto possibile farlo, fare scherzi con t_Co
e term
in Vim è completamente inutile e potenzialmente dannoso.
Anche in questo caso, è sufficiente configurare correttamente gli emulatori di terminale ei multiplexer terminali.Questo è davvero tutto ciò di cui hai bisogno.
Se si finisce in un multiplatore terminale o un emulatore di terminale in cui non è possibile definire una corretta TERM
, allora e solo allora è possibile forzare Vim assumere 256 colori. A tal fine, la modifica del valore della t_Co
è l'unica cosa che ha senso:
if &term == "screen"
set t_Co=256
endif
Quindi ... se possibile configurare ogni singola parte:
- emulatore di terminale:
xterm-256color
- tmux/schermo:
screen-256color
- vim: niente
e il gioco è fatto.
Se non controllo ogni parte possibile, utilizzare un semplice condizionale nel vostro ~/.vimrc
per impostare t_Co
base al &term
ma non cambiare il valore di term
.
Ma se si può modificare un ~/.vimrc
non c'è ragione non è possibile modificare un ~/.screenrc
o ~/.tmux.conf
o ~/.bashrc
o qualsiasi altra cosa.
vim
romainl
Hai sbagliato l'ordine è 'vim
La parte smartphone è la parte pazzesca. – romainl