Mi piacerebbe avere una bella e dolce esposizione di spazio bianco finale nel mio terminale VIM. Ciò mi consentirebbe di rimuoverli prima di chiudere il file.
Sono consapevole che questa domanda è piuttosto popolare e ho già trovato dozzine di risposte su SO. Purtroppo non ne ho ancora trovato uno soddisfacente ...
Quindi cercherò di riassumere le informazioni raccolte e le soluzioni che ho trovato.
Soluzione 1: evidenziare manualmente gli spazi finali
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()
Professionisti:
- Facile da usare
- Veloce
- Compatibile con
cursorline
Contro:
- Colore scelto non compatibile con altre combinazioni di colori perché il colore è impostato manualmente su
red
- I grandi blocchi di sfondo rosso non sono molto estetici
Soluzione 2: utilizzo della funzione elenco
set list
set listchars+=trail:◦
Professionisti:
- Facile da usare
- Veloce
Contro:
- Emettere se
:set cursorline
abilitato - Il colore dedicato per
list/trail
non è configurabile. Deve essere uguale agli altri listchar
Soluzione 3: utilizzo della funzione di occultamento
syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2
set concealcursor=nv
highlight Conceal ctermfg=red
Professionisti:
- Più bella della prima soluzione
Contro:
- Lo sfondo non è uguale allo sfondo della linea del cursore
- Può interferire con altre regole nascoste
- Colore scelto non sempre compatibile con la combinazione di colori
- Non compatibile con la versione precedente di Vim
La mia domanda
Quale delle soluzioni elencate è la più adatta in termini di prestazioni e compatibilità e come posso ottenere tutti i pro e nessuno dei contro?
In altri termini, vorrei trovare una soluzione in cui:
- Il colore finale dell'evidenziazione concorda con il colore scelto
- Questo colore è chiaramente visibile ma non troppo aggressivo per gli occhi
- Compatibile con
cursorline
(sfondo e primo piano) `- Compatibile con altri plug-in che potrebbero utilizzare occultamento
- Il carattere finale può essere impostato su qualsiasi carattere Unicode
:hi link ExtraWhitespace CursorLine
. Vedere:help hi-link
.