Destacar espaços em branco extras e coluna de comprimento fixo no VIM

2

Eu quero destacar os espaços em branco extras e a coluna de tamanho fixo (por exemplo, 80 caracteres em uma linha) usando o VIM

Eu criei duas regras vimrc no meu arquivo .vimrc

highlight ExtraWhitespacea ctermbg=darkred guibg=#382424
match ExtraWhitespacea /\s\+$/
highlight OverLength ctermbg=green ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

Agora, o problema é que essas regras são executadas exatamente como eu quero, se aplicadas separadamente, mas não funcionam juntas.

Estou sentindo falta de algo aqui? Como depuro isso?

    
por Abhijeet Kasurde 27.06.2014 / 06:50

2 respostas

4

O problema é que cada comando :match substitui o padrão do anterior; eles não são cumulativos! Por isso, existem :2match e :3match variants. Use um deles:

highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
highlight OverLength ctermbg=red guibg=#525252
2match OverLength /\%81v.\+/

Variantes adicionais podem ser criadas com a função matchadd() Vimscript.

Notas

  • Desde o Vim 7.3, há uma opção 'colorcolumn' integrada que ativa o realce de coluna (s).
  • Sua configuração em ~/.vimrc funciona somente na primeira janela; ou seja, um :split criará uma janela que não tenha esses realces. Você pode corrigir isso via autocmds (ou usando a opção 'colorcolumn' ).
  • Existem soluções mais robustas e elaboradas para realçar o trailing espaço em branco, por exemplo, meu plug-in ShowTrailingWhitespace . (A página do plugin tem links para plugins alternativos).
por 27.06.2014 / 12:22
2

Pode ser que seu esquema de cores tenha sobreposto sua configuração. Você pode adicionar essas linhas no final de .vimrc para evitar a substituição ou apenas adicionar essas linhas ao seu .vimrc :

" Highlight trailing white spaces
highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

" Highlight long lines
highlight OverLength ctermbg=green ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
autocmd BufWinEnter * match OverLength /\%81v.\+/
autocmd InsertEnter * match OverLength /\%81v.\+/
autocmd InsertLeave * match OverLength /\%81v.\+/
autocmd BufWinLeave * call clearmatches()
    
por 27.06.2014 / 07:25

Tags