Изменить фон Vim и цветовую схему на основе профиля iTerm - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть два настроенных профиля iTerm: темный для использования пастельной темы и светлый для использования темы солнечного освещения. Есть ли способ заставить Vim изменить параметры фона и схемы цветов в зависимости от того, какой профиль iTerm использует в настоящее время?

Ответы [ 3 ]

3 голосов
/ 11 декабря 2011

Вы можете добавить команду входа в любой профиль (в iTerm2 есть опция «отправить текст при запуске», я не знаю, что такое обычный iTem) в псевдоним VIM, чтобы использовать желаемую цветовую схему:

alias vim='vim -c "colorscheme pastel"'

2 голосов
/ 11 августа 2016

Это старая тема, но, используя комментарий Брэндона, я нашел решение:

Сначала я создал два профиля iTerm, которые просто называются light и dark. В моем .bashrc я добавил эту функцию, взято из здесь и немного изменено:

theme-switch () { echo -e "\033]50;SetProfile=$1\a"; export ITERM_PROFILE=$1; }

Теперь я могу переключать темы iTerm, используя theme-switch light или theme-switch dark

Наконец, в моем .vimrc я использую переменную окружения ITERM_PROFILE, чтобы определить фон для vim:

let iterm_profile = $ITERM_PROFILE
if iterm_profile == "dark"
    set background=dark
else
    set background=light
endif

Обновление 2017-12-04: строка меню Tmux и Mac OS

Если вы используете Tmux, все немного сложнее. Мне не удалось заставить echo -e "\033]50;SetProfile=PROFILENAME\a" работать в сеансе Tmux, поэтому я создал ярлык в iTerm для быстрого переключения между светлым или темным профилем («Настройки» -> «Ключи» -> добавить новый профиль и выбрать «Изменить профиль»). Функция theme-switch все еще необходима для установки ITERM_PROFILE (которая нам нужна для установки темного или светлого фона в VIM), но нам также нужно изменить ее значение для Tmux. Более того, мы должны загрузить темную или светлую тему для строки состояния Tmux.

Моя более расширенная theme-switch функция добавляет темный режим , чтобы изменить внешний вид строки меню Mac OS, устанавливает ITERM_PROFILE для Tmux и загружает светлую или темную версию соляризованной темы строки состояния Я использую (вы можете использовать свою собственную конфигурацию строки состояния, если вы поместите светлую и темную версию в отдельные файлы):

function theme-switch {
 echo -e "\033]50;SetProfile=$1\a"
 export ITERM_PROFILE=$1
 if [ $1 = "dark" ]; then
    dark-mode on 2> /dev/null # Prevent error message if dark-mode is not installed
    if tmux info &> /dev/null; then
        tmux set-environment ITERM_PROFILE dark
        tmux source-file ~/.tmux/plugins/tmux-colors-solarized/tmuxcolors-dark.conf
    fi
 else
    dark-mode off 2> /dev/null
    if tmux info &> /dev/null; then
        tmux set-environment ITERM_PROFILE light
        tmux source-file ~/.tmux/plugins/tmux-colors-solarized/tmuxcolors-light.conf
    fi
 fi
}
0 голосов
/ 11 декабря 2011

http://vimdoc.sourceforge.net/htmldoc/term.html#term-dependent-settings

Если вы хотите установить параметры или сопоставления, в зависимости от имени терминала, вы можете сделать это лучше всего в вашем .vimrc.Пример:

if & term == "xterm"

 ... xterm maps and settings ...    

else if & term = ~ "vt10."

 ... vt100, vt102 maps and settings ...    

endif

...