2008-08-30 18 views
8

En utilisant Terminal.app sous OS X 10.5, vous voyez souvent que les commandes sont tronquées lorsque vous effectuez une recherche inversée avec Bash. Y at-il une sorte de termcap ou peut-être une commande bash shopt qui peut résoudre ce problème? Il est très ennuyeux. Procédure de reproduction: Ouvrez Terminal.app, effectuez une recherche inversée sur une commande longue. Hit <ctrl> -E une fois que vous avez trouvé la commande. Le curseur va à la fin de la ligne, mais l'affichage ne se met pas à jour.Comment est-ce que je fais un travail de recherche inverse bash dans Terminal.app sans qu'il affiche une sortie tronquée?

Je suppose qu'il s'agit d'un problème avec la bibliothèque readline sous OS X. La mise à jour de la position du curseur après une recherche est plus problématique que toute autre chose. Fondamentalement, ctrl-a et ctrl-e ont tendance à casser la sortie de recherche.

os x terminal failure image http://involution.com/images/osxterminal.png

Dans ce qui précède, la première partie de la commande doit être affiché et le curseur doit être à la fin de la ligne, mais ce n'est pas. Vous ne pouvez littéralement pas voir ce que vous éditez lorsque cela se produit.

+0

Quelle est la valeur de votre variabile $ PS1? – Milhous

Répondre

11

J'ai été en mesure de définir mon TERM à xterm au lieu de xterm-color et cela résout le problème. (export TERM = xterm).

+0

Je viens juste d'essayer ça, et ça marche! – hoyhoy

1

Je ne peux pas reproduire ce, frapper soit Ctrl +E, Ctrl +A ou les touches fléchées met à jour la ligne de commande correctement. Courez-vous 10.5.4? Est-ce peut-être un bug dans les versions antérieures?

+0

Cela se passe depuis Tiger pour moi. – hoyhoy

1

Je l'ai rencontré ce bug, et alors que je ne sais pas comment le résoudre, vous pouvez contourner le problème en appuyant sur <down><up>

+0

Down/up fonctionne. Donc, en théorie, vous pouvez rechercher, puis abattre, puis remonter, puis ctrl-e. Mais je suis à la recherche de termcap élite ou d'un correctif readline pour résoudre ce problème. – hoyhoy

1

Vous ne savez pas si c'est le problème ici, mais la fenêtre en cours de redimensionnement est une cause très fréquente d'écran fautif dans bash (avec n'importe quel émulateur de terminal, pas seulement Terminal.app).

Bash lira la taille de la fenêtre au démarrage, puis supposera qu'elle n'a pas changé. Lorsque la fenêtre est redimensionnée, un signal est envoyé à l'application en cours de lecture sur la console. Si ce n'est pas bash (parce que vous utilisez un éditeur de texte à ce moment, peut-être), bash ne le saura pas.

La solution dans ce cas est de redimensionner la fenêtre de sorte que bash reçoive le signal et remarque la nouvelle taille.

0

Dans le pire des cas, vous pouvez lancer le serveur X (quelque part sous des utilitaires) et lancer un véritable xterm.