Warum funktioniert Strg-Pfeil in Bash unter OS X nicht?

Warum funktioniert Strg-Pfeil in Bash unter OS X nicht?

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 ~/.inputrcDatei. Sie können eine große Liste bindbarer Befehle unter man readlinesowie 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 ~/.inputrcDatei 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 ~/.inputrcfolgende 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 -vin 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 .inputrcdie Umgangssprache zu übersetzen, ersetzen Sie das Escape-Zeichen ^[durch \eund setzen Sie das Ergebnis in die Anführungszeichen.

verwandte Informationen