iTerm - ein Wort hin und her gehen

164

Wäre es möglich, iTerm 2 so zu konfigurieren, dass mit einer Tastenkombination ein Wort im aktuellen Text in der Befehlszeile vor- und zurückgespult wird?

syntagma
quelle
14
Dies beantwortet die Frage nicht wirklich, ist aber relevant: Sie können mit gedrückter Wahltaste auf eine beliebige Stelle in einer Befehlszeile klicken, um den Cursor dorthin zu bewegen.
David Winiecki
Downvoting für die Nichtannahme der richtigen Antwort
Pi-
@ Pi- Warum denkst du, dass die akzeptierte Antwort nicht die richtige ist? 1. Es erschien fast 3 Jahre vor dem mit den meisten Stimmen. 2. Es stellt eine Lösung vor, die standardmäßig nicht funktioniert.
Syntagma

Antworten:

47

Ctrl-[ bspringt ein Wort zurück. Sie können Escstattdessen auch oder Ctrl-[und verwenden f, um fortzufahren.

Das ist Ctrl+ [loslassen und dann boder f. Oder Escund boder f.

Weitere Informationen finden Sie in dieser anderen Diskussion zu AskDifferent.

Volsk
quelle
3
Dies wäre besser, wenn es eine Möglichkeit gäbe, viele Wörter schnell zurückzugehen, während Sie eine Taste gedrückt halten, anstatt für jedes Wort eine Tastenfolge eingeben zu müssen.
User1717828
Was ist "Strg- ["?
Shihao Xu
Mit "Strg- [" meine ich das gleichzeitige Drücken der Tasten "Strg" und "[".
Volsk
323

Eine Fliege mit einer Kanone töten:

  • Gehen Sie zu Einstellungen ... > Profile > Schlüssel
  • Drücken Sie Preset laden ...
  • Wählen Sie Natural Text Editing

Dann können Sie ein Wort bewegen rückwärts mit Option ⌥+ und einem Wort vorwärts mit Option ⌥+ , an den Anfang der Zeile bewegen Sie mit fn+ und bis zum Ende der Leitung mit fn+ . Sie können ein Wort auch rückwärts mit Option ⌥+ und die gesamte Zeile mit Command ⌘+ löschen .

Wenn die Voreinstellung nicht angezeigt wird, installieren Sie iTerm2 neu. Wenn Sie es mit Homebrew + Cask installiert haben:

brew cask reinstall iterm2
Ricardo Stuven
quelle
48
Dies sollte die akzeptierte Antwort sein!
Guyarad
3
Das funktioniert bei mir nicht. Parameter: iTerm2 3.1.2, macOS 10.12.6, deutsche Tastatur. Und ich bin nicht allein ...
t0r0X
2
Dies ist großartig und wird die meisten Ihrer Bedürfnisse ergänzen. Es wird jedoch kein "Gehe zu Anfang / Ende der Zeile über CMD + linker Pfeil / rechter Pfeil" hinzugefügt. Informationen zu
MikeyN0
36
Mein Leben hat sich verändert, nachdem ich diese Antwort gesehen habe. Ich habe mich von meiner Frau scheiden lassen, jetzt bin ich in einem Lambo mit einem Supermodel.
Dragos Rizescu
12
Beachten Sie, dass dies Einstellungen> Profile > Schlüssel> Voreinstellungen
laden und
148

Ich mag das folgende Setup.

  1. Voreinstellungen> Schlüssel (oder Voreinstellungen> Profile> Schlüssel)
  2. Klicken Sie auf das Pluszeichen.

bewege dich ein Wort vorwärts

option+right
send escape sequence
f

gehe ein Wort zurück

option+left
send escape sequence
b

Löschen zum Wortanfang ( Gutschrift )

option+delete
send hex code
0x1B 0x08

bis zum Wortende löschen

fn+option+delete
send escape sequence
d

(Ich erinnere mich nicht sicher, aber ich glaube, ich habe diese Antwort von Herrnans Antwort unten kopiert und sie erweitert. Ich hätte die zusätzlichen Informationen in Kommentaren oder Änderungsvorschlägen zu dieser Antwort hinzufügen sollen. Ich weiß nicht, wie ich sie verbessern soll die Situation, aber jetzt ist es bekannt.)

David Winiecki
quelle
2
Unter MacOS 10.12 muss ich den Hex-Code 0x17 verwenden, um den Wortanfang zu löschen
midopa
Funktioniert wie ein Zauber mit MacOS 10.12 und zsh
Sébastien
1
Beste Antwort, die Sie je von mir bekommen haben :)
Infinity
1
Erwägen Sie, die Antwort von jherran zu unterstützen. Ich denke, ich habe ihre Antwort nur ein wenig verbessert und hätte wahrscheinlich eine Änderung vorschlagen sollen, anstatt meine eigene Antwort zu erstellen. Ich habe das Gefühl, ich hätte es gestohlen.
David Winiecki
Referenzierten dies : Esc-b zu tun, musste ich senden 0x1b 0x42, und für Esc-f, hatte ich zu senden 0x1b 0x46: D
Meredith
36

Weiterleiten (Alt-f), Zurück (Alt-b) und Löschen (Alt-d) von Wörtern

  1. Öffnen Sie iTerm.
  2. Gehen Sie zu iTerm> Einstellungen ...> Profile> Schlüssel
  3. Klicken Sie unter Profil-Tastenkombinationen auf das Pluszeichen.
  4. Geben Sie Ihre Tastenkombination ein (Option-b, Option-f, Option-d, Option-links usw.).
  5. Wählen Sie für "Aktion" die Option "Escape-Sequenz senden".
  6. Schreiben Sie b, d oder f in das Eingabefeld.

Dies funktioniert zumindest für Bash. Für zsh gibt es andere Navigationsmöglichkeiten.

jherran
quelle
2
Ich habe versucht, eine Option + rechte Verknüpfung hinzuzufügen, und es wurde eine Warnmeldung zu einem Konflikt angezeigt, da mir nicht klar war, dass Sie die Tasten sowohl unter Einstellungen> Tasten> Globale Verknüpfungstasten als auch unter Einstellungen> Profile> Tasten> Profilverknüpfungstasten konfigurieren können. Das Konfigurieren im Standardprofil hat funktioniert.
David Winiecki
1
Es funktioniert auch für zsh!
Andrii Abramov
2
Ich denke, Ihre Antwort (auf dieselbe Lösung) war am einfachsten zu verstehen, +1
nzaleski
1
Sehr nützliche Erklärung.
Conti
Perfekt. Sie können auch Befehlstaste + F usw. verwenden, damit die Taste "Alt" in derselben Position ist und beim Umschalten zwischen PC und Mac keine Anpassung erforderlich ist.
Friederblümle
12

Ähnlich wie bei anderen Antworten, aber für Zsh habe ich eine Weile gebraucht, um Folgendes zu finden:

Wenn Sie Zsh wie Oh My Zsh in iTerm verwenden, gehen Sie zu: Untermenü Einstellungen> Profile > Schlüssel

Klicken Sie auf + Zeichen

Fügen Sie Ihre Verknüpfungskombination hinzu und wählen Sie "Escape-Sequenz senden".

Eingänge für links und rechts unten.

links:

[1;5D

richtig:

[1;5C
bdanin
quelle
1
Sie retteten meinen Lebensgefährten
Thibaut Noah
Dies ist die einzige Lösung, die für mich funktioniert hat
Bryji
Endlich eine einfache Lösung, die funktioniert: D Danke, dass Sie sie mit uns geteilt haben!
Periback
Das sollte die Antwort sein. Upvoted.
ehime
2

Bildbeschreibung hier eingeben

Öffnen Sie die Einstellungen

Konfigurieren Sie die linke (und / oder rechte) Wahltaste, um Esc + zu senden

Wenn Sie Ihre Voreinstellungen durcheinandergebracht haben, müssen Sie möglicherweise die Standardvoreinstellung laden (Vorsicht, dies könnte Ihre benutzerdefinierten Tastenkombinationen löschen!).

Bildbeschreibung hier eingeben

Wenn Sie danach seltsame Zeichen sehen, müssen Sie möglicherweise ~ / .inputrc oder / etc / inputrc konfigurieren

Fügen Sie dies zu Ihrer ~ / .inputrc hinzu:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Vollständiges Beispiel für inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif
yosefrow
quelle
Perfekt ... tks.
paivaric vor
2

Sie können Ihr Terminal in den vi-Modus set -o viversetzen, um die üblichen vi-Bewegungsbefehle verwenden zu können (fügen Sie die Zeile hinzu .bash_profile, um die Einstellung dauerhaft zu speichern.)

Wie in vi können Sie also drücken Esc, bum ein Wort rückwärts ( wvorwärts) zu bewegen , zum Zeilenanfang zu gehen 0oder ein Zeichen mit Fdem Zeichen + rückwärts zu suchen .

Drücken Sie i, um zum normalen Modus zurückzukehren und einzufügen.

Wer sich mit vi auskennt, kann noch viel mehr. Ein Spickzettel finden Sie hier .

sebnukem
quelle
2
vim löst alles! : D
Breno Salgado
Wenn Sie Escdann Inur einmal an den Zeilenanfang gehen, ist dies etwas weniger praktisch als Ctrl-a- dieser Anwendungsfall tritt häufig auf, wenn Sie nur den Befehlsnamen ändern möchten. Daher verwende ich den vi-Modus mit einigen Änderungen an der Tastenkombination in iTerm2 zum Abbilden Ctrl-Aund ähnlich der Escape-Sequenz Esc+0. Auf diese Weise sind diese Fälle noch schneller, da sie im Bearbeitungsmodus enden.
Rfabbri
-1

Mit iTerm2 3.1.4 konnte ich Folgendes einrichten, ohne einzelne Tastenzuordnungen hinzuzufügen.

  1. Gehen Sie zu Einstellungen> Profile> Schlüssel
  2. Links / Rechts ⌥ Taste: Wählen Sie Esc +

Mit einer neuen Terminal-Sitzung können Sie jetzt Folgendes verwenden:

Option ⌥+ fum vorwärts zu kommen

Option ⌥+ bum vorwärts zu kommen

Option ⌥+, Delete ⌫um ein Wort zu löschen

Fate.AKong
quelle
2
Wie unterscheidet sich dies von der anderen hoch bewerteten Antwort? apple.stackexchange.com/a/293988/237
user151019