Können Home- und End-Tasten bei Verwendung von Terminal zugeordnet werden?


76

Die Tasten homeund endauf einem MacBook Pro können mit Fn + Pfeil nach links oder Fn + Pfeil nach rechts emuliert werden. Oder wenn bestimmte Einstellungen geändert werden, mit der Befehlstaste (Apple) anstelle von fn.

Keines davon funktioniert in Terminal.

Da ich häufig an den Anfang oder das Ende der Zeile gehen muss und auch gerne wortweise vorwärts oder rückwärts springen möchte.

Wie kann ich im Terminal auf einer Linie herumspringen?

Antworten:


64

Verwenden Sie control+ afür HOME und control+ efür END im Terminal.

Verwenden Sie auch esc+ f, um zum Anfang des nächsten Wortes zu springen, und esc+ b, um zum Anfang des aktuellen Wortes zu springen. (Sie müssen über aktuelle und nächste vorsichtig sein)


2
perfekt! Was ist mit wörtlich herumspringen? (Strg-links und Strg-rechts in Fenstern)
at01

@ at01 Ich habe meine Antwort aktualisiert.
Am1rr3zA

40
Wer hat die Schlüssel für das Terminal entworfen?!?!
01.04.11

4
Ich bevorzuge die Verwendung von Option + linker Pfeil und Option + rechter Pfeil, um zum Wortanfang zu gelangen
Allan Jikamu

2
Strg + a und Strg + e haben bei mir funktioniert, aber ohne die von so vielen hier vorgeschlagenen Tastatureingaben neu zuzuordnen, bevorzuge ich @ AlphaFighters Alternative von Umschalt + Pos1 und Umschalt + Ende (Umschalt + Fn + Pfeil nach links und Umschalt + Fn + Rechtspfeil auf der MacBook Pro-Tastatur) für Zeilenanfang und -ende.
John Rix

70

Um die Frage zu beantworten, wie der Anfang oder das Ende der Zeile abgerufen werden kann, weist Terminal ihr standardmäßig die folgenden Schlüssel zu:

  • shift + home → Zeilenanfang, entspricht der "home" -Taste in normalen Terminals
  • Umschalt + Ende → Zeilenende, entspricht der "Ende" -Taste in normalen Terminals

Wenn Sie möchten, dass zu Hause und am Ende "normal" gearbeitet wird (und keine Schicht erforderlich ist), gehen Sie zu [Terminal-Menü] → Einstellungen → Registerkarte "Profile" (oder Einstellungen in einigen Versionen von OS X) → Unterregisterkarte "Tastatur".

