Adicione uma função ao seu .vimrc e, opcionalmente, um comando:
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()
Explicação linha-a-linha ... ish:
function! Solar_swap()
Defina um function denominado Solar_swap que não usa nenhum parâmetro () . O ! no final de function faz com que substitua silenciosamente uma função existente de mesmo nome, útil se você acabar obtendo seu .vimrc novamente.
if &background ==? 'dark'
Verificação simples se o plano de fundo do Vim estiver escuro no momento. ==? faz uma comparação insensível a maiúsculas e minúsculas. O & é necessário para usar uma configuração (como background ) em uma expressão.
set background=light
Apenas colocando o pano de fundo do Vim à luz.
execute "silent !tmux source-file " . shellescape(expand('~/tmux-colors-solarized/tmuxcolors-light.conf'))
execute da seguinte string como um comando Ex (ou seja, : ). silent nos poupa de ter que pressionar retornar toda vez. ! executa um comando externo (para Vim), neste caso tmux source-file [path] . O . concatena o caminho expandido e com escape para o restante da cadeia de comandos.
else
set background=dark
execute "silent !tmux source-file " . shellescape(expand('~/tmux-colors-solarized/tmuxcolors-dark.conf'))
endif
Este pedaço é basicamente apenas a versão claro-escuro das linhas acima.
silent !osascript -e 'tell app "System Events" to keystroke "s" using {shift down, option down, control down}'
silent ! é o mesmo de antes. osascript executará alguns AppleScript para nós. -e significa executar o seguinte argumento como uma linha de um script. A linha que estamos executando é uma para enviar o atalho de teclado da etapa 2 para o aplicativo ativo, que deve, no que diz respeito ao sistema operacional, ser iTerm2. 1 Talvez seja necessário modificar a linha para ajustar sua escolha de atalho. Note que se você tivesse dois atalhos diferentes para mudar o iTerm2 você precisaria mover esta linha para as ramificações do if , e mudar as combinações de teclas para combinar.
endfunction
command! SolarSwap call Solar_swap()
E, finalmente, fechamos a função e definimos um command chamado SolarSwap , que chama a função que acabamos de criar. ! silenciosamente substitui qualquer comando existente com o mesmo nome.
Agora, a partir do Vim, basta executar :SolarSwap e o Vim, o tmux e o iTerm2 devem alternar entre o Solarized Light e o Dark. Você pode, claro, adicionar um mapeamento ao seu .vimrc para tornar a troca ainda mais fácil.