Verwendungszweck von Strg + T in Bash?

47

Ich habe festgestellt, dass Bash eine Abkürzung für ctrl+ hat, Tdie die letzten beiden Zeichen vor dem Cursor vertauscht.

Ich frage mich, warum sich die Ingenieure dazu entschlossen haben.

  • Wurde es von einer früheren Konvention geerbt?
  • Oder gibt es einen praktischen Zweck, für den dies häufig verwendet wird?
Philip Kirkbride
quelle
13
Keine Antwort, aber nicht bashals solche, sondern readline(welche Bash für die Eingabe an der Eingabeaufforderung verwendet). Ihre Bash verwendet emacsTastenbelegungen. ); Sie können , wenn Sie ein Editor Wars - Partisanen zu vi Tastenzuordnungen ändern sanctum.geek.nz/arabesque/vi-mode-in-bash Es gibt ein paar „Cheat-sheets“ für readline: hier readline.kablamo.org/emacs .html und readline.kablamo.org/vi.html .
John N
13
In der Vergangenheit wurden die Befehlszeilen-Bearbeitungsfunktionen im Emacs-Stil zunächst in Bash entwickelt und dann in eine separate Bibliothek umgewandelt - dies geschah jedoch vor der ersten Veröffentlichung im Jahr 1989. Der allererste Eintrag in denreadline ChangeLog Hinweisen dazu. Ursprünglich wurde die Verknüpfung in Bash selbst behandelt, wenn auch nur kurz, bevor sie herausgezogen wurde readline- aber die Verknüpfung kam von Emacs zu Bash (ich weiß nicht, ob sie in Emacs erfunden wurde oder von woandersher kam).
Stephen Kitt

Antworten:

63

Es ist sehr nützlich, Tippfehler schnell zu beheben:

sl

wird

ls

mit einer einzigen CtrlT.

Mit können Sie auch AltTWörter tauschen ( z. B. beim Wechseln zwischen serviceund systemctl...).

Historisch gesehen kam das CtrlTFeature höchstwahrscheinlich von Emacs zu Bash. Es wurde wahrscheinlich von einem anderen Herausgeber nach Emacs kopiert. 1980 war es in Stanfords E-Editor (siehe Essential E Seite 13) enthalten, und E hatte einen starken Einfluss auf Richard Stallman (wie in Free as in Freedom beschrieben ). Es wurde in sehr frühen Versionen von Bash implementiert, bevor es 1989 zum ersten Mal veröffentlicht wurde, als es in die readlineBibliothek ausgelagert wurde, in der es sich heute befindet (der allererste Eintrag in den readline ChangeLogHinweisen dazu).

Stephen Kitt
quelle
2
Das Austauschen von Wörtern war etwas Neues und sehr hilfreich
Mischling
Wenn Sie Alt + T ein numerisches Argument zuweisen, wird das Wort an (oder vor) dem Cursor mit dem n- ten Wort vor diesem Wort transponiert . Beispiel: Alt + 2 Alt + T ändert sich word1 word2 word3zu, word3 word2 word1wenn es um ausgeführt wird word3.
Crw
@crw das wäre nett, aber alt + T tauscht keine Wörter auf meinem Terminal. Ich öffne gerade den Menüpunkt 'Titel setzen'.
Philip Kirkbride
@ PhilipKirkbride, das ist eine Schande, Ihr Terminal-Emulator beraubt Sie einer sehr nützlichen Verknüpfung ...
Stephen Kitt
@PhilipKirkbride es sollte eine Option des Terminal-Emulators geben, um
Menüzugriffstasten
15

Diese Tastenkombination, eine vom emacsEditor geerbte Bindung , bewirkt, dass die letzten 2 eingegebenen Zeichen am Ende der Zeile vertauscht werden. Sie wird in der Mitte einer Zeile verwendet und vertauscht das Zeichen links vom Cursor und das Zeichen unter dem Mauszeiger.

