Exibe espaços à direita no vim

8

Eu gostaria de ter uma exibição agradável e doce de espaço em branco à direita no meu terminal vim. Isso me permitiria removê-los antes de fechar o arquivo.

Estou ciente de que essa pergunta é bastante popular e já encontrei dezenas de respostas sobre o SO. Infelizmente ainda não encontrei um satisfatório ...

Então, vou tentar resumir as informações coletadas e as soluções que encontrei.

Solução 1: destacar manualmente espaços à direita

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

Prós:

  • Fácildeusar
  • Rápido
  • Compatívelcomcursorline

Contras:

  • Corescolhidanãoécompatívelcomoutrosesquemasdecoresporqueacorédefinidamanualmentecomored
  • Grandesblocosdefundovermelhonãosãomuitoestéticos

Solução2:usandoorecursodelista

setlistsetlistchars+=trail:◦

Prós:

  • Fácildeusar
  • Rápido

Contras:

  • Problemase:setcursorlineativado
  • Cordedicadaparalist/trailnãoéconfigurável.Temqueseromesmoqueosoutroslistagens

Solução3:usandoorecursodeocultação

synmatchWhiteSpace"\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2 
set concealcursor=nv
highlight Conceal ctermfg=red

Prós:

  • Mais bonito que a primeira solução

Contras:

  • O fundo não é o mesmo que o fundo da linha de cursor
  • Pode interferir com outras regras de ocultação
  • Cor escolhida nem sempre compatível com o esquema de cores
  • Não é compatível com a versão mais antiga do Vim

Minha pergunta

Which one of the enumerated solutions is the most suitable in terms of performance and compatibility and how can I get all the pros and none of the cons?

In other terms, I would like to find a solution where:

  • The highlight trailing color agree with the chosen colorscheme
  • This color is clearly visible but not too aggressive to the eyes
  • Compatible with cursorline (background and foreground)'
  • Compatible with other plugins that may use conceal
  • The trailing char can be set to any Unicode char
    
por nowox 31.05.2015 / 19:10

1 resposta

4

Em termos de desempenho, nenhum deles deve fazer diferença. O Vim geralmente fica atolado por padrões complexos de sintaxe; o padrão aqui é bem simples.

Para fazer com que a cor de destaque combine com o esquema de cores escolhido, use :hi link para um grupo existente; geralmente, isso seria Error . É claro que tudo isso só importa se você alternar cores bastante diferentes; mais, usar cores adequadas diretamente (como na sua solução 1) também seria bom.

Solution 1: Manually highlight trailing spaces

Eu gostaria disso, mas usando matchadd() em vez de :match ; isso deixa o último para realce personalizado. Além disso, clearmatches() é muito grosseiro; elimina todas correspondências e, portanto, pode afetar os plug-ins. Você pode usar / dar uma olhada no meu plug-in ShowTrailingWhitespace para uma implementação limpa e poderosa (que também inclui exceções para certos tipos de arquivos). Sim, é uma solução muito maior, mas ainda não percebi nenhum impacto.

Solution 2: Using list feature

Este é um recurso útil em si, e mantê-lo permanentemente tem efeitos no posicionamento do cursor em caracteres de tabulação, então eu não recomendaria isso.

Solution 3: Using conceal feature

Isso certamente interferirá em algumas sintaxes e plugins usando o recurso. Má ideia.

    
por 31.05.2015 / 21:00

Tags