Ich kann sehen, dass Ctrl+ left/ rightzum Anfang / Ende der Zeile springt. Wie ändere ich dies auf Cmd+ left/ right arrow?
Folgen Sie diesem Artikel , damit Alt+ left/ für das right arrowWortspringen richtig funktioniert .
Ich kann sehen, dass Ctrl+ left/ rightzum Anfang / Ende der Zeile springt. Wie ändere ich dies auf Cmd+ left/ right arrow?
Folgen Sie diesem Artikel , damit Alt+ left/ für das right arrowWortspringen richtig funktioniert .
Antworten:
Fügen Sie in iTerm2 die folgenden Profilverknüpfungsschlüssel hinzu
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
Hier ist ein Bild für diejenigen, die es brauchen
⌘← "SEND ESC SEQ" OH
für Home und ⌘→ "SEND ESC SEQ" OF
End (dies sind Großbuchstaben, keine Nullen). Dies simuliert das tatsächliche Drücken der Home- und End-Tasten und funktioniert als solches in Bash, Vim usw.
Um zwischen Wörtern und dem Anfang / Ende von Zeilen in iTerm2 zu springen, wählen Sie eine der beiden folgenden Lösungen.
Wenn Sie die oben erwähnte Voreinstellung "Natürliche Textbearbeitung" nicht verwenden möchten, können Sie die benötigten Tasten manuell zuordnen:
[+]
SymbolBewegen Sie den Cursor ein Wort nach links
0x1b 0x62
Bewegen Sie den Cursor ein Wort nach rechts
0x1b 0x66
Bewegen Sie den Cursor zum Zeilenanfang
0x01
Bewegen Sie den Cursor zum Zeilenende
0x05
Wort löschen
0x1b 0x08
Zeile löschen
0x15
Rückgängig machen
0x1f
Vergessen Sie nicht , die vorherigen Bindungen zu entfernen :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Wäre gut zu wissen, falls die Leute dies nicht entfernen wollten.
Ich sehe, dass es bereits viele gute Antworten gibt, aber dies sollte die native OSX-Funktionalität in mehr als nur Ihrer Shell so nahe wie möglich bringen. Ich habe überprüft, ob dies in ZSH-, Bash-, Node-, Python-i-, iex- und irb / pry-Sitzungen funktioniert (mit rb-readline gem für readline, sollte aber für alle funktionieren).
Öffnen Sie die iTerm-Einstellungen ⌘+ ,und navigieren Sie zur Profiles
Registerkarte (die Keys
Registerkarte kann verwendet werden, aber durch Hinzufügen einer Tastenkombination zu Ihrem Profil können Sie Ihr Profil speichern und mit mehreren Computern synchronisieren) und zur keys
Unterregisterkarte und geben Sie Folgendes ein:
Löschen Sie alle Zeichen links vom Cursor
⌘+ ←DeleteHex-Codes senden:
0x15
Kompatibler, aber manchmal besteht die Funktionalität darin, die gesamte Zeile und nicht nur die Zeichen links vom Cursor zu löschen. Ich persönlich benutze dies und überschreibe dann meinen zsh-Bindungsschlüssel^U
, um nur Dinge links vom Cursor zu löschen (siehe unten).oder
0x18 0x7f
Weniger kompatibel, funktioniert nicht im Knoten und standardmäßig nicht in zsh. Siehe unten, um zsh zu beheben (bash / irb / pry sollte in Ordnung sein). Führt die gewünschte Funktionalität aus, wenn es funktioniert.
Löschen Sie alle Zeichen rechts vom Cursor
⌘+ fn+ ←Deleteoder ⌘+ Delete→Hex-Codes senden:
0x0b
Löschen Sie ein Wort links vom Cursor
⌥+ ←DeleteHex-Codes senden:
0x1b 0x08
Pausen in Elixirs IEX scheinen überall gut zu funktionierenoder
0x17
Funktioniert überall, hört aber nicht bei normalen Wortumbrüchen im IRB auf und löscht stattdessen, bis ein wörtliches Leerzeichen angezeigt wird.
Löschen Sie ein Wort rechts vom Cursor
⌥+ fn←Deleteoder ⌥+ Delete→Hex-Codes senden:
0x1b 0x64
Bewegen Sie den Cursor an den Anfang der Zeile
⌘+ ←Hex-Codes senden:
0x01
Bewegen Sie den Cursor an das Zeilenende
⌘+ →Hex-Codes senden:
0x05
Bewegen Sie den Cursor ein Wort nach links
⌥+ ←Hex-Codes senden:
0x1b 0x62
Bewegen Sie den Cursor ein Wort nach rechts
⌥+ →Hex-Codes senden:
0x1b 0x66
Rückgängig machen
⌘+ zHex-Codes senden:
0x1f
Redo wird normalerweise nicht in Bash, Zsh oder Readline gebunden, sodass wir es auf einen nicht verwendeten Hexcode setzen können, den wir dann in Zsh korrigieren können
⇧+ ⌘+ Zoder ⌘+ yHex-Codes senden:
0x18 0x1f
Nun, wie man Probleme behebt, die nicht funktionieren
Für zsh können Sie die Bindung für die noch nicht funktionsfähigen ⌘+ ←Deleteund ⇧+ ⌘+ Z/ ⌘+ einrichten, yindem Sie Folgendes ausführen :
# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc
# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc
# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc
# reload your .zshrc for changes to take effect
$ source ~/.zshrc
Ich kann keine Lösung für das Hinzufügen von Redo in Bash oder Readline finden. Wenn also jemand eine Lösung für eine dieser Lösungen kennt, kommentieren Sie diese bitte unten und ich werde versuchen, sie hinzuzufügen.
Für alle, die nach der Nachschlagetabelle zum Konvertieren von Schlüsselsequenzen in Hex suchen, finde ich diese Tabelle sehr hilfreich.
$
vor verwechselt werden können echo
(einfach entfernen?). Davon abgesehen ist es perfekt. Vielen Dank.
bindkey | grep "\^\[b"
und das zeigt an, ob etwas anderes es überschreibt, nachdem es festgelegt wurde. Es sollte nur zurückkehren #=> "^[b" backward-word
. Wenn es überschrieben wird, müssen Sie herausfinden, wo es überschrieben wird, und es entfernen. Wenn dies nicht möglich ist, können Sie es ausführen echo 'bindkey "^[b" backward-word' >> ~/.zshrc
, es in die letzte Zeile Ihres hinzufügen .zshrc
, dann iTerm neu starten und es sollte funktionieren
keys
Registerkarte in den iTerm- Einstellungen, um festzustellen, ob ⌥
+ ←
auch etwas zugeordnet ist. Wenn ja, entfernen Sie es. Sie können testen, ob Ihr b
Gerät ordnungsgemäß funktioniert, indem Sie schnell esc
loslassen und dann drücken b
. Das sollte ein Wort nach links springen. Alternativ können Sie ⌥
+ ←
auf hex 0x1b 0x42
oder 0x1b 0x5b 0x31 0x3b 0x35 0x44
. Ich habe überprüft, dass beide für mich funktionieren. Ich denke wirklich, dass Sie ⌥
+ ←
in iTerm überschrieben wurden, entweder in Ihrem profile
keys
Tab oder keys
Tab.
Befolgen Sie das oben aufgeführte Tutorial, um Ihre wichtigsten Einstellungen in iterm2 einzurichten .
In iTerm 3.0.12 können Sie zur Natural Text Editing
Voreinstellung wechseln :
iTerm → Einstellungen → Profile → Schlüssel
Warnung Da es sich um eine Voreinstellung handelt, kann sie die zuvor gebundenen Schlüssel überschreiben. Es ist daher besser, Ihre aktuellen Tastenkombinationen zu speichern, bevor Sie eine Voreinstellung anwenden.
Unter dem obigen Link http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- finden Sie eine schnelle Referenz für alle, die in iTerm2 zum Zeilenende oder zum Zeilenende gehen möchten. in-iterm.html stellt fest, dass in iTerm2:
Ich habe Travis Answer verwendet und ein dynamisches Profil erstellt, das Sie anhand der Anweisungen importieren können.
GabLeRoux / iterm2-macos-dynamic-profile
Anweisungen befinden sich in der Readme-Datei und es ist viel schneller, diese zu importieren, als sie alle manuell hinzuzufügen. Ich habe dies gemäß der Anfrage von @ gooli beantwortet, da dies in einem Kommentar versteckt war. Hoffe es gefällt euch 🍻
Nur um allen zu helfen, die das gleiche Problem haben, aber speziell die Zsh-Shell mit iTerm 2 verwenden. Es stellt sich heraus, dass Zsh nicht /etc/inputrc
richtig liest und daher keine Tastenkombinationen versteht, die Sie über die Einstellungen eingerichtet haben!
Um dies zu beheben, müssen Sie Ihrer .zshrc
Datei einige Tastenkombinationen hinzufügen , z.
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Beachten Sie die Backslashes im obigen Beispiel vor dem "e". Der verknüpfte Artikel zeigt sie nicht an. Fügen Sie sie daher .zshrc
beim Hinzufügen von Bindungen zu Ihrer Datei hinzu.
Die altmodischen Emacs-Bindungen können weiterhin in iterm2 und os x terminal funktionieren:
Einstellungen -> Profile -> Schlüssel (Unterregisterkarte in Profilen)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(ähnlich im os x Terminal)Dies sollte ermöglichen alt- fund alt- bfür Worte mit Worten zu bewegen. (Immer noch ctrl- aund ctrl- eimmer wie gewohnt arbeiten)
Wenn meta
diese alten Bindungen festgelegt sind, funktionieren sie, während einige iterm2-Bindungen nicht verfügbar sind.
Wie in Erläutert hier , können Sie es mit einem einfachen Schritten tun:
Standardmäßig funktionieren Wortsprünge (Option + → oder ←) und Wortlöschungen (Option + Rücktaste) nicht. Um diese zu aktivieren, gehen Sie zu "iTerm → Einstellungen → Profile → Tasten → Voreinstellung laden ... → Natürliche Textbearbeitung → Boom! Head explodiert".
bind -p
zeigt eine Liste gebundener Escape-Schlüssel in Ihrer Shell an, die Ihnen helfen kann, mehr Ideen / Suchbegriffe zu erhalten.
bind -p
funktioniert nur in Bourne-Shells (bash, sh) für zsh, csh tcsh, use bindkey
.
erklärt in https://aaronaddleman.com/articles/hexcodes-and-iterm/
Sie können verwenden xxd -psd
, um Hex-Schlüsselcode zu erhalten.
Bei mir hat folgende Kombination funktioniert:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |