Come visualizzare i personaggi nascosti in vim?


54

Come posso configurare vim per mostrare SOLO caratteri nascosti come tab o spazi mentre questi sono digitati? Non voglio che le schede e / o lo spazio vengano sostituiti con caratteri speciali come ">" o "_" quando il file viene scritto.


1
Hai sicuramente bisogno di spazi da mostrare? La soluzione tipica è usare :set list. Questo può ottenere tutto tranne gli spazi.
Kris Harper,

Risposte:


64

Puoi usare i comandi

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
:set list

per mostrare tutti i personaggi che non sono spazi bianchi. Quindi gli spazi sono l'unica cosa che non si presenta.

Se anche tu hai assolutamente bisogno di spazi da marcare, dovrai provare qualcosa di meno bello. Qualcosa di simile a

:%s/ /█/g

Sostituirà tutti gli spazi con un carattere a blocchi. Quindi dovresti annullarlo prima di scrivere. È possibile rimappare il comando di scrittura do

cmap :w :%s/█/ /g<CR>:w

Solo un suggerimento. Non l'ho provato però.


Grazie per l'aiuto; il tuo suggerimento funziona abbastanza bene. Tuttavia, ho notato che a volte quando apro determinati file vedo "> ---" (che indica la scheda). C'è un modo per farlo in modo che i caratteri della scheda vengano visualizzati solo durante la digitazione?
dan0

@ dan0 Intendi solo durante la modalità di inserimento? Non lo so. Ne dubito. È possibile effettuare alcune funzioni di mappatura in modo che quando si passa alla modalità di inserimento, prima chiama il :set listcharscomando e non lo imposta su nulla, quindi lo richiama quando si esce dalla modalità di inserimento. Ma non ne so abbastanza delle mappe per farlo.
Kris Harper,

@JonathanKomar "set nolist"
Vladislavs Dovgalecs

1
L'uso space:␣funziona bene per me: :set listchars=eol:$,tab:>-,trail:~,space:␣
loxaxs

15

Le versioni più recenti di vim possono mostrare anche spazi. (Confermato su vim 7.4.1689).

:set list
:set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»

4

Nel mio caso ho dovuto combattere nbsp ,

:set listchars=nbsp:☠,tab:▸␣
:set list

Puoi anche usare ␣ invece di ☠

Ecco un esempio in cui la precedente configurazione di VIM evidenzia gli spazi "invisibili strani" e inoltre evidenzia le schede (colore rosso perché sto usando il plugin VIM trailing-whitespace)

Qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.