Dann ändern / fügen Sie diese Schlüssel so hinzu, dass sie die folgende "Zeichenfolge an Shell senden" sind

  • Zuhause: \033[H
  • Ende: \033[F

Sie können das \033Teil erhalten, indem Sie die Escape-Taste in der Eingabe des Bearbeitungsdialogs drücken, wenn Sie es hinzufügen müssen.

Dann klappt home und end wieder wie gewohnt (puh).

Beachten Sie auch, dass "alt + ←" und "alt + →" in der Terminalzuordnung standardmäßig links und rechts stehen, eine weitere nützliche Kombination, an die Sie sich erinnern sollten.

Wenn sich in späteren Versionen von Mac OS X der Terminalbildschirm beim Drücken der Start / Ende-Taste nach oben oder unten verschiebt, muss möglicherweise die Starttaste auf \033[1~und die Ende-Taste auf gestellt werden \033[4~, um die gewünschten Ergebnisse zu erzielen (keine Verschiebung erforderlich). .

Sie können diese Antwort ändern, um weitere nützliche Tastenkombinationen hinzuzufügen, da es sich um ein Community-Wiki handelt.


5
\ 033 [H und \ 033 [F für Zuhause und Ende haben bei mir nicht funktioniert; jedoch haben \ 001 und \ 005. Sie können diese Codes im Bearbeitungsdialog eingeben, indem Sie Strg-A und Strg-E drücken. Ich benutze zsh, ich bin mir nicht sicher, ob das einen Unterschied macht.
Zeugen Jehovas.

shift + home / end hat den Job gemacht
isaias-b

1
Ich habe eine Weile versucht, das herauszufinden, das hat mich gerettet!
Paul Gray

Dies funktioniert hervorragend, wenn Sie sich lokal in der eigentlichen Terminalanwendung befinden. Wenn Sie jedoch in einen MacOS-Computer eingebunden sind, scheinen diese nicht mehr zu funktionieren. Wie kann man das umgehen ?!
Ahi Thunfisch

2
@AhiTuna SSH ist nur eine Verbindung zu einer Terminalsitzung, keine Verbindung zu einem Terminalemulator. Die Eingabeoptionen werden immer von dem von Ihnen verwendeten Terminalemulator definiert.
Bachsau,

39

Es hört sich so an, als ob Sie Hilfe bei der Verwendung von readline und bash suchen. Hier ist eine verrückte Liste von Tastaturen, die geändert wurden von: http://www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla Gehen Sie zum Zeilenanfang.
Ctrle Bewegen Sie sich an das Ende der Zeile.
Escf Bewegen Sie sich ein Wort vorwärts.
Escb Gehen Sie ein Wort zurück.
Ctrll Löschen Sie den Bildschirm und drucken Sie die aktuelle Zeile oben erneut.

Ctrlk Töte den Text von der aktuellen Cursorposition bis zum Ende der Zeile.
Escd Töte vom Cursor bis zum Ende des aktuellen Wortes oder zwischen Wörtern bis zum Ende des nächsten Wortes.
EscDel Töte vom Cursor den Anfang des vorherigen Wortes oder, wenn zwischen den Wörtern, den Anfang des vorherigen Wortes.
Ctrlw Töte vom Cursor zum vorherigen Leerzeichen. Dies ist anders als EscDelCtrla weil sich die Wortgrenzen unterscheiden.

Ctrld Löschen Sie das Zeichen unter dem Cursor.
Ctrl_ Machen Sie das letzte, was Sie getan haben, rückgängig. Sie können den gesamten Vorgang bis zu einer leeren Zeile rückgängig machen.

Und hier erfahren Sie, wie Sie den Text zurück in die Zeile ziehen. Ruckeln bedeutet, den zuletzt getöteten Text aus dem Tötungspuffer zu kopieren.

Ctrly Ziehen Sie den zuletzt getöteten Text in den Puffer am Cursor zurück.
Escy Drehen Sie den Killring und ziehen Sie das neue Oberteil heraus. Sie können dies nur tun, wenn der vorherige Befehl Ctrlyoder lautet Escy.


das ist von unschätzbarem Wert - danke - ich wünschte, das wäre irgendwo als druckbare Datei erhältlich!
Matt B.

Mir ist klar, dass es nicht ganz "optimiert" ist, aber; Datei -> Drucken?
Jason Salaz

Wow, das ist super umständlich im Vergleich zu Linux. Irgendeine Möglichkeit, diesen Unsinn neu abzubilden?
BTK

Ja, probieren Sie die Bash-Manpage. (Ich weiß nicht, wie ich es selbst machen soll.)
SilverWolf

6

Wenn Sie die Pfeiltasten bevorzugen, können Sie mit fnShift+ Left Arrowauf der Befehlszeile nach Hause gehen. Ebenso bringt Sie fnShift+ Right Arrowzum Ende.


6

Mit option+ leftund option+ können Sie jeweils ein Wort verschieben right.

In Bezug auf die Verwendung von homeund endlauten die Standardbindungen von Terminal wie folgt:

  • shift+ home→ zum Zeilenanfang springen
  • shift+ end→ zum Zeilenende springen
  • home → Zum Anfang des Bildlaufpuffers scrollen
  • end → Blättern Sie zum Ende des Bildlaufpuffers

In vielen anderen Terminal-Apps (auf mehreren Plattformen) werden diese geänderten und nicht geänderten Paare umgekehrt (dh nackt) homeund endzum Springen in der aktuellen Zeile verwendet, und die geänderten Versionen (ob von shiftoder anders) werden zum Navigieren im Bildlauf-Zurück-Puffer verwendet ). Sie können die Terminal-Bindungen umkehren, um auf diese Weise zu arbeiten, wenn Sie dies wünschen, indem Sie folgendermaßen vorgehen:

Gehen Sie zu Terminalmenü → Einstellungen → Registerkarte Einstellungen / Profil → Unterregisterkarte Tastatur.

Ändern Sie dann die Schlüssel-Aktions-Paare wie folgt:

  • ↖︎: Text senden: \ 033 [H
  • ⇧↖︎: Nach oben scrollen
  • ↘︎: Text senden: \ 033 [F
  • ⇧↘︎: Nach unten scrollen

Hinweis: Durch Drücken der Escape-Taste wird \ 033 in das Feld für den zu sendenden Text im Dialogfeld "Bearbeiten" eingegeben.

Während Sie dort sind, möchten Sie möglicherweise die Bindungen von geändert und nicht geändert auf ähnliche Weise austauschen page upund page down, um die Konsistenz zu gewährleisten, eine Navigationstaste mit shifteinem Befehl an Terminal selbst drücken (um wie bei einem Dokument durch den Bildlaufpuffer zu navigieren), während Sie eine Taste ohne drücken sendet den Tastendruck durch, was auch immer läuft innerhalb es (zB bash, less, nano, screen, etc.). Die Schlüssel-Aktions-Paare dafür sind:

  • ⇞: Text senden: \ 033 [5 ~
  • ⇧⇞: Bildlauf nach oben
  • ⇟: Text senden: \ 033 [6 ~
  • ⇧⇟: Bildlauf nach unten


4

Mapping homeund endTasten mit der gewünschten Funktionalität lösen das Problem auf einfache Weise.

Es wurden viele Antworten gepostet, aber falls Sie verwenden zsh, können Sie Folgendes einstellen home:

\001

und setze endauf:

\005

durch Klicken auf Präferenz - Profil - Tastatur.


Ich habe es auch versucht, aber dann bricht es Home und End in vim :( Sie können sie auf das abbilden, was Alfredo Cardigliano vorgeschlagen hat: Schlüssel: ↖ Aktion: \ 033OH Schlüssel: ↗ Aktion: \ 033OF
curlingdude

Das hat bei mir perfekt funktioniert! Ich benutze nur Nano, also hier keine Probleme.
Sterling Bourne

Ja, das funktioniert, aber das Problem im Allgemeinen nicht lösen. Ich bin von bash nach zsh gewechselt und habe FN-SHIFT-LEFT / RIGHT verwendet. Dies hat mein Problem gelöst: stackoverflow.com/questions/8638012/…
vlk

1

Dies ist der effektivste Weg, um es auch mit vim zum Laufen zu bringen. Gehen Sie zu Terminal -> Einstellungen -> Profile -> Tastatur und fügen Sie Folgendes hinzu:

Taste: ↖ Aktion: \ 033OH

Taste: ↗ Aktion: \ 033OF


1

Ich möchte eine alternative Lösung für dieses Problem anbieten. Dies funktioniert hervorragend, wenn Sie ein vi-Benutzer sind. Vim Key Bindings in Terminal bietet eine Möglichkeit, Ihr Terminal im Vim-Stil zu verwenden. Sie können dies tun, indem Sie das set -o viTerminal eingeben und es nach Belieben eingeben .bash_profile. Danach ist Ihr Terminal praktisch ein VIM-Editor. Sie können die escTaste verwenden, um in den Befehlsmodus zu wechseln und auf vim Art und Weise herumzulaufen. Zum Beispiel 0bekommt man zu Beginn und $bringt Sie bis zum Ende. Sie können auch Iund verwenden A, um zum Anfang und zum Ende zu gelangen und sofort in den Bearbeitungsmodus zu wechseln. wund blassen Sie sich um ein Wort vorwärts und rückwärts bewegen. Und wenn Sie versuchen, durch Drücken von in den visuellen Modus zu wechselnvSie erhalten einen VIM-Editor und der Text, den Sie haben, wenn Sie diesen Editor verlassen, wird im Terminal ausgeführt.

Beachten Sie, dass durch diese VIM-Tastenkombination alle Tastenkombinationen ungültig werden, die Sie aus anderen Antworten gelernt haben.


0

Hier ist die Liste in druckbarer Form, wie gewünscht :)

http://pastebin.com/uCqwn7qs

Ich habe auch einen "Bug" in der Beschreibung behoben. Dies ist, was Sie ursprünglich in der Anleitung lesen konnten:

ESC-d Tötet vom Cursor den Anfang des vorherigen Wortes oder, wenn zwischen Wörtern, den Anfang des vorherigen Wortes.

Dies riecht nach einem Fehler beim Ausschneiden und Einfügen, da beide Teilsätze dasselbe aussagen. Die erste Hälfte muss laut Klartext tatsächlich "vom Cursor bis zum Anfang des aktuellen Wortes" lauten.


0

... was ist mit wortwörtlich herumspringen? (Strg-Links und Strg-Rechts in Fenstern)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.