Se as cores estiverem corretas depois de executar color solarized
pela segunda vez, provavelmente é por causa de alguma configuração diferente na segunda vez em que o comando foi executado, isto é, alguma configuração feita após o comando color solarized
em seu vimrc. Aquele que se destaca para mim é set term=xterm-256color
. Tente colocar isso antes do bloco que começa com syntax enable
e veja se isso ajuda.
Meu palpite é que o arquivo solarized.vim
colorscheme faz algumas configurações que dependem do número de cores disponíveis no terminal. Se $ TERM for "xterm" quando você iniciar o vim, então o número de cores que o vim acha que estão disponíveis será 8. Você pode verificar isso iniciando o vim como
vim -N -u NONE
(para que o seu vimrc não seja originado) e executando
:set t_Co?
Este é o número de cores que o comando color solarized
achará disponível na primeira vez em que for executado. Depois que o comando for executado, seu vimrc executará set term-xterm-256color
, que definirá o número de cores disponíveis para 256. A execução desse comando não terá nenhum efeito no seu esquema de cores.
Quando você executa :w
, seu vimrc é originado novamente e desta vez quando o comando color solarized
é executado, ele verá o número de cores como 256 e poderá alterar sua paleta de acordo.
Além disso, não é uma boa ideia continuar a fornecer seu vimrc, porque você vai acabar com várias instâncias de seus autocommands. Como exemplo, execute :w
algumas vezes e, em seguida, execute :au TabLeave
. Você verá uma lista de instâncias de let g:lasttab = tabpagenr()
, uma para cada vez que seu vimrc foi originado. Todos esses comandos serão executados sempre que o evento TabLeave ocorrer.
Eu não sei por que você iria querer criar seu arquivo vimrc toda vez que você escrevesse um buffer, mas eu deixaria isso para você. Uma maneira de contornar o problema de acumular autocommands seria colocá-los todos em um grupo em seu vimrc e excluir quaisquer membros desse grupo antes de definir qualquer um. Vamos tomar apenas dois dos seus comandos automáticos como um exemplo.
augroup Vimrc
au! "Removes all autocommands in the Vimrc group.
au FileType javascript call JavaScriptFold()
au TabLeave * let g:lasttab = tabpagenr()
augroup END