Es mag vergeblich erscheinen, eine Bindung für ein so selten verwendetes Merkmal zu haben, das mit ein paar weiteren Tastenanschlägen leicht erreicht werden kann. Alte Timer, wie ich sie oft benutze, haben in den Tagen von 300-Baud-Modems Ende der 70er Jahre, besonders in der Mitte langer Leitungen, etwas Übertragungszeit gespart.

Ein ähnlicher und nützlicherer Befehl, der an Alt+ gebunden ist T, transponiert die Wörter links und rechts vom Cursor.

Twurde gewählt, weil es sich um den ersten Umsetzungsbrief handelt . Andere Bindungen mit ähnlicher Herkunft sind:

  • Ctrl+ B, Für rückwärts , bewegt den Cursor nach links um eine Position,
    • Alt+ Bbewegt den Cursor um ein Wort nach links,
  • Ctrl+ FFür vorwärts , bewegt den Cursor nach rechts um eine Position,
    • Alt+ Fbewegt den Cursor ein Wort nach rechts,
  • Ctrl+ A, für Anfang oder ante , bewegt den Cursor an den Zeilenanfang,
  • Ctrl+ Efür Ende bewegt den Cursor an das Ende der Zeile,
  • Ctrl+ ruft Nfür next die nächste Zeile ab,
  • Ctrl+ Pfür vorherige ruft die nächste Zeile ab,
  • Ctrl+ löscht Dzum Löschen das Zeichen unter dem Cursor.
    • Alt+ Dlöscht das Wort unter dem Cursor,
  • Ctrl+ schneidet Kfür kill das Zeilenende ab,
  • Ctrl+ Y, Für yank , um den Inhalt der Zwischenablage Pasten,

Diese im GNU-Readline-Paket implementierten Bindungen sind daher in allen Programmen verfügbar, die sie für Benutzereingaben verwenden, z. B. bash , aber auch gdb , bc , ...

Einige davon sind auch in anderen Umgebungen verfügbar: Die Firefox-URL-Eingabezeile, Texteingabefelder in der grafischen Benutzeroberfläche von OS / X und viele X-basierte Fenstermanager.

vim- Benutzer können die entsprechenden Bindungen über eine Umgebungsvariable auswählen.

chqrlie
quelle
Ja, es ist großartig für Leute wie uns, die manchmal vergessen, dass wir eher in ein Terminal als in einen Emacs tippen. Ich bin immer noch unzufrieden, wenn ich Firefox-Widgets für Textbereiche verwende (wie diese jetzt), denen diese wichtigen Bindungen fehlen. :-(
Toby Speight
Gibt es eine Möglichkeit, die Zeichen- und Wortversionen verwandter Befehle in Ihrer Beschreibung zu koppeln? Es hilft dem Gedächtnis wirklich, wenn Sie erkennen, dass die Altund CtrlVersionen dieser Tastenanschläge auf konsistente Weise zusammenhängen.
Toby Speight
@TobySpeight GTK + unterstützt ein alternatives Emacs-ähnliches Tastenkombinationsthema, sodass Sie einige dieser Tastenkombinationen in Firefox verwenden können. C-tscheint aber nichts zu tun. wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
Candy Gumdrop
@TobySpeight haben Sie schon einmal versucht, es ist alles Text! ? Hier können Sie den Inhalt von Textbereichen in einem Editor Ihrer Wahl bearbeiten.
Stephen Kitt
Danke @Stephen - ich habe davon gehört, es aber (noch) nicht ausprobiert. Ich werde das
Toby Speight
10

Es ist sehr nützlich für das Korrigieren von kleinen, zufällig verteilten Letternpaaren.

(Da ich an beiden Handgelenken starke RSI habe, benutze ich diese häufig ...)

flauschige
quelle
2
Meine Augen bluten
Grund
4

Ein sehr schnell zu behebender Tippfehler. Bewirkt den sofortigen 2-Korrektorblock vor dem Kursor.

Wenn Sie tippen ls-und ein Leerzeichen zwischen ls& Bindestrich einfügen möchten , können Sie Ctrl+ verwendenT

Dies funktioniert, wenn Sie ein Leerzeichen nach dem Bindestrich haben und dann Ctrl+ tunT

Mischling
quelle