Я использую zsh, tmux и vim и я хотел был бы знать как переключить между solarized темнотой / светом в стержне, vim, vim-авиакомпанией и линией состояния tmux с как раз одной командой.
Переключите colorscheme в темноте стержня, vim и tmux передней для того чтобы осветить с одной командой
2 ответа
Я сам борюсь с этой проблемой. Я приземлился на несовершенное, хакерское полурешение, но из того, что я собрал, Укрощение терминальных цветов-не совсем тривиальная проблема.
Я обнаружил, что tmux и vim заимствуют 16 значений цвета ANSI, определенных в вашей цветовой схеме терминала (черный, красный, зеленый, желтый, синий, пурпурный, голубой, белый и все их "яркие" варианты). Если в вашем светлая цветовая схема терминала инвертировать определения ANSI black & white (то есть, set черный/brightblack как светлый фон цвета: белый/brightwhite как темные цвета на переднем плане), tmux и vim последуют их примеру. Пока вы используете только светлые / темные варианты одной цветовой схемы, она должна работать прилично.
Как вы можете видеть на этом скриншоте, это не идеально (спереди терминал, сзади MacVim-обратите внимание на различия в тексте авиакомпании, как ну, как неразборчивый Черный блок около середины, который должен быть светлым текстом на темном фоне), но он получает 99% пути туда, не касаясь каких-либо настроек vim/tmux/vim-airline.
я придумал метод одновременного переключения Solarized между светлым и темным для iTerm2, tmux и Vim с помощью одной команды изнутри Vim:
настройте два профиля в настройках iTerm2, один с Solarized темной цветовой схемой, а другой с Solarized светлой цветовой схемой. Цветовые пресеты очень полезны здесь, так как они включают в себя обе версии Solarized.
добавить сочетание клавиш для каждого профиля, чтобы переключиться на другой (темный переключается на свет, свет переключается на темный). Я использовал один и тот же ярлык для обоих, поэтому он просто переключается между ними. Вы можете использовать различные ярлыки, если хотите, вам просто нужно сделать небольшую модификацию на более позднем этапе.
в случае, если вы не знакомы с глифами, это Control -опции -Shift -s. Не стесняйтесь выбирать что-то другое, но помните, нам это понадобится позже. И я только показываю Solarized Dark здесь, но не забудьте настроить его для и профили.
получить себе некоторые цветовые схемы tmux. Я использовал те, от этот репозиторий на Github. Я буду ссылаться на его расположение на вашем компьютере, как
~/tmux-colors-solarized
.установить Solarized для Vim с помощью предпочтительного метода. Так как мы установили 16 цветов ANSI в Solarized значения в профилях iTerm2, мы можем использовать стандартная Solarized цветовая схема, а не ухудшенная версия цвета 256.
добавить функцию в ваш
.vimrc
, и дополнительно команда:function! Solar_swap() if &background ==? 'dark' set background=light execute "silent !tmux source-file " . shellescape(expand('~/tmux-colors-solarized/tmuxcolors-light.conf')) else set background=dark execute "silent !tmux source-file " . shellescape(expand('~/tmux-colors-solarized/tmuxcolors-dark.conf')) endif silent !osascript -e 'tell app "System Events" to keystroke "s" using {shift down, option down, control down}' endfunction command! SolarSwap call Solar_swap()
построчное...выход пояснение:
function! Solar_swap()
определение
function
имениSolar_swap
это не принимает параметров()
. The!
по конецfunction
заставляет его молча заменить существующую функцию с тем же именем, удобно, если вы в конечном итоге поиске.vimrc
снова.if &background ==? 'dark'
простая проверка, если фон Vim в настоящее время темный.
==?
делает сравнение без учета регистра. The&
необходимо использовать параметр (например,background
) в выражение.set background=light
просто устанавливаю Vim фон на свет.
execute "silent !tmux source-file " . shellescape(expand('~/tmux-colors-solarized/tmuxcolors-light.conf'))
execute
следующая строка как Ex (т. е.:
команды).silent
избавляет нас от необходимости нажимать return каждый раз.!
запускает внешнюю (для Vim) команду, в данном случаеtmux source-file [path]
. The.
объединяет расширенный экранированный путь к остальной части командной строки.else set background=dark execute "silent !tmux source-file " . shellescape(expand('~/tmux-colors-solarized/tmuxcolors-dark.conf')) endif
этот кусок в основном просто светотеневая версия вышеуказанных линий.
silent !osascript -e 'tell app "System Events" to keystroke "s" using {shift down, option down, control down}'
silent !
то же самое, что и раньше.osascript
запустит AppleScript для нас.-e
означает выполнение следующего аргумента в виде одной строки скрипта. Строка, которую мы запускаем, - это отправить эту комбинацию клавиш с шага 2 в активное приложение, которое должно, насколько это касается операционной системы, быть iTerm2.1 вам может потребоваться изменить строку в соответствии с вашим выбором ярлыка. Обратите внимание, что если у вас было два разных ярлыки для переключения iTerm2 вам нужно переместить эту строку вif
' ы ветви, и изменить нажатия клавиш, чтобы соответствовать.endfunction command! SolarSwap call Solar_swap()
и, наконец, закрываем функцию и определяем a
command
под названиемSolarSwap
, который вызывает функцию, которую мы только что сделали.!
автоматически заменяет любую существующую команду с тем же именем.теперь, изнутри Vim, просто запустите
:SolarSwap
и Vim, tmux и iTerm2 должны переключаться между Solarized Light и Dark. Вы можете, конечно, добавьте отображение в.vimrc
сделать переключение еще проще.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]