Caractères cachés insérés après le tube (|) suivi d'un espace [dupliquer]

13

Très souvent, sur mon Mac, lorsque j'utilise le caractère pipe (|) suivi d'un caractère espace, un caractère invisible est inséré entre les deux.

Ceci est particulièrement gênant lors de l'utilisation du terminal, car cela rend les commandes invalides.

Si je tape ce qui suit dans iterm2, je reçois souvent ce qui suit:

ls | cat
zsh: command not found:  cat

Si j'appuie sur la flèche vers le haut pour obtenir ma commande précédente, puis supprime et réinsère l'espace entre |et cat, la commande fonctionnera.

Lorsque je copie, collez les commandes de travail et de travail dans un fichier, comme ceci:

non-working: ls | cat
working: ls | cat

et ouvrez-le dans Hex Fiend, il montre ce qui suit:

non-working: ls | cat
working: ls | cat

J'ai également rencontré le même type de problème dans SublimeText2 en utilisant les crochets ( []) suivis d'un espace. Donc, je ne crois pas que ce soit un problème avec iTerm2.

chouette
la source
1
Dans le même ordre d'idées, y a-t-il un moyen de faire en sorte que Terminal affiche les caractères invisibles, comme le font les éditeurs de texte, par exemple sous la forme d'une puce grise?
Jelovirt

Réponses:

14

Ce qui se passe est que vous continuez à appuyer sur la barre d'espace, qui insère un espace insécable , connu en HTML par le biais de la  référence. Cet espace insécable est utile dans le traitement de texte où vous souhaitez que certains mots restent liés, tels que "OS" et "X" dans "OS X".

De toute évidence, il s’agit d’un caractère unicode ( 00A0) et, par conséquent, la plupart des utilitaires de ligne de commande échoueront, tels que bash see _cat(où se _trouve l’espace insécable) et Hex Fiend utilisant simplement une représentation erronée. Certains éditeurs, par contre, vont simplement le supprimer silencieusement (par exemple cet éditeur ici), alors que d'autres ont même une représentation spéciale pour cela (par exemple, TextMate montrant un point au lieu de l'espace vide).

Il y a deux solutions:

slhck
la source
Cela semble en effet être le problème. Je ne peux pas croire que je ne l'ai pas attrapé avant. Je suppose qu'une solution serait de remapper l'espace combiné avec le modificateur à un caractère d'espace normal.
chouette
Est-il possible de faire en sorte que le terminal affiche nbsp comme un caractère inversé ou une sorte, de sorte que vous puissiez le voir instantanément lorsque vous vous trompez?
forthrin
@ Forthrin Bonne question. Je ne connais aucun moyen de le faire, mis à part la modification de vos paramètres régionaux, de sorte que les caractères non-ASCII ne puissent pas être affichés correctement.
Slhck