J'utilise la disposition du clavier finlandais qui mappe AltGr+ Spaceà un espace insécable (NBSP, U + 00A0). Je suis satisfait de cela en général, mais je trouve que j'écris souvent accidentellement NBSP au lieu de l'espace normal après le |
symbole " " (écrit avec AltGr+ <avec la disposition du clavier finlandais) lorsque j'utilise la ligne de commande bash. Je suppose que cela est dû au fait que je dois tenir AltGrtout en tapant le tuyau et le relâcher avant de toucher l'espace. Et quand j'ai un mauvais timing pour la sortie de AltGrje me retrouve avec une faute de frappe invisible sur la ligne de commande et des messages d'erreur tels que
grep: command not found
qui ressemble assez à
grep: command not found
ce qui rend ce problème un peu difficile à remarquer la première fois.
Je sais que je peux désactiver NBSP mais je préférerais le désactiver (avoir AltGr+ Spacepour produire de l'espace régulier) seulement après le caractère pipe, ou si ce n'est pas possible, toujours sur la ligne de commande bash ou au readline
niveau. Existe-t-il un moyen simple de le faire sans modifier le code source de bash readline
ou mon émulateur de terminal ( gnome-terminal
)?
Une autre bonne solution serait de configurer NBSP pour qu'il soit en quelque sorte visible sur la ligne de commande, par exemple remplacé par un autre caractère (disons U + 2423 ␣
) pour le rendu uniquement.
la source
" ":␣
suffisant? De quoi d'autres avez-vous besoin?echo a␣b
mais la ligne de sortie résultante étaitecho a b
avec un vrai NBSP dans la sortie. En tant que tel, je pense que cela doit être fait au niveau de la ligne de lecture (c'est-à-dire que l' éditeur de ligne de commande affiche toujours un caractère visible mais l'émulateur de terminal ne peut pas faire la différence entre l'affichage de l'éditeur et l'affichage de sortie et donc l'émulateur de terminal ne peut pas faire le remplacement visuel du rendu ).Réponses:
Cela peut se faire au
readline
niveau de deux manières différentes.Méthode 1
Mettez le suivant dans
.inputrc
(le fichier de configuration pourreadline
):Si le démarquage gâche ce qui précède, vous devez mettre NBSP entre guillemets sur le côté gauche des deux points comme expliqué dans le commentaire. Cela mappera toute occurrence de NBSP sur le flux d'entrée avec un espace régulier.
Méthode 2
Mettez ce qui suit dans
.inputrc
:L'idée est de mapper la séquence de touches {pipe suivie de NBSP} à {pipe suivie d'espace}. Cela fonctionne si vous tapez la séquence dans les 250 ms (configurable ci-dessus). Cependant, tant que le délai n'est pas écoulé, la saisie du symbole de tuyau seul ne produira rien. Et si vous tapez la séquence trop lentement, le correctif ne sera pas appliqué. Notez également que le délai d'expiration est global, donc si vous avez l'intention d'utiliser d'autres séquences, vous devez définir le délai d'expiration suffisamment longtemps pour pouvoir taper la séquence la plus longue. (La bibliothèque readline n'est pas assez intelligente pour permettre de taper les caractères et remplacer plus tard les caractères déjà visibles une fois que la séquence de caractères correspond à la configuration.)
la source
Il existe un excellent article traitant de ce problème:
J'ai essayé de résoudre le problème principal avec
grep
les messages d'erreur et de changer NBSP en quelque chose de plus visible en utilisant laexec
commande. Cependant, je n'ai pas encore obtenu la syntaxe:L'idée est d'avoir cette commande
~/.bashrc
pour qu'elle se charge automatiquement à l'gnome-terminal
ouverture. Mais comme je l'ai dit, cela ne fonctionne pas encore ...la source
perl -i -npe 's/MARKER/4 KB/'
et je glisse accidentellement un NBSP entre le4
etK
. Oups, le problème est stocké dans un fichier mais je n'ai aucune erreur et la ligne de commande que j'ai écrite est parfaite.