Bash: Wie bewege ich meinen Cursor wortweise nach links?

14

In OSX kann ich die optionTaste gedrückt halten und die linke Cursortaste drücken, bis ich zu dem Wort komme, das ich bearbeiten muss (oder in Vi kann ich nur drücken b, aber ich konnte nicht herausfinden, wie dies in Terminal gemacht wird noch...

nipponisch
quelle
Auf dieser Seite finden Sie die vollständige Liste der Readline-Bindungen , einschließlich Anweisungen zum Anpassen Ihrer eigenen Bindungen.
Jasonwryan

Antworten:

26

So stellen Sie die Tastenbindung ein: Sie müssen zuerst herausfinden, welche Tastencodes die Ctrl+ LeftTastenfolge erstellt. Verwenden Sie einfach den Befehl cat, um Interferenzen mit vorhandenen Tastenkombinationen auszuschalten, und geben Sie dann die Tastenfolge ein. In meinem System (Linux) sieht das so aus:

$ cat
^[[1;5D

Drücken Sie Ctrl+ d, um cat zu verlassen. Jetzt haben Sie herausgefunden, dass Strg-Links 6 Tastencodes ausgibt:

  • Flucht (^ [)
  • [
  • 1
  • ;
  • 5
  • D

Jetzt können Sie den Befehl bind ausgeben:

bind '"\e[1;5D": backward-word'
Daniel Kullmann
quelle
6
Sie können "\ e [1; 5D": Rückwärtswort "in" $ HOME / .inputrc "einfügen, um einen dauerhaften Effekt zu erzielen.
llhuii
@llhuii +1, das habe ich vergessen zu erwähnen!
Daniel Kullmann
2
+1 für die flexibelste Möglichkeit, beliebige Tastenkombinationen überall zu binden!
Irfy
14

Die gewünschte Bash-Funktion ist backward-word. Sie können ausführen bind -q backward-word, um eine Liste der an diese Funktion gebundenen Tasten abzurufen. Eine häufige Bindung ist Esc+b

Außerdem unterstützen viele Terminals Ctrl+ Left(der gleiche Hotkey, den Sie in X verwenden können, um wortweise rückwärts zu springen).

Michael Mrozek
quelle
1
Ok, es kehrt zurück, backward-word can be invoked via "\eb".aber wie binde ich Control + Left anstelle von Esc + b? Ein Nachteil von Esc + B, den ich bereits sehe, ist, dass ich jedes Mal die Esc-Taste loslassen muss, wenn ich ein Wort zurücknehmen kann. Gibt es keinen besseren Weg?
Nipponese
1
Gibt es einen besseren Weg? Natürlich: set editing-mode vi:)
jasonwryan
3
@nipponese "esc b" kann auch als ALT-b auf der Tastatur verwendet werden. Dies muss je nach Konfiguration entweder links oder rechts sein. Probieren Sie also beide aus.
Random832
8

Die Standardtastenkombination in Bash für backword-wordist Alt+ b. Das gleiche Ergebnis kann mit Esc+ erreicht werden b. Probieren Sie diese aus, bevor Sie Ihre Tastenkombinationen bearbeiten.

Verwenden Sie den bindBefehl, bind -q [name]um die aktuelle Tastenkombination einer bestimmten Aktion zu bearbeiten oder abzurufen.

Marius Cotofana
quelle
2
... und weiter -Alt + f
Putnik