Wissen Sie, wie der Code / die Sequenz für Befehl + Löschen lautet? (Löschen Sie die Eingabeaufforderung)
Steven Lu
10
Ich habe meinen ersten Kommentar an anderer Stelle beantwortet. Der Hex-Code 0x15 gibt Strg + U an, wodurch die Zeile gelöscht wird. Ich finde jedoch 0x01 Strg + A, um die Tmux-Nutzung zu stören. Daher beabsichtige ich, es stattdessen der Home-Taste zuzuordnen (gleiche Funktionalität wie Fn + Links auf einer Mac-Tastatur).
Steven Lu
7
Die Escape-Sequenz für Home ist [1 ~ und die Escape-Sequenz für End ist [4 ~
Steven Lu
3
Funktioniert wie ein Zauber, super!
Juto
25
Die korrekte Bindung gilt ⌘← "SEND ESC SEQ" OHfür Home und ⌘→ "SEND ESC SEQ" OFEnd (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.
Timothy Zorn
433
Um zwischen Wörtern und dem Anfang / Ende von Zeilen in iTerm2 zu springen, wählen Sie eine der beiden folgenden Lösungen.
1. Einfache Lösung (empfohlen)
Öffnen Sie die Einstellungen
Klicken Sie auf die Registerkarte "Profil"
Wählen Sie links in der Liste ein Profil aus (z. B. "Standard") und klicken Sie auf die Registerkarte "Schlüssel"
Klicken Sie auf die Schaltfläche "Voreinstellungen" und wählen Sie "Natürliche Textbearbeitung".
2. Schlüssel manuell zuordnen (Erweitert)
Wenn Sie die oben erwähnte Voreinstellung "Natürliche Textbearbeitung" nicht verwenden möchten, können Sie die benötigten Tasten manuell zuordnen:
Öffnen Sie die Einstellungen
Klicken Sie auf die Registerkarte "Schlüssel"
Klicken Sie auf das [+]Symbol
Sie können jetzt die folgenden Tastaturkürzel hinzufügen:
Bewegen Sie den Cursor ein Wort nach links
Tastaturkürzel: ⌥+←
Aktion: Hex-Code senden
Code: 0x1b 0x62
Bewegen Sie den Cursor ein Wort nach rechts
Tastaturkombination: ⌥+→
Aktion: Hex-Code senden
Code: 0x1b 0x66
Bewegen Sie den Cursor zum Zeilenanfang
Tastaturkombination: ⌘+←
Aktion: Hex-Code senden
Code: 0x01
Bewegen Sie den Cursor zum Zeilenende
Tastaturkombination: ⌘+→
Aktion: Hex-Code senden
Code: 0x05
Wort löschen
Tastaturkombination: ⌥+←Delete
Aktion: Hex-Code senden
Code: 0x1b 0x08
Zeile löschen
Tastaturkombination: ⌘+←Delete
Aktion: Hex-Code senden
Code: 0x15
Rückgängig machen
Tastaturkombination: ⌘+z
Aktion: Hex-Code senden
Code: 0x1f
Vergessen Sie nicht , die vorherigen Bindungen zu entfernen :
Öffnen Sie die Registerkarte "Profile"
Klicken Sie auf die Unterregisterkarte "Schlüssel".
Entfernen Sie die Zuordnungen für die Tastenkombinationen ⌥+ ←und ⌥+→
Dies funktionierte gut für mich in iTerm2 und war sehr einfach zu verfolgen, danke!
Natetronn
3
Nur klären, was die Originalbindungen für ⌥ ← tun? Ich sehe es Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. Wäre gut zu wissen, falls die Leute dies nicht entfernen wollten.
August
5
Das Springen zum Anfang und Ende der Zeile hat bei mir mit zsh nicht funktioniert. Die Verwendung von "Hex Code" "0x01" / "0x05", wie in der oberen Antwort vorgeschlagen, hat bei mir funktioniert.
Flip
2
Der Sprung zum Anfang und Ende der Zeile hat auch bei mir nicht funktioniert. Top Antwort hat funktioniert.
Hisabimbola
3
Hat iTerm eine Möglichkeit, diese in einem Preset zu bündeln, das wir einfach laden können? Es scheint ärgerlich, manuell einzugeben, aber das hat bei mir funktioniert und war großartig. Vielen Dank!
August
259
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 ProfilesRegisterkarte (die KeysRegisterkarte 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 keysUnterregisterkarte und geben Sie Folgendes ein:
Löschen Sie alle Zeichen links vom Cursor
⌘+ ←DeleteHex-Codes senden:
0x15Kompatibler, 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 0x7fWeniger 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.
0x1b 0x08 Pausen in Elixirs IEX scheinen überall gut zu funktionieren
oder
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.
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.
Das ist wirklich nützlich, macht einen großen Unterschied! Ich möchte darauf hinweisen, dass einige Leute mit dem $vor verwechselt werden können echo(einfach entfernen?). Davon abgesehen ist es perfekt. Vielen Dank.
Edmundo
1
@Christophe Es sieht also so aus, als ob die Schlüsselbindung da ist, wie sie sein sollte. Entweder haben Sie einen Fehler beim Hinzufügen der Hex-Werte gemacht, oder die Tastenkombination für das Rückwärtswort wird überschrieben. Führen Sie aus, 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
Travis
2
@Christophe Überprüfen Sie die keysRegisterkarte in den iTerm- Einstellungen, um festzustellen, ob ⌥+ ←auch etwas zugeordnet ist. Wenn ja, entfernen Sie es. Sie können testen, ob Ihr bGerät ordnungsgemäß funktioniert, indem Sie schnell escloslassen und dann drücken b. Das sollte ein Wort nach links springen. Alternativ können Sie ⌥+ ←auf hex 0x1b 0x42oder0x1b 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 profilekeysTab oder keysTab.
Travis
3
Tolle! Ich habe gerade von hier etwas über Undo plus Redo-Bindungen erfahren.
Ecbrodie
3
Ich habe dies manuell gemacht und dachte, warum kann ich dazu kein Profil importieren? Dann habe ich GabLeRoux / iterm2-macos-dynamic-profile basierend auf diesen Anweisungen erstellt. Es funktioniert einwandfrei, danke 🍻
GabLeRoux
48
Befolgen Sie das oben aufgeführte Tutorial, um Ihre wichtigsten Einstellungen in iterm2 einzurichten .
Ich liebe das! Die anderen Lösungen haben bei mir nicht funktioniert. Ich verbringe Stunden frustriert damit, dass ich Strg + A und Strg + E in iterm2 nicht verwenden konnte. Aber ich wollte den Fisch dafür nicht aufgeben. Das funktioniert total danke!
Fliegen Sie am
Andere Lösungen haben auch bei mir nicht funktioniert, aber diese hat funktioniert.
Braham Snyder
42
In iTerm 3.0.12 können Sie zur Natural Text EditingVoreinstellung 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.
Könnten Sie Ihre Antwort näher erläutern? Wie in, was beinhaltet diese Voreinstellung und könnte überschreiben?
Carles Alcolea
Danke für die Antwort. Auch darin chiming ist wahrscheinlich am besten Praxis dies Ihre eigenen Profil anwenden auf diese Weise Sie nicht mit den Standardeinstellungen schrauben und kann das Profil als natürlicher Textbearbeitung „Modus“ umschalten
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 🍻
Kam ein Jahr später hierher zurück und war so glücklich, dies zu finden!
Elifiner
9
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/inputrcrichtig liest und daher keine Tastenkombinationen versteht, die Sie über die Einstellungen eingerichtet haben!
Um dies zu beheben, müssen Sie Ihrer .zshrcDatei einige Tastenkombinationen hinzufügen , z.
Beachten Sie die Backslashes im obigen Beispiel vor dem "e". Der verknüpfte Artikel zeigt sie nicht an. Fügen Sie sie daher .zshrcbeim Hinzufügen von Bindungen zu Ihrer Datei hinzu.
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".
Bei mir hat folgende Kombination funktioniert:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |
Antworten:
Fügen Sie in iTerm2 die folgenden Profilverknüpfungsschlüssel hinzu
Hier ist ein Bild für diejenigen, die es brauchen
quelle
⌘← "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.
1. Einfache Lösung (empfohlen)
2. Schlüssel manuell zuordnen (Erweitert)
Wenn Sie die oben erwähnte Voreinstellung "Natürliche Textbearbeitung" nicht verwenden möchten, können Sie die benötigten Tasten manuell zuordnen:
[+]
SymbolSie können jetzt die folgenden Tastaturkürzel hinzufügen:
Bewegen 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 :
quelle
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 (dieKeys
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 zurkeys
Unterregisterkarte und geben Sie Folgendes ein:Löschen Sie alle Zeichen links vom Cursor
Löschen Sie alle Zeichen rechts vom Cursor
Löschen Sie ein Wort links vom Cursor
Löschen Sie ein Wort rechts vom Cursor
Bewegen Sie den Cursor an den Anfang der Zeile
Bewegen Sie den Cursor an das Zeilenende
Bewegen Sie den Cursor ein Wort nach links
Bewegen Sie den Cursor ein Wort nach rechts
Rückgängig machen
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
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 :
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.
quelle
$
vor verwechselt werden könnenecho
(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ührenecho 'bindkey "^[b" backward-word' >> ~/.zshrc
, es in die letzte Zeile Ihres hinzufügen.zshrc
, dann iTerm neu starten und es sollte funktionierenkeys
Registerkarte in den iTerm- Einstellungen, um festzustellen, ob⌥
+←
auch etwas zugeordnet ist. Wenn ja, entfernen Sie es. Sie können testen, ob Ihrb
Gerät ordnungsgemäß funktioniert, indem Sie schnellesc
loslassen und dann drückenb
. Das sollte ein Wort nach links springen. Alternativ können Sie⌥
+←
auf hex0x1b 0x42
oder0x1b 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 Ihremprofile
keys
Tab oderkeys
Tab.Befolgen Sie das oben aufgeführte Tutorial, um Ihre wichtigsten Einstellungen in iterm2 einzurichten .
ODER ein
quelle
In iTerm 3.0.12 können Sie zur
Natural Text Editing
Voreinstellung wechseln :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.
quelle
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:
quelle
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 🍻
quelle
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.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.quelle
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.quelle
Wie in Erläutert hier , können Sie es mit einem einfachen Schritten tun:
quelle
Die einzigen Dinge, die funktionieren, um zum Anfang und Ende der Zeile zu gelangen, sind
⌘← "SEND ESC SEQ" OH
- um an den Zeilenanfang zu gelangen⌘→ "SEND ESC SEQ" OF
- um zum Zeilenende zu gelangenquelle
bind -p
zeigt eine Liste gebundener Escape-Schlüssel in Ihrer Shell an, die Ihnen helfen kann, mehr Ideen / Suchbegriffe zu erhalten.quelle
bind -p
funktioniert nur in Bourne-Shells (bash, sh) für zsh, csh tcsh, usebindkey
.erklärt in https://aaronaddleman.com/articles/hexcodes-and-iterm/
Sie können verwenden
xxd -psd
, um Hex-Schlüsselcode zu erhalten.quelle
Bei mir hat folgende Kombination funktioniert:
| Key Action Esc+ End result | |-----------------------------------------------------| | ⌘← Send Escape Sequence a Send ^[ a | | ⌘→ Send Escape Sequence e Send ^[ e |
quelle