Warum verhält sich STRG-r unter OS X seltsam (zeigt nur einen Teil eines Befehls an)

10

Ctrl+ rist ein großartiges kleines Tool zum Durchsuchen Ihrer .bash_historyzuvor ausgeführten Befehle.

Wenn ich es jedoch in meiner OS X Terminal.app verwende, sehe ich ein seltsames Verhalten und habe mich gefragt, ob jemand anderes dasselbe sieht oder weiß, wie man es behebt.

  1. Ctrl+r
  2. tippe so etwas ein find
  3. oh cool, schau ... es ist der Befehl, den ich wollte find . -exec grep -q "hello world" '{}' \; -print
  4. Ich möchte diesen Befehl ausführen, aber die Hallo Welt in etwas anderes ändern.
  5. Also habe ich oder getroffen
  6. Jetzt ist der Befehl SORTA in der Befehlszeile, aber es sieht immer wie eine abgeschnittene Version des Befehls aus, wie folgt : -q "blog_posts_by" '{}' \; -print, wo sich der gesamte Befehl befindet, und ich kann die Cursortasten verwenden, um mich in der Zeile zu bewegen, aber nicht alle es wird gedruckt. Es besteht eine Trennung zwischen dem, was in der Zeile angezeigt wird, und dem, was das Terminal tatsächlich für mich bearbeitet.

Hat jemand eine Ahnung, warum dies passieren könnte? Es ist kein leichtes Phänomen, die Websites zu durchsuchen.

bryan kennedy
quelle
Kommt dies nur bei Zeilen vor, die länger sind als Ihre Termfensterbreite?
Essobi
Auf welcher Version von Terminal.App/OSX wird BTW ausgeführt? Bash-Version? Können Sie uns auch Ihre .bashrc zeigen?
Essobi

Antworten:

14

Sie haben wahrscheinlich Escape-Sequenzen für Farben in Ihrer Eingabeaufforderung, die nicht richtig abgegrenzt sind. Sie müssen eingeschlossen werden in \[und \].

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

Die Länge nicht druckbarer Zeichenfolgen ist nicht in der Länge der Eingabeaufforderung enthalten, wenn sie eingeschlossen sind, und die Position vorheriger Befehle muss für eine ordnungsgemäße Anzeige beim Umbruch berechnet werden.

Bis auf weiteres angehalten.
quelle
OK, ich hatte noch ein paar Probleme, die vom Antwortenden in diesem StackOverflow-Thread gelöst wurden - stackoverflow.com/questions/35563/…
bryan kennedy
Dies gilt auch für Zeilenumbrüche in der Eingabeaufforderung. Ich hatte eine hicolor Kontrollsequenz fallen gelassen, weil es am Anfang war PS1, aber nicht wieder nach dem Newline-Zeichen innerhalb.
Walf
0

Dies könnte an der Art und Weise liegen, wie die Escape-Tasten auf Ihrem Terminal konfiguriert sind. Normalerweise verwende ich den linken oder rechten Pfeil auf iTerm oder Terminal.app, da ich kein Fan davon bin, sofort auf Return zu klicken. Funktioniert das für Sie? ?

Luchsmann
quelle
0

Eine andere mögliche Ursache für dieses Problem ist der falsche TERMWert. Dies ist mir zum Beispiel passiert, als ich Farben in meiner PS1 verwendet habe, aber meine TERMwar auf eingestellt xterm. Ich habe es geändert xterm-256colorund dann hat STRG-r wieder richtig funktioniert.

Tony
quelle