Ich verwende Ctrl- ←und Ctrl- →auf jedem Linux-System, auf dem ich arbeite, aber diese Tastenkombinationen funktionieren nicht in Bash auf meinem Macbook Pro. Es wird Snow Leopard ausgeführt und ich verwende die integrierte Terminal-Anwendung.
Die Tastenkombinationen scheinen von nichts zuvor oder von Terminal erfasst zu werden, denn wenn ich zu einem meiner Linux-Server ssh, kann ich Ctrl- ←/ verwenden →, um zum nächsten / vorherigen Wort in der Befehlszeile zu 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?
Antworten:
OS X verwendet die Standard-Emacs-Schlüsselbindung. Dies ist wahr, ist praktisch jede Anwendung unter OS X, es ist ziemlich schön. Das bedeutet, dass Dinge wie Ca und Ce am Anfang / Ende der Zeile stehen. Mit M-backspace bekommst du auch den raffinierten Backward-Word-Kill und mit Ck die Kill-Line.
Dies sollte bedeuten, dass in Ihrem Terminal Vorwärts- / Rückwärtswort an Mf bzw. Mb gebunden sind (M = Meta = alt / option), was jedoch nicht der Fall ist. Unter OS X sind Vorwärts- / Rückwärtswort 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 erfolgt in Ihrer
~/.inputrc
Datei. Sie können eine große Liste bindbarer Befehle mitman readline
sowie in der Online-Dokumentation wie hier erhalten. .Um Ihre Frage zu beantworten, möchten Sie 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 ziemlich einfach für das, was Sie tun möchten:key-sequence: action
.Dies sollte das sein, was Sie benötigen, um das gewünschte Verhalten zu erzielen:
Hier ist eine weitere Seite mit zusätzlichen nützlichen Bindungen.
(Sie könnten wahrscheinlich davonkommen, / etc / inputrc von Ihrer Linux-Box auf Ihr OS X zu kopieren ~ / .inputrc)
quelle
\e[1;5C
und,\e[1;5D
um auchforward-word
und auszulösenbackward-word
.Tragen Sie
~/.inputrc
folgende Zeilen ein:quelle
In diesen Tagen scheinen sich die Escape-Sequenzen, die Strg-Pfeile im Terminal ausgeben, geändert zu haben. Folgendes funktioniert für mich ab heute (Ende 2018):
"\e[1;5C": forward-word "\e[1;5D": backward-word
Hinweis: Sie können die tatsächlichen Escape-Sequenzen jederzeit ermitteln, indem Sie
cat -v
das Terminal eingeben und Strg-Linkspfeil oder Strg-Rechtspfeil drücken. Hier ist eine Beispielausgabe für meinen eigenen Strg-Linkspfeil:^[[1;5C ^[[1;5C
.inputrc
Ersetzen Sie das Fluchtzeichen^[
durch\e
und setzen Sie das Ergebnis in doppelte Anführungszeichen , um es in Umgangssprache zu übersetzen .quelle
Wie @ bhh1988 erwähnt, verhindert die Mission Control-Konfiguration, dass die Strg-Tasten mit den Pfeiltasten in arbeiten
bash
. Ich wollte diese Verknüpfungen nicht stören, also benutze ich stattdessen die Wahltaste (dh die Alt-Taste). Derzeit ist Mojave mit einer deutschen Tastatur (ich weiß nicht, ob das relevant ist). Ich habe Folgendes eingegeben.inputrc
, um mit der Option-Links-Taste und der Option-Rechts-Taste zwischen den Wörtern zu wechseln.quelle