Wie bringe ich ⌘← und ⌘→ dazu, für die Home/End-Kombination für Terminal zu arbeiten?

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?

Antworten (2)

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 CtrlAundCtrlE
  • viverwendet 0und $/Shift4

Andere 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 Optionund Optiondas sich wie erwartet verhält bashund 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 vifunktioniert zum Beispiel nur letzteres (irgendwie) (am Ende dieser Antwort werde ich zeigen, wie man konfiguriert vi, um mit Optionund zu arbeiten Option).

Aber dank Automator, AppleScript und Bash-Aliase können Sie mit ( und möglicherweise anderen Shells) und .bashvi

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 vikompatibel mit and wird ).

Karte und nach CtrlAundCtrlE

  1. Gehen Sie im Terminal zu Einstellungen...>Einstellungen>[Ihr aktives Profil]>Tastatur:Geben Sie hier die Bildbeschreibung ein

  2. Drücken +Sie , wählen Sie "Cursor Left", "Control-Shift" als Modifikator und die Aktion "Send Text:". Dann drücken CtrlA( \001erscheint im Textfeld) und mit bestätigen OK:Geben Sie hier die Bildbeschreibung ein

    (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.)

  3. Fügen Sie nun eine Tastenkombination für „Cursor Right“ hinzu, drücken Sie aber CtrlE( \005erscheint im Textfeld). Bestätigen Sie mit OK.

  4. Ö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:

    Geben Sie hier die Bildbeschreibung ein

  5. In Run AppleScriptden rechten Bereich ziehen:Geben Sie hier die Bildbeschreibung ein

  6. 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:

    Geben Sie hier die Bildbeschreibung ein

  7. 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:

    Geben Sie hier die Bildbeschreibung ein

  8. So sieht Terminal> Dienste jetzt aus:

    Geben Sie hier die Bildbeschreibung ein

Konfigurieren Sie vizu Ehren CtrlAundCtrlE

  1. Öffnen .bashrcSie 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 mapBefehle weisen darauf hin, und als und vimzu interpretieren , die den Cursor an den Anfang bzw. das Ende der Zeile bewegen.ControlEControlA$0

    Die letzten beiden mapBefehle weisen vimdarauf hin, den Cursor wortweise zu bewegen, wie Sie es erwarten würden, wenn Sie optionund 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)

Danke für die ausführliche Antwort, gibt es eine Petition, dass Apple beim nächsten Redesign einfach eine Home / End-Taste einbauen soll :-)
Es freut mich, dass ich helfen konnte.
Wow ... all das, um eine verdammte Abkürzung zu bekommen
Dies ist eine gute Antwort, könnte jedoch verbessert werden, indem alle irrelevanten Informationen darüber ausgeschlossen werden, dass es sich um vieine völlig andere Anwendung als das Terminal handelt.
Oh, wenn Apple uns nur eine normale Tastatur geben würde!
@axiopisty Der Grund, den ich erwähne 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 wie emacs, unterstützen Ctrl-A und Ctrl-E und benötigen daher keine spezielle Konfiguration. Wie auch immer, ich verstehe Ihren Punkt nicht vi, das andere Programm, das ich erwähne, bashist auch eine völlig andere Anwendung als das Terminal (Terminal.app) ...
Das ist ein toller Trick. Ich habe es auch geschafft, das AppleScript zum Laufen zu bringen, indem ich die Tastencodes für "Pos1" und "Ende" gesendet habe: "Tastencode 115" und "Tastencode 119"

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.