Wie lasse ich in Cygwin Bash Strg-Pfeiltasten ein Wort nach dem anderen vorwärts / rückwärts bewegen?

97

In der Cygwin-Standardinstallation wird bei Verwendung von STRG-LINKS oder STRG-RECHTS einfach 5C oder 5D gedruckt, anstatt ein Wort wie erwartet zu überspringen.

Die Home / End-Tasten funktionieren ordnungsgemäß, daher sollte eine erneute Zuordnung möglich sein.

Tom
quelle
Beachten Sie, dass diese Frage Cygwin anspricht, jedoch allgemeine Anwendung auf Unix / Linux-Systemen finden kann. Wenn Sie PuTTY verwenden und feststellen, dass die Lösungen hier nicht für Sie funktionieren, werfen Sie einen Blick auf eine Frage, die speziell die für PuTTY zu verwendenden Codes betrifft .
Palswim
Das passierte mir auch unter vollem Linux; Bei einigen Online-Ratschlägen habe ich eine ~/.inputrcDatei hinzugefügt, die alle Standardeinstellungen für Linux Mint aufhebt. Sie können sie zurückbekommen, indem Sie sie $include /etc/inputrcoben in Ihre ~ / .inputrc einfügen (vorausgesetzt, dass / etc / inputrc Ihre systemweite Eingabe ist, die sich auf Linux Mint befindet)
user208769

Antworten:

134

Ich habe eine Lösung gefunden und sie hier für die Nachwelt veröffentlicht.

Fügen Sie die folgenden Zeilen zu ~/.inputrc( C:\cygwin\home\<username>\.inputrc) hinzu:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Wenn Sie fertig sind, können Sie drücken C-x C-r, um die .inputrcDatei für die aktuelle Sitzung erneut zu lesen .

Beachten Sie Folgendes, wenn Sie andere ähnliche Anpassungen wünschen: Verwenden Sie 5Aund 5Bfür Aufwärts- und Abwärtspfeile sowie 2xfür verschobene Versionen.

Die "offiziellen" Tastenzuordnungen werden im Bash-Referenzhandbuch beschrieben , um jedoch schnell eine Tastenzuordnung zu finden, führen Sie die folgenden Schritte aus:

  1. Typ Ctrl+V
  2. Geben Sie die gewünschte Tastenfolge ein (z . B. Alt+ ). Dies würde drucken^[[1;3C
  3. Entfernen Sie die Führung ^[und ersetzen Sie sie mit \ezu machen\e[1;3C
  4. Platzieren Sie diesen Wert in Ihrer .inputrcDatei.
Tom
quelle
Einige Tastaturcodes werden überhaupt nicht angezeigt, z. B. <kbd> Umschalttaste </ kbd> + <kbd> Eingabetaste </ kbd>. Wie finde ich diese Tastaturcodes über Mintty / Windows / Cygwin?
CMCDragonkai
14

Sie können die Datei .inputrc über Folgendes neu laden:

bind -f ~/.inputrc

Quelle

Kdt
quelle
2
Dies ist nützlich, aber keine wirkliche Antwort auf die Frage. Vielleicht ist es besser, eine andere Antwort zu kommentieren.
Martin Thompson
Zur obigen Antwort von @ Tom
hinzugefügt
7

Für den Fall, dass Sie etwas benötigen, das ohne benutzerdefinierte Umgebungseinstellungen funktioniert, zum Beispiel wenn Sie an einem gemeinsam genutzten Konto auf einem Server arbeiten oder nur um die Menge der verwendeten benutzerdefinierten Konfiguration zu begrenzen, hat Bash hierfür integrierte Funktionen, die in Cygwin funktionieren.

Nämlich Alt+ fum vorwärts und Alt+ bum rückwärts zu gehen.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html

Costa
quelle
4
Danke, obwohl mir diese Schlüssel bekannt sind und ich sie benutze. Ich benutze einfach auch die Pfeiltasten, wenn es bequem ist, und möchte nicht, dass sie Escape-Codes ausspucken, anstatt das Vernünftige zu tun und den Cursor zu bewegen.
Tom
0

Bei der Verwendung von rxvt mit cygwin fand ich, dass die Lösung unter diesem Link für mich funktioniert : control_arrow_keys_in_rxvt .

Fügen Sie die folgenden Zeilen hinzu ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word
Peter Tran
quelle
In diesem Fall werden die übertragenen Schlüssel durch eine zusätzliche Ebene geändert (die gestellte Frage wird jedoch nicht beantwortet).
Nikana Reklawyks
0

Diese Lösung funktioniert auch in msys2Konsolen:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Platzieren Sie einfach diese Tastenkombinationen in der .inputrcDatei.

f0nzie
quelle