Como desativar completamente o esquema de cores?

7

Postagem original

Eu tenho um esquema de cores configurado no meu .vimrc, mas às vezes eu gostaria de desligá-lo completamente, o que significa que gostaria que o Vim usasse as cores de plano de fundo e primeiro plano padrão do meu terminal.

Meu problema é que não sei como fazê-lo facilmente. Quando uso o :syntax offVim, a maioria das cores é desativada, mas não remove a cor da linha do cursor. Não altera a cor do plano de fundo para a cor padrão do terminal.

Existe um comando como :nocolorschemeou vim -u NONEapenas para as cores?

Estou ciente do fato de que posso criar um arquivo .vimrc personalizado e carregá-lo com a -uopção Estou procurando uma solução mais fácil.

Major update

Como você me sugeriu vários comandos e abordagens diferentes, decidi mostrar algumas fotos da tela depois de chamar esses comandos.

Ambiente terminal

Eu uso o terminal st (1) da suckless.org com um config.h personalizado, para que eu tenha defaultfg = 10(verde brilhante) e defaultbg = 0(preto). Estou executando a versão GNU / Linux com a qual o PocketC.HIP é fornecido ( uname -aresulta no SMP do chip 4.3.0- ntc do Linux # 1 SMP Wed May 11 21:57:30 UTC 2016 arm7l GNU / Linux ).

Screenshots

  1. Sem esquema de cores (é isso que eu quero)

    insira a descrição da imagem aqui

    É isso que eu quero alcançar sem ter que iniciar o Vim vim -u NONE.

  2. Cores normais

    insira a descrição da imagem aqui

    Recebo essas cores quando:

    • Normalmente inicio o Vim (esse é o meu esquema de cores padrão).
    • Eu ligo :set t_Co=0.
      Vale a pena notar que isso não muda nada quando eu uso meu esquema de cores monokai personalizado. Ele altera a aparência no esquema de cores padrão, como você pode ver em 5.

      O engraçado é que a saída de :verbose set t_Co?chamado posteriormente é o t_Co=256que indica que literalmente nada mudou.

    • Eu inicio o Vim com TERM=xterm vim.

  3. Cores padrão

    insira a descrição da imagem aqui

    Recebo essas cores quando:

    • Eu ligo :colorscheme default.
  4. O Vim removeu a maioria das cores, mas não volta aos padrões do terminal

    insira a descrição da imagem aqui

    Recebo depois:

    • A ligar :syntax off.
  5. Quase nenhum esquema de cores

    insira a descrição da imagem aqui

    Eu recebo isso depois de executar esses 4 comandos, um após o outro:

    " The effect is more visible on the default colorscheme 
    " than on my molokai colorscheme.
    :set t_Co=0
    :colorscheme default
    :hi clear
    

    Quando corro :hi LineNrdepois, recebo:

     LineNr          XXX term=underline ctermfg=6 guifg=Brown
    
  6. Sequências e tipos sublinhados em um arquivo de origem C

    insira a descrição da imagem aqui

    Após a aplicação :set term=vt100.

  7. Redesenho quebrado no Vim

    Miniatura do vídeo
    O Vim quebrou após a chamada: set term = builtin_dumb (vídeo)

    Depois de aplicar o :set term=builtin_dumbmeu Vim esquece como redesenhar linhas à medida que me movo usando je k.

  8. Examine os padrões do meu terminal

    insira a descrição da imagem aqui

    É isso que recebo depois de executar echo -e " \033[0;4mfoo\033[0;0mbar"no meu terminal.

Mateusz Piotrowski
fonte
3
Eu acho que você descreve duas coisas diferentes: Se você quiser desativar o esquema de cores, não terá as cores dos terminais, mas as cores padrão do vim. Se você quiser ter as cores do terminal no vim, precisará encontrar (ou criar) um esquema de cores correspondente ao do seu terminal.
statox
@statox OK, eu apenas pensei que, quando eu executo vim -u NONE, herda os padrões do terminal. Obrigado por apontar isso.
Mateusz Piotrowski
Se fosse assim tão fácil, acho que muitas pessoas ficariam felizes ;-) Mas acho que não é possível pelo menos por razões: 1) nem todos os terminais definem suas cores da mesma maneira 2) Vim tem sua própria cor mecanismo que dificilmente é compatível com os mecanismos existentes para terminais. Agora eu não sou realmente um especialista em personalização de cor então talvez um guru colorscheme será capaz de ser mais específico ou saberá uma maneira :-)
statox
11
Atualizei minha resposta para dar conta de sublinhado. Eu deveria ter sido um pouco mais claro no meu comentário anterior: eu entendo que a configuração t_Co parece ter efeitos diferentes dependendo do seu esquema de cores, embora eu não tenha idéia de qual mecanismo isso pode ocorrer. Mais uma coisa a tentar: Ao usar monokai, execute :set t_Co=0, imediatamente seguido por :verbose set t_Co?O que está definido para t_Co? (Gostaria de saber se, de alguma forma, isso não está sendo definido corretamente: minhas únicas suposições são que possivelmente você tenha um autocommand que a redefina, ou que haja um bug que esteja fazendo com que ela não seja definida.)
Rich
11
Ok, mistério resolvido: veja minha atualização sobre por :set t_Co=0que não funciona quando o esquema de cores está definido como monokai.
Rich

Respostas:

6

Desativando cores totalmente

Se você quiser Vim para não usar cores em toda , você só precisa executar o comando:

:set t_Co=0

Isso indica ao Vim que ele está sendo executado em um terminal que não suporta cores; portanto, o Vim produzirá apenas texto em preto e branco (que será exibido pelo seu terminal nas cores padrão).

