Ctrl+ rest un excellent petit outil pour rechercher vos .bash_history
commandes précédemment exécutées.
Cependant, lorsque je l'utilise dans mon OS X Terminal.app, je vois un comportement étrange et je me demandais si quelqu'un d'autre voyait la même chose ou savait comment le réparer.
- Ctrl+r
- tapez quelque chose comme
find
- oh cool, regarde ... c'est la commande que je voulais
find . -exec grep -q "hello world" '{}' \; -print
- Je veux exécuter cette commande mais changer le monde bonjour en quelque chose d'autre.
- Alors j'ai frappé ←ou→
- Maintenant, la commande est SORTA sur la ligne de commande, mais elle ressemble toujours à une version tronquée de la commande, comme ceci:,
-q "blog_posts_by" '{}' \; -print
où la commande entière est là, et je peux utiliser les touches de curseur pour se déplacer sur la ligne, mais pas tout il est imprimé. Il y a un décalage entre ce qui est affiché sur la ligne et ce que le terminal pense réellement que je modifie.
Quelqu'un sait-il pourquoi cela pourrait se produire? Ce n'est pas un phénomène facile de rechercher sur le Web.
Réponses:
Vous avez probablement des séquences d'échappement pour les couleurs dans votre invite qui ne sont pas correctement délimitées. Ils doivent être enfermés dans
\[
et\]
.La longueur des séquences de caractères non imprimables n'est pas incluse dans la longueur de l'invite lorsqu'elles sont ainsi fermées et la position des commandes précédentes doit être calculée pour un affichage correct lors de leur enroulement.
la source
PS1
, mais pas à nouveau après le caractère de nouvelle ligne à l'intérieur.Cela pourrait être dû à la façon dont les touches d'échappement sont configurées sur votre terminal, ce que je fais normalement, c'est utiliser la flèche gauche ou droite sur iTerm ou Terminal.app car je ne suis pas un fan de frapper retour immédiatement, cela fonctionne-t-il pour vous ?
la source
Une autre cause possible de ce problème est la mauvaise
TERM
valeur. Par exemple, cela m'est arrivé lorsque j'utilisais des couleurs dans ma PS1, mais monTERM
était réglé surxterm
. Je l'ai changé enxterm-256color
puis CTRL-r a recommencé à fonctionner correctement.la source