Ich kenne die Kombination Ctrl + A um an den Anfang des aktuellen Befehls zu springen, und Ctrl + E um zum Ende zu springen.
Aber gibt es eine Möglichkeit, Wort für Wort zu springen, wie Alt + ← / → in Cocoa-Anwendungen tut?
Ich kenne die Kombination Ctrl + A um an den Anfang des aktuellen Befehls zu springen, und Ctrl + E um zum Ende zu springen.
Aber gibt es eine Möglichkeit, Wort für Wort zu springen, wie Alt + ← / → in Cocoa-Anwendungen tut?
Ich habe Alt + ← / → Arbeiten: offen Voreinstellungen " Einstellungen " Tastatur setzen Sie den Eintrag für Option Cursor links a String an die Shell senden: \033b und setzen Option Cursor rechts a String an die Shell senden: \033f . Sie können dies auch für andere Kombinationen von Steuerungstasten verwenden.
Ich arbeite mit Snow Leopard und stelle fest, dass es nur funktioniert, wenn Sie die Option Enable option as meta key
. Übrigens, das ist sehr cool. Die Taste ist sicher viel bequemer zu erreichen als Esc+B oder Esc+F
Nur aus Neugierde: Was genau ist hier los? Warum ist dieser Code anders zu beginnen mit in OSX? Wie kann ich andere solche Codes finden?
Dies ist der effizienteste Weg, um die gute alte Zuordnung von Schlüsseln festzulegen. Danke!
Eigentlich hängt es davon ab, welche Schale Sie verwenden, aber die meisten Schalen haben ähnliche Bindungen. Die Bindungen, auf die Sie sich beziehen (z.B. Ctrl + A y Ctrl + E ) sind Bindungen, die in vielen anderen Programmen zu finden sind und seit langem verwendet werden, BTW funktioniert auch in den meisten UI-Anwendungen.
Hier ist ein Blick auf die Standard-Bindings für Bash:
Die wichtigsten Bash-Tastaturkürzel
Bitte beachten Sie auch, dass Sie sie individuell anpassen können. Sie müssen eine Datei erstellen, die Sie nach Belieben benennen können. Ich habe meine Datei .bash_key_bindings genannt und in mein Home-Verzeichnis gelegt. In dieser Datei können Sie einige allgemeine Bash-Optionen einstellen und auch Tastenbelegungen festlegen. Um sicherzustellen, dass sie angewendet werden, müssen Sie eine Datei namens ".bashrc" das die Bash beim Start einliest (falls es nicht existiert, müssen Sie es erstellen) und dort den folgenden Aufruf machen:
bind -f ~/.bash_key_bindings
~ bedeutet in der Bash das Heimatverzeichnis. Wie oben erwähnt, können Sie die Datei benennen, wie Sie wollen, und sie auch an einem beliebigen Ort ablegen, solange Sie den richtigen Pfad und Namen an bind übergeben.
Ich möchte Ihnen einige Auszüge aus meiner .bash_key_bindings-Datei zeigen:
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off
Diese setzen nur ein paar Optionen (z.B. die Glocke deaktivieren; das kann alles auf der bash-Webseite nachgelesen werden).
"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert
Diese sorgen dafür, dass die Zeichen allein nichts weiter tun, als dafür zu sorgen, dass das Zeichen "getippt" wird (sie fügen sich in die Shell ein).
"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line
Das ist sehr interessant. Wenn ich auf Ctrl + D allein (ich wählte d für delete), passiert nichts. Wenn ich dann aber ein kleines w eingebe, wird das Wort links vom Cursor gelöscht. Wenn ich jedoch einen Großbuchstaben eingebe, wird das Wort rechts vom Cursor gelöscht. Dasselbe gilt für l und L in Bezug auf die gesamte Zeile ab dem Cursor. Wenn ich ein "a" eintippe, wird tatsächlich die ganze Zeile gelöscht (alles vor und nach dem Cursor).
Ich habe ein Wort vorwärts springen lassen auf Ctrl + F und ein Wort rückwärts auf Ctrl + B
"\C-f": forward-word
"\C-b": backward-word
Wie Sie sehen, können Sie eine Verknüpfung erstellen, die sofort zu einer Aktion führt, oder Sie können eine Verknüpfung erstellen, die nur eine Zeichenfolge enthält, und dann müssen Sie ein (oder mehrere) Zeichen eingeben, um eine Aktion auszulösen, wie im Beispiel weiter oben gezeigt.
Wenn Sie also mit den Standardbindungen nicht zufrieden sind, können Sie sie nach Belieben anpassen. Hier ist eine Link zum Bash-Handbuch für weitere Informationen.
@Paschalis Unter MacOS X ist die Befehlstaste mit Meta
in der Bash ( \M
), cmd+linke Taste würde lauten \M-\e[D
. Allerdings können Sie cmd+... nichts zuordnen, alle Befehlskürzel werden von der Terminal-App selbst verarbeitet (und somit verschluckt) (diese werden nie an die Shell weitergeleitet) und cmd+links ordnet "vorheriges Fenster" zu, wenn Sie mehrere Terminalfenster geöffnet haben. Tut mir leid, das ist mit der Terminal-App nicht möglich.
Wenn Sie zufällig ein Vim-Benutzer sind, können Sie den Vim-Modus der Bash ausprobieren. Führen Sie diesen aus oder fügen Sie ihn in Ihr ~/.bashrc
Datei:
set -o vi
Standardmäßig befinden Sie sich im Einfügemodus; drücken Sie die Escape-Taste und Sie können sich genauso bewegen wie im normalen Vim-Modus, also ist die Bewegung nach Worten w
o b
und die die üblichen Bewegungstasten funktionieren auch .
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
Welche Shell verwenden Sie? Bash?
4 Stimmen
ITerm2 ist so viel schöner als das eingebaute Terminal. Ich habe unten eine Anleitung gepostet, wie man die Tastatur anpassen kann :)
2 Stimmen
Warum wird dies nicht auf den Superuser übertragen?
0 Stimmen
@user494461, da dies mit Terminal zusammenhängt, einer reinen MacOS-Anwendung.
26 Stimmen
El
ALT
Shortcuts wurden in der neuesten OS X-Version zu Terminal hinzugefügt.7 Stimmen
Meiner Meinung nach ist dies nicht abwegig, denn die Bash-Shell ist eine wichtige Programmierumgebung, und Readline-Bindungen sind in den meisten gängigen Linux-CLI-Anwendungen allgegenwärtig. Schauen Sie sich auch die Anzahl der Bewertungen an, die Community hat gesprochen.
13 Stimmen
Abstimmung neu eröffnen, OS X Terminal zählt sehr wohl als Programmierwerkzeug.