Markieren Sie zusätzliche Leerzeichen und Spalten mit fester Länge in VIM

Markieren Sie zusätzliche Leerzeichen und Spalten mit fester Länge in VIM

Ich möchte zusätzliche Leerzeichen und Spalten mit fester Länge (z. B. 80 Zeichen in einer Zeile) mit VIM hervorheben

.vimrcIch habe in meiner Datei zwei vimrc-Regeln erstellt

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

Das Problem besteht nun darin, dass diese Regeln bei getrennter Anwendung genau wie gewünscht ausgeführt werden, zusammen jedoch nicht.

Übersehe ich hier etwas? Wie debugge ich das?

Antwort1

Das Problem ist, dass jeder :matchBefehl das Muster des vorherigen überschreibt; sie sind nicht kumulativ! Aus diesem Grund gibt es :2matchzwei :3matchVarianten. Verwenden Sie eine davon:

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

Zusätzliche Varianten können mit der Vimscript-Funktion erstellt werden matchadd().

Anmerkungen

  • Seit Vim 7.3 gibt es eine integrierte 'colorcolumn'Option, die das Hervorheben von Spalten ermöglicht.
  • Ihr Setup ~/.vimrcfunktioniert nur für das allererste Fenster; d. h. es :splitwird ein Fenster erstellt, das diese Hervorhebungen nicht hat. Sie können das über Autocmds (oder mithilfe der 'colorcolumn'Option) beheben.
  • Es gibt robustere und ausgefeiltere Lösungen zum Hervorheben nachstehender Leerzeichen, zum Beispiel meinePlugin „ShowTrailingWhitespace“. (Die Plugin-Seite enthält Links zu alternativen Plugins.)

Antwort2

Möglicherweise hat Ihr Farbschema Ihre Konfiguration überschrieben. Sie können diese Zeilen am Ende hinzufügen, um .vimrcein Überschreiben zu verhindern, oder einfach diese Zeilen zu Ihrem hinzufügen .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()

verwandte Informationen