Comment afficher les caractères cachés dans vim?

54

Comment puis-je configurer vim pour afficher les caractères masqués tels que des tabulations ou des espaces UNIQUEMENT pendant la saisie de ces caractères? Je ne veux pas que les tabulations et / ou l'espace soient remplacés par des caractères spéciaux tels que ">" ou "_" lors de l'écriture du fichier.

dan0
la source
1
Avez-vous vraiment besoin d'espaces à montrer? La solution typique est d'utiliser :set list. Cela peut tout obtenir sauf des espaces.
Kris Harper

Réponses:

64

Vous pouvez utiliser les commandes

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

pour afficher tous les caractères qui ne sont pas des espaces. Donc, les espaces sont la seule chose qui ne se présente pas.

Si vous avez absolument besoin que des espaces soient également marqués, vous devrez essayer quelque chose de moins agréable. Quelque chose comme

:%s/ /█/g

Remplacera tous les espaces par un caractère de bloc. Ensuite, vous devez l'annuler avant d'écrire. Vous pouvez remapper votre commande d'écriture do

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

Juste une suggestion. Je n'ai pas essayé cependant.

Kris Harper
la source
Merci pour l'aide; votre suggestion fonctionne assez bien. Cependant, j'ai remarqué que parfois, lorsque j'ouvre certains fichiers, je vois "> ---" (onglet indiquant). Existe-t-il un moyen de faire en sorte que les caractères de tabulation n'apparaissent que pendant la frappe?
Dan0
@ dan0 Vous voulez dire seulement en mode insertion? Je ne sais pas. J'en doute un peu. Vous pouvez créer certaines fonctions de mappage pour que, lorsque vous passez en mode insertion, la :set listcharscommande soit d'abord appelée, puis définie sur rien, puis appelée à nouveau lorsque vous quittez le mode insertion. Mais je ne connais pas assez les cartes pour le faire.
Kris Harper
@JonathanKomar "set nolist"
Vladislavs Dovgalecs
1
L'utilisation space:␣fonctionne bien pour moi: :set listchars=eol:$,tab:>-,trail:~,space:␣
loxaxs
15

Les versions plus récentes de vim peuvent également afficher des espaces. (Confirmé le vim 7.4.1689).

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

Dans mon cas, je devais me battre nbsp ,

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

Vous pouvez également utiliser ␣ au lieu de

Voici un exemple où la configuration de vim ci-dessus met en évidence les espaces "invisibles" et met également en surbrillance les onglets (couleur rouge parce que j'utilise le plugin vim trailing-whitespace)

Ici

Andreï Arapov
la source