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.