No entanto, observe que, após alterar a t_Coconfiguração, o esquema de cores atual é recarregado (para que ele possa fazer as alterações apropriadas nas cores definidas). O esquema de cores "monokai" que você está usando inicia com a linha :set t_Co=256, redefinindo imediatamente a opção.

Eu diria que esse é um comportamento incorreto e deve ser arquivado como um bug no mantenedor do esquema de cores. Obviamente, eles podem discordar e argumentar que, como o esquema de cores requer 256 cores, não faz sentido tentar usá-lo em um terminal que não suporta isso (e que essa linha ajuda o monokai a funcionar corretamente quando o Vim está sendo executado). terminal configurado incorretamente).

De qualquer forma, você precisará alterar o esquema de cores do monokai antes de definir a t_Coopção, como você descobriu.

Restringindo cores às usadas normalmente no shell

As cores que o Vim usa para sua saída podem ser definidas e visualizadas com o :highlightcomando A execução :highlight clearredefine os padrões do Vim (efetivamente o mesmo que a execução :colorscheme defaults)

Trecho de :help :highlight:

:hi[ghlight] clear        Reset all highlighting to the defaults.  Removes all  
                          highlighting for groups added by the user!
                          Uses the current value of 'background' to decide which
                          default colors to use.

(Observe o comentário sobre a 'background'opção.)

Se isso não produzir a saída desejada, você terá algumas opções.

  1. Se você estiver atualmente usando o Vim no modo de 256 cores, tente usar o modo de 16 cores, pois isso resultaria na seleção do Vim na paleta de cores que você provavelmente verá quando estiver no shell.

    A maneira limpa de fazer isso é executando o Vim com um conjunto de variáveis ​​$ TERM diferente. O valor que você precisa usar depende do seu terminal, mas, por exemplo, se você $TERMé normalmente xterm-256color, executar o vim com o seguinte comando fará o seguinte:

    TERM=xterm vim
    

    (Você também pode obter um efeito semelhante de uma maneira mais hacky, configurando a opção de terminal diretamente no vim:. :set t_Co=16)

  2. Como alternativa, se apenas alguns itens específicos forem coloridos incorretamente, você poderá alterar as cores desses itens com o :highlightcomando por exemplo, para remover a cor de fundo da linha do cursor:

    :highlight CursorLine ctermbg=NONE
    

    Se você não tiver certeza de qual grupo precisa alterar, basta executar :highlightsem argumentos ou executar: :so $VIMRUNTIME/syntax/hitest.vimpara abrir uma nova janela exibindo todos os realces atuais.

    Consulte as seções na parte inferior desta resposta para obter dicas sobre como fazer isso rápido com um comando personalizado ou configurando um novo esquema de cores.

Apagamento da cor de fundo (BCE)

Se você tiver um problema com o plano de fundo com aparência diferente quando ele contém texto, pode estar encontrando BCE (Apagamento da cor de plano de fundo). Você pode desativar isso com o comando:

:set t_ut=

Há uma pergunta específica sobre isso aqui , e o problema é abordado em mais detalhes nesta postagem do blog .

Atualização (Substituindo sublinhados):

De nossa discussão nos comentários, ficou claro que um dos problemas que você tem é que seu terminal exibe texto sublinhado em uma cor diferente. Você tem duas opções para solucionar isso:

  1. Corrija a configuração do terminal para renderizar texto sublinhado da mesma cor! Eu não posso te ajudar com isso.

  2. Desative o sublinhado no Vim. Você pode fazer isso com o :highlightcomando: por exemplo, o seguinte removerá todas as cores / formatações dos números de linha:

    :highlight LineNr NONE
    

Desativando as cores com um comando

Para fazer isso rápido, você pode configurar um comando para executar todas as etapas necessárias de uma só vez:

 function! TurnOffColors()
   :set t_Co=0
   :highlight LineNr NONE
   :highlight CursorLine NONE
   " Add any other necessary highlight lines here
 endfunction

 command! TurnOffColors call TurnOffColors()

Criando um novo colorscheme

Como alternativa, você pode criar um novo esquema de cores "NoColorsNoUnderlines" em que desativa os sublinhados conforme apropriado. Para obter instruções sobre como fazer isso, execute o comando:

:edit $VIMRUNTIME/colors/README.txt

Você pode usar esse esquema de cores em preto e branco como ponto de partida.

Rico
fonte
Parece que apenas define colorscheme default. Junto com syntax offisso é quase o que eu desejo. Exceto que (1) a linha do cursor ainda está sublinhada na linha atual e a coloca branca; (2) os números das linhas ainda estão coloridos.
Mateusz Piotrowski
11
@MateuszPiotrowski Expandi minha resposta um pouco, o que espero ajudar. Observe que, a menos que você desative totalmente as cores, não faz sentido dizer que você não deseja que o Vim use um esquema de cores. O Vim exibe coisas na tela e precisa usar algumas cores. As cores são definidas pelo esquema de cores.
Ricos
@MateuszPiotrowski "LineNr" é a configuração de destaque que afeta as cores dos números de linha.
Rich
3
Na verdade, relendo sua pergunta, parece que talvez você queira apenas desligar totalmente as cores. :set t_Co=0fará isso por você.
Ricos
Nenhuma dessas opções funciona como eu esperava. vim -u NONEcomeça com o plano de fundo e o primeiro plano do terminal, mas não carrega nenhum vimrc. Gostaria de saber o que devo desativar para obter esse efeito.
Mateusz Piotrowski
2

set t_Co=0quebra alguns recursos do Vim, como ^X^Oe ainda usa o destaque básico dos termos (negrito, sublinhado).

Você pode usar algo como nofrils e ajustar o hi Normal cterm=none ctermfg=none ctermbg=none. Fora isso, não vejo outra maneira, sem estragar sua experiência com o Vim.

JustUseEmacs
fonte