Warum macht fn- ⇧- →(oder andere) ein Home/End im Terminal, aber ein ⌘- →funktioniert überall sonst?
Nur um das klarzustellen, die Frage ist, wie man Terminal dazu bringt, Command+ ←und →für Zuhause und Ende zu nehmen?
So bequem es auch sein mag, Terminal kann die von Ihnen gewünschte Funktionalität nicht ohne Weiteres bereitstellen.
Der Grund dafür ist, dass Programme, die innerhalb von Terminal ausgeführt werden, unterschiedliche Regeln haben, um den Cursor an den Anfang/das Ende der Zeile zu bewegen, zum Beispiel:
bash
(und andere Shells) verwenden CtrlAundCtrlEvi
verwendet 0und $/Shift4Andere Programme können andere Schlüssel verwenden. Es gibt keine universelle Tastenkombination, um den Cursor am Zeilenanfang/-ende zu positionieren.
Natürlich könnte Terminal eine Liste mit Tastenkombinationen für eine Reihe gängiger Programme führen, prüfen, was läuft, und die richtigen Tasten für Sie senden, oder es könnte einen Menüpunkt wie Cursor zum Zeilenanfang innerhalb der Shell bewegen ⌘← bereitstellen und dann senden CtrlAhinter den Kulissen. Aber ich denke, die Apple-Ingenieure dachten, wenn Sie sich in das CLI - Territorium wagen, kennen Sie dessen Eigenheiten.
Als Randnotiz bietet Terminal Option←und Option→das sich wie erwartet verhält bash
und den Cursor an den Anfang des vorherigen/nächsten Wortes bewegt. Das liegt daran, dass diese Tastenkombinationen auf Escbund abgebildet sind Escb(siehe man bash
, Abschnitt „Befehle zum Verschieben“ für weitere Informationen). In vi
funktioniert zum Beispiel nur letzteres (irgendwie) (am Ende dieser Antwort werde ich zeigen, wie man konfiguriert vi
, um mit Option←und zu arbeiten Option→).
Aber dank Automator, AppleScript und Bash-Aliase können Sie mit ( ⌘←und möglicherweise anderen Shells) und .⌘→bash
vi
Der erste Schritt besteht darin, ⌘←und ⌘→auf CtrlAund abzubilden CtrlE. In einem zweiten Schritt zeige ich Ihnen, wie Sie konfigurieren vi
, um CtrlAand zu berücksichtigen CtrlE(was als Ergebnis vi
kompatibel mit ⌘←and wird ⌘→).
Karte ⌘←und ⌘→nach CtrlAundCtrlE
Gehen Sie im Terminal zu Einstellungen...>Einstellungen>[Ihr aktives Profil]>Tastatur:
Drücken +Sie , wählen Sie "Cursor Left", "Control-Shift" als Modifikator und die Aktion "Send Text:". Dann drücken CtrlA( \001
erscheint im Textfeld) und mit bestätigen OK:
(In einer früheren Version dieser Antwort habe ich "Shift" als Modifikator verwendet. Mir ist aufgefallen, dass diese Einstellung mit ⌘shift←, die die vorherige Registerkarte "Terminal" anzeigt, in Konflikt steht, wenn Sie nicht ⌘sofort loslassen. Verwenden von "Control-Shift" behebt das.)
Fügen Sie nun eine Tastenkombination für „Cursor Right“ hinzu, drücken Sie aber CtrlE( \005
erscheint im Textfeld). Bestätigen Sie mit OK.
Öffnen Sie Automator (drücken Sie beispielsweise , ⌘spaceum Spotlight aufzurufen, und geben Sie Automator ein ), wählen Sie Datei > Neu und wählen Sie Service
:
In Run AppleScript
den rechten Bereich ziehen:
Geben Sie das folgende Skript ein:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 123 using {shift down, control down}
end tell
end tell
end run
und speichern unter Move Cursor to Beginning of Line
:
Wiederholen Sie die Schritte 4. bis 6. mit diesem Skript:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 124 using {shift down, control down}
end tell
end tell
end run
und speichern unter Move Cursor to End of Line
:
So sieht Terminal> Dienste jetzt aus:
Konfigurieren Sie vi
zu Ehren CtrlAundCtrlE
Öffnen .bashrc
Sie mit Ihrem bevorzugten Editor und fügen Sie diese Zeile hinzu:
alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'
Die ersten beiden map
Befehle weisen darauf hin, und als und vim
zu interpretieren , die den Cursor an den Anfang bzw. das Ende der Zeile bewegen.ControlEControlA$0
Die letzten beiden map
Befehle weisen vim
darauf hin, den Cursor wortweise zu bewegen, wie Sie es erwarten würden, wenn Sie option←und drücken Option→.
Vorbehalte
Sie werden feststellen, dass es zwischen dem Drücken von ⌘←oder ⌘→und dem Moment, in dem sich der Cursor tatsächlich bewegt, eine kurze Verzögerung gibt.
Denken Sie daran, dass es nur für Programme funktioniert, die CtrlA/ berücksichtigen CtrlE, also möchten Sie vielleicht trotzdem die spezifischen Tastenkombinationen jedes Programms lernen, das Sie in Terminal verwenden.
(Getestet auf macOS Sierra 10.12.4)
Natürlich ist es möglich.
Zunächst einmal können Sie das kostenlose Tool "DoubleCommand" verwenden, wenn Sie eine Windows-Tastatur mit HOME/END-Tasten haben, damit sie sich so verhalten, wie sie sollten (Anfang / Ende der Zeile).
Zweitens, speziell für das Terminal, gehen Sie zu den Einstellungen, Tastatur, bearbeiten Sie das Symbol / die Taste, das wie ein Pfeil aussieht, der nach links oben zeigt, wählen Sie "Text senden" und geben Sie Strg + a ein. Erledigt!
Gleiches gilt für die Ende-Taste.
Wenn Sie keine PC-Tastatur haben, können Sie dasselbe mit anderen Tastenkombinationen tun.
Jackie
Jaume
levesk
⌘
Abkürzung zu bekommenAxiopsie
vi
eine völlig andere Anwendung als das Terminal handelt.Axiopsie
Jaume
vi
, ist, dass es sich um ein Programm handelt, von dem ich erwarte, dass Leute es verwenden, wenn sie Terminal.app ausführen, und das eine spezielle Optimierung benötigt, um mit der <Cmd>-<Pfeil>-Kombination zu arbeiten. Andere CLI-Programme wieemacs
, unterstützen Ctrl-A und Ctrl-E und benötigen daher keine spezielle Konfiguration. Wie auch immer, ich verstehe Ihren Punkt nichtvi
, das andere Programm, das ich erwähne,bash
ist auch eine völlig andere Anwendung als das Terminal (Terminal.app) ...Schlüsselmon