Wie kann ich den Suchverlauf mit dem Befehl reverse-i-search (Strg + r) weiterleiten?

12

Im Readline-Handbuch

# man readline

Im Folgenden wird beschrieben, wie Sie vorwärts und rückwärts suchen.

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

Wenn ich Strg + R drücke und "apt-get" eingebe, kann ich einen Reverse-Search-Verlauf erstellen, indem ich kontinuierlich auf Strg + r tippe. Aber dann tippe ich auf Strg + s und das Terminal geht nicht vorwärts. Mache ich etwas falsch

Welchen Schlüssel repräsentiert auch das Meta-Präfix "M-"?

user784637
quelle

Antworten:

15

Die Sequenz C-swird vom Terminaltreiber übernommen, wie Sie sehen können

stty -a | grep '\^S'

Um die Sequenz für die Verwendung durch readline freizugeben, setzen Sie die Stop-Terminal-Sequenz auf eine andere Sequenz, wie zum Beispiel

stty stop ^J

oder entfernen Sie es ganz mit

stty stop undef

Danach C-swürde im angegebenen Terminal funktionieren.

Stellen Sie es so ein ~/.bashrc, dass es in jedem Terminal funktioniert.

Die M-Sequenz bedeutet Alt, wie bereits erwähnt , den Schlüssel.

Enzotib
quelle
^ J ist eine gute Wahl, da stopes für nichts anderes verwendet wird
Kochfelder
3

Zusätzlich zum Zuweisen eines anderen TTY-Stoppzeichens wie oben vorgeschlagen können Sie es vollständig entfernen, wenn Sie nicht vorhaben, es zu verwenden (ich neige dazu, dies nicht zu tun), wie folgt:

$ stty stop undef

Dann kann readline Steuerelemente für die Vorwärtssuche verwenden, und Sie erhalten kein seltsames Verhalten, da ein neues Stoppzeichen hinzugefügt wird.

ntnt
quelle
Dies ist ein viel besserer Weg.
A. Danischewski
1

Der Forward-Search-Verlauf (Cs) funktioniert nicht (obwohl er sich in der Manpage befindet).

'M-' steht für den Alt-Tastenmodifikator.

Gödel
quelle
1
Das C-sTeil nicht korrigieren , siehe meine Antwort.
Enzotib
0

Bitte nicht verwenden:

stty stop ^J

aber

stty stop ^P

oder irgendetwas anderes, da ^Jmacht große Probleme mit ssh. (Ich weiß sowieso nicht warum.) Nachdem ich mich eingeloggt hatte Enterund Backslash nicht funktionierte. oder ich musste tippen:

stty sane 
export TERM=linux

bevor ich tippen wollte

ssh root@192...

so

stty stop ^P

löste beide Probleme gleichzeitig.

Xerostomus
quelle
0

Sie können die XON / XOFF-Flusssteuerung deaktivieren:

stty -ixon

In Ihrem ~ / .profil oder ähnlichem wird Strg + S erkannt.

Beispiel

Steven Penny
quelle
0

So schalten Sie bei Verwendung der Rückwärtssuche vorwärts (mit dem Befehl Strg-R):

  1. Öffnen Sie Ihre .bashrc-Datei:
    sudo gedit ~/.bashrc

  2. Fügen Sie diese Zeile hinzu (der Buchstabe "f" kann durch einen anderen ersetzt werden, der vom System noch nicht verwendet wird).

    bind '"\C-f": forward-search-history' 
    
  3. Schließen Sie Ihre Datei und aktualisieren Sie Ihre .bashrc (oder öffnen Sie ein anderes Terminal) mit dem Befehl:
    source ~/.bashrcoder. ~/.bashrc

JETZT KÖNNEN SIE SICH MIT DEM KURZSCHNITT IN DER GESCHICHTE VORWÄRTS BEWEGEN: Strg + f

Arbeiten an Ubuntu 18.04 LTS

Franklin TN
quelle
0

Beachten Sie, dass ich verwendet hatte

stty stop ^J
stty -ixoff

in .bashrc, um die Vorwärtssuche zu aktivieren und die nervige Meldung "Ausgabe wurde durch Drücken von Strg + S angehalten. Drücken Sie Strg + Q, um fortzufahren" in Konsole zu deaktivieren, wenn Strg + s gedrückt wurde, aber beide Befehle haben die Konsole-Integration in Dolphin einzeln unterbrochen ( die Verknüpfung "F4") in der Weise, dass ich zweimal Strg + C drücken musste, damit es überhaupt funktioniert, und die automatischen "cd" -Befehle wurden beim grafischen Navigieren nicht eingefügt.

Also bevorzuge ich jetzt:

stty stop undef
stty -ixon

Es hat den gleichen Effekt, alles scheint wie erwartet zu funktionieren;)

NoGa
quelle