Warum macht fn- ⇧- →(oder andere) ein Home / End in Terminal, aber a ⌘- →funktioniert überall anders?
Um ganz klar zu sein, ist die Frage, wie man Terminal dazu bringt, Command+ ←mit →nach Hause zu nehmen und zu beenden.
So bequem es auch sein mag, Terminal kann die von Ihnen gewünschten Funktionen nicht einfach bereitstellen.
Der Grund dafür ist, dass Programme, die in Terminal ausgeführt werden, unterschiedliche Regeln für das Bewegen des Cursors an den Anfang / das Ende der Zeile haben, zum Beispiel:
bash
(und andere Muscheln) verwenden CtrlAundCtrlEvi
nutzt 0und $/ oderShift4Andere Programme verwenden möglicherweise andere Tasten. Es gibt keine universelle Tastenkombination zum Positionieren des Cursors am Anfang / Ende der Zeile.
Natürlich könnte Terminal eine Liste mit Tastenkombinationen für eine Reihe gängiger Programme führen, überprüfen, was läuft, und die richtigen Tasten für Sie senden, oder ein Menüelement wie Cursor zum Zeilenanfang innerhalb der Shell bewegen ⌘ ← bereitstellen und dann senden CtrlAhinter den Kulissen. Aber ich denke, Apple-Ingenieure dachten, wenn Sie sich auf CLI- Territorium begeben, kennen Sie die Besonderheiten.
Als Randnotiz stellt Terminal bereit Option←und Option→welche verhält sich bash
wie erwartet und bewegt den Cursor an den Anfang des vorherigen / nächsten Wortes. Dies liegt daran, dass diese Tastenkombinationen Escbund zugeordnet sind Escb( man bash
weitere Informationen finden Sie im Abschnitt "Befehle zum Verschieben"). Zum vi
Beispiel funktioniert nur die letztere (Art von) (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 erhalten ⌘←und ⌘→an die Arbeit mit bash
(und möglicherweise andere Schalen) und vi
.
Der erste Schritt ist das Abbilden von ⌘←und ⌘→nach CtrlAund CtrlE. In einem zweiten Schritt werde ich Ihnen zeigen, wie Sie konfigurieren vi
, um zu ehren CtrlAund CtrlE(was infolgedessen vi
kompatibel mit ⌘←und macht ⌘→).
Karte ⌘←und ⌘→nach CtrlAundCtrlE
Gehen Sie im Terminal zu Einstellungen ...> Einstellungen> [Ihr aktives Profil]> Tastatur:
Drücken Sie +, wählen Sie "Cursor links", "Strg-Umschalt" als Modifikator und drücken Sie "Text senden:". Drücken Sie dann CtrlA( \001
erscheint im Textfeld) und bestätigen Sie mit OK:
(In einer früheren Version dieser Antwort habe ich "Umschalt" als Modifikator verwendet. Ich habe festgestellt, dass diese Einstellung im Widerspruch zu ⌘shift←der vorherigen Registerkarte "Terminal" steht, wenn Sie sie nicht ⌘sofort loslassen . Verwenden von "Strg-Umschalt" behebt das.)
Fügen Sie nun eine Tastenkombination für "Cursor rechts" hinzu, drücken Sie jedoch CtrlE( \005
wird im Textfeld angezeigt). 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> Services jetzt aus:
Konfigurieren Sie vi
zu Ehren CtrlAundCtrlE
Öffnen Sie .bashrc
mit Ihrem Lieblingseditor 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 geben vim
an, wie und zu interpretieren sind, ControlEund bewegen den Cursor an den Anfang bzw. das Ende der Zeile.ControlA$0
Die letzten beiden map
Befehle weisen Sie vim
an, den Cursor wortweise zu bewegen, wie Sie es erwarten würden, wenn Sie option←und drücken Option→.
Vorbehalte
Sie werden feststellen, dass zwischen dem Drücken von ⌘←oder ⌘→und der tatsächlichen Bewegung des Cursors eine kurze Verzögerung liegt .
Bedenken Sie, dass dies nur für Programme funktioniert, die CtrlA/ ehren CtrlE, und dass Sie möglicherweise trotzdem die spezifischen Tastenkombinationen für jedes Programm lernen möchten, das Sie in Terminal verwenden.
(Getestet unter macOS Sierra 10.12.4)
⌘
Abkürzung zu bekommenvi
denen es sich um eine völlig andere Anwendung als das Terminal handelt.Natürlich ist es möglich.
Erstens 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 gehen Sie für das Terminal zu den Einstellungen Tastatur, bearbeiten Sie das Symbol / die Taste, die wie ein Pfeil nach oben links aussieht, wählen Sie "Text senden" und geben Sie Strg + a ein. Getan!
Gleiches gilt für den Endknopf.
Wenn Sie keine PC-Tastatur haben, können Sie dies auch mit anderen Tastenkombinationen tun.
quelle