Verstehen Sie, was passiert, wenn ich eine Terminalzeichenfolge mit Strg+V ausspeichere?

Verstehen Sie, was passiert, wenn ich eine Terminalzeichenfolge mit Strg+V ausspeichere?

Wenn ich eine Tastenzuordnung an eine Funktion oder ein Widget in zsh binden möchte, muss ich zunächst Ctrl+ v- in einer Eingabeaufforderung drücken, dann die gewünschte Tastenfolge eingeben und dann die Ausgabe in meinem Tastenzuordnungsbefehl verwenden.
Wenn ich also beispielsweise die Aktion zum Öffnen des aktuellen Befehlszeileninhalts in einem Editor zuordnen möchte , muss ichCtrl+xCtrl+v

  • Drücken Sie Ctrl+ v-, um in den „Dump Key-Modus“ zu wechseln.
  • SchlagCtrl+xCtrl+v
    • In meinem Fall ergibt das^X^E
  • nimm das ^X^Eund benutze es in meinem Tastenkombinationsbefehl, zB
bindkey "^X^E" edit-command-line

Warum ist dies notwendig und was passiert eigentlich „hinter den Kulissen“, wenn ich dies tue?

Antwort1

Wenn Sie Ctrl- drücken V, ignoriert die Shell zunächst Tastaturunterbrechungen und verwendet einfach die gedrückte Tastenkombination als Eingabezeichen. Dies ist problemlos möglich, da ASCII so konzipiert ist, dass es alle Steuerzeichen enthält.

Natürlich muss auf dem Display ein wenig geschummelt werden und das ^gefolgt von der entsprechenden Taste angezeigt werden, sonst würden Steuerzeichen ausgegeben, statt dem, was Sie sehen müssen.

Beachten Sie, dass aus der bindkeyDokumentation hervorgeht, dass zwei Notationen für Steuerzeichen unterstützt werden: (Beispiele finden sich unter Ctrl- X)

  • Caret-Notation, bei der das Caret-Zeichen ( ^) gefolgt vom entsprechenden Steuerzeichen explizit im Text geschrieben wird ( in dieser Frage ist die Ctrl- Methode nicht erforderlich); Beispiel:V^X
  • C-gefolgt vom Steuerzeichen; Beispiel: C-x. Dies führt dazu, dass einige Tastenkombinationen maskiert werden müssen (auch wenn Sie dies nicht verwenden). Sie sollten wahrscheinlich das gesamte screenHandbuch bindkeylesen.

verwandte Informationen