Cette question a déjà une réponse ici:
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.
Réponses:
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:
Faites plus attention à relâcher la ⌥touche lorsque vous appuyez sur la barre d'espace. Au fait: ça m'arrive tout le temps aussi.
Désactivez complètement la combinaison: Comment désactiver la combinaison de touches Option-Espace pour les espaces insécables?
la source
⌥
modificateur à un caractère d'espace normal.