Ich verwende Ctrl- ←und Ctrl- →auf jedem Linux-System, an dem ich arbeite, aber diese Tastenkombinationen funktionieren in Bash auf meinem Macbook Pro nicht. Es läuft mit Snow Leopard und ich verwende die integrierte Terminal-Anwendung.
Die Tastenkombinationen scheinen weder vorher noch vom Terminal erfasst zu werden, denn wenn ich per SSH auf einen meiner Linux-Server zugreife, kann ich mit Ctrl- ←/ →zum nächsten/vorherigen Wort in der Befehlszeile springen. Wenn ich diese Tastenkombination jedoch in Bash auf meinem Macbook versuche, erhalte ich nur „C“ für den rechten Pfeil und „D“ für den linken Pfeil.
Irgendwelche Ideen, wie ich diese Schlüssel in Darwin Bash zum Laufen bringen kann?
Antwort1
OS X verwendet standardmäßig die Emacs-Tastenkombination. Das gilt für praktisch jede Anwendung unter OS X, es ist ziemlich nett. Es bedeutet, dass Dinge wie Ca und Ce Zeilenanfang/-ende sind. Sie erhalten auch die raffinierte Möglichkeit, Wörter rückwärts zu löschen, indem Sie M-Backspace verwenden, und, oh, die Zeilenlöschfunktion mit Ck.
Dies sollte bedeuten, dass in Ihrem Terminal Vorwärts-/Rückwärtswörter an Mf bzw. Mb gebunden sind (M = Meta = Alt/Option), das ist jedoch nicht der Fall. Unter OS X sind Vorwärts-/Rückwärtswörter standardmäßig an M-→ und M-← gebunden.
Sie können dieses Verhalten ändern, indem Sie die Konfiguration der GNU Readline Library für Ihr Konto ändern. Dies geschieht in Ihrer ~/.inputrc
Datei. Sie können eine große Liste bindbarer Befehle unter man readline
sowie in der Online-Dokumentation abrufen, wiedas hier..
Um Ihre Frage zu beantworten: Sie möchten neu zuordnen, was Readline tut, wenn es C-→ und C-← sieht, um das zu tun, was es auf Ihrem Linux-Server tut.
Die Syntax für eine ~/.inputrc
Datei ist für das, was Sie tun möchten, ziemlich einfach: key-sequence: action
.
Um das gewünschte Verhalten zu erzielen, benötigen Sie folgendes:
"\e[5C": forward-word
"\e[5D": backward-word
Hier ist eine weitere Seitemit zusätzlichen nützlichen Bindungen.
(Sie könnten wahrscheinlich damit auskommen, /etc/inputrc von Ihrer Linux-Box in Ihr OS X ~/.inputrc zu kopieren)
Antwort2
UPDATE Januar 2020
In den neuesten Versionen von OSX ist die Standard-Shell zsh
. Daher lautet der Zauberspruch, damit Strg-Pfeillinks und Strg-Pfeilrechts wie erwartet funktionieren, wie folgt:
bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word
(steck es in dein .zshrc
)
Antwort3
fügen Sie ~/.inputrc
folgende Zeilen ein:
"\e[5C": forward-word
"\e[5D": backward-word
Antwort4
In letzter Zeit scheinen sich die Escape-Sequenzen, die im Terminal ausgegeben Ctrlwerden, Arrowsgeändert zu haben. Folgendes funktioniert bei mir heute (Ende 2018):
"\e[1;5C": forward-word
"\e[1;5D": backward-word
Hinweis: Sie können die tatsächlichen Escape-Sequenzen immer herausfinden, indem Sie sie cat -v
in das Terminal eingeben und Ctrl- Left Arrowoder Ctrl- drücken Right Arrow. Hier ist eine Beispielausgabe für meine eigene Strg-Linkspfeil-Taste:
^[[1;5C
^[[1;5C
Um es in .inputrc
die Umgangssprache zu übersetzen, ersetzen Sie das Escape-Zeichen ^[
durch \e
und setzen Sie das Ergebnis in die Anführungszeichen.