Когда вы не используете tmux
или screen
, вам нужно только настроить эмуляторы терминала, чтобы рекламировать себя как «способный отображать 256 цветов», установив их TERM
к xterm-256color
или любой сравнимой значение, которое работает с терминалами и платформами , Как вы это сделаете, это будет зависеть от эмулятора терминала и выходит за рамки вашего вопроса и этого ответа.
Вам не нужно ничего делать в Vim, так как он отлично способен делать правильные вещи сам по себе.
При использовании tmux
или screen
, эти программы устанавливают свои собственные значения по умолчанию для $TERM
, обычно screen
, и Вим делает то, что он должен делать с информацией, что дано.
Если вы хотите более равномерным (и красочный) поведение, вы должны настроить их использовать «лучше» значение для $TERM
:
tmux
Добавьте эту строку в ~/.tmux.conf
:
set -g default-terminal "screen-256color"
экран
Добавьте эту строку в ~/.screenrc
:
term "screen-256color"
Теперь оба мультиплексоры расскажут Vim они поддерживают 256 цветов и Vim будет делать то, что вы ожидаете, что делать.
редактировать
Мой ответ предполагает, что вы можете редактировать эти файлы конфигурации, но, так как вы можете редактировать ~/.vimrc
, я не думаю, что я так далеко от марки ,
редактировать 2
Значение term
опции (извлеченной с &term
) это имя терминала, как подобран Vim при запуске. Это имя - это то, что вы должны настроить в своем эмуляторе терминала.
Значение t_Co
(&t_Co
) - это то, что Vim считает максимальным количеством цветов, которые могут отображаться на терминале хоста. Она определяется в соответствии с записью, соответствующей $TERM
в terminfo
:
term | t_Co
-----------------+------
xterm | 8
xterm-256color | 256
screen | 8
screen-256color | 256
Когда Vim запускается, она получает значение переменной в TERM
среды, запрашивает базу данных terminfo
с этим значением и сохраняет ряд информаций о его окружение в нескольких t_…
переменных, среди которых ... количество цветов, доступных в t_Co
. Учитывая «юридический» тип терминала (тот, который Vim может найти), Vim всегда принимает правильное количество цветов.
Установка t_Co
в 256
, оставляя term
его Vim определенные значения - или, в более общем случае, установка t_Co
и/или term
до значений, которые не соответствуют с хост-терминал - не имеет никакого смысла, и, скорее всего, создают проблемы, когда Vim посылает сигнал, который не понимается терминалом или наоборот.
Хотя это вполне возможно, возиться с t_Co
и term
в Vim является абсолютно бесполезным и, возможно, вредным.
Снова настройте эмуляторы терминала и терминальные мультиплексоры правильно.Это действительно все, что вам нужно.
Если вы в конечном итоге в качестве терминального мультиплексора или эмулятор терминала, где вы не можете определить правильный TERM
, тогда и только тогда вы можете заставить Vim считать 256 цветов. С этой целью, изменяя значение t_Co
это единственное, что имеет смысл:
if &term == "screen"
set t_Co=256
endif
Так что ... если вы могу настроить каждую отдельная часть:
- эмулятор терминала:
xterm-256color
- tmux/экран:
screen-256color
- vim: ничего
и все готово.
Если вы не контроль каждую часть можно использовать простой условный в вашем ~/.vimrc
установить t_Co
согласно &term
, но не изменить значение term
.
Но если вы можете редактировать ~/.vimrc
нет никаких причин, вы не можете редактировать ~/.screenrc
или ~/.tmux.conf
или ~/.bashrc
или любой другой.
vim
romainl
У вас есть неправильный порядок: 'vim
Смартфон часть сумасшедшая часть. – romainl