^ S im Terminal wird nicht an Vim gesendet

1

Ich möchte sowohl Strg + S als auch Cmd + S überladen, um eine Datei zu speichern, wenn ich gerade etwas in Vim bearbeite.

Nach einigem Kopfkratzen habe ich herausgefunden, dass ^Sein Terminal möglicherweise von der Shell abgefangen wird, um ein Signal an den Prozess zu senden, oder dass Vim etwas Besonderes unternimmt, um es nicht anzuhören. Ich habe ein Perl-Skript, das den Begriff in den Raw-Modus versetzt, der meine Zuordnungen gut lesen kann (das ^SSends-Hex 0x13), aber nichts passiert, wenn ich mich im Vim- Ctrl+VVerbatim-Modus befinde und es eingebe . In der nackten zsh-Shell zeigt mir der wörtliche Modus, dass ich drücke ^S. Dies scheint die Behauptung zu widerlegen, dass es eine Terminal-Programmflusssteuerung gibt, die an diesen Schlüssel gebunden ist, da ich in der Lage bin, zsh dazu zu bringen, ihn zu sehen.

Wie kann ich vim dazu bringen, meine Strg + S zu erkennen?

Steven Lu
quelle

Antworten:

2

^Sist das ASCII-XOFF-Zeichen. Zusammen mit XON ( ^Q) sind dies die beiden Steuersignale für die Software-Flusssteuerung .

Sie werden nicht von der Shell abgefangen, sondern vom Terminal, was ^Sbedeutet, dass die Ausgabe des Terminals angehalten und ^Qwieder aufgenommen wird.

Sie können Ihr Terminal (mit stty -ixon -ixoff) so konfigurieren , dass es sie ignoriert, indem Sie die Software-Flusskontrolle ausschalten. Dies kann jedoch zwecklos sein: Es ist nicht ratsam, XON und XOFF andere Funktionen zuzuweisen, da sich möglicherweise noch etwas anderes in der Sitzung des Benutzers befindet (a Remote-Terminal, ein Modem, ein anderes RS-232-Gerät), das sie interpretiert.

Celada
quelle
1

stty -ixon(und stty -ixoffzum guten Teil) tat es für Terminal.app, iTerm2.

Steven Lu
quelle