Terminal unter Mac - Löschen Sie das Tastenverhalten

5417
Martin Janiczek

Ich möchte, dass sich die Löschtaste (gut Fn+ dieBackspace Kombination + ) auf meinem Mac im Terminal genauso verhält wie normalerweise. Das heißt, vorwärts zu löschen . Im Moment wird Tilde ausgegeben - zumindest kann ich das sehen.

In Binding Fn-Delete in zsh unter Mac OS X habe ich etwas Hacker gesehen und es auch versucht:

(gedrückt [Fn] + [<---] in den Anführungszeichen unten)

$ echo "~" | od -c 0000000 ~ \n 0000002 

Wie kann ich es dazu bringen, sich zu benehmen?

7
Die Kommentare zu [SU 169930] (http://superuser.com/questions/169920/binding-fn-delete-in-zsh-on-mac-os-x/169930#169930) scheinen ziemlich klar zu sein: Sie sollten es verwenden Control-v bevor Sie Fn-BackSpace drücken, was wahrscheinlich als `033 [3 ~` von * od * angezeigt wird. Dann binden Sie mit "bindkey" ^ [[3 ~ "delete-char", was * Terminal * an eine Funktion in * zsh * sendet. Funktioniert das nicht für dich? Chris Johnsen vor 13 Jahren 0
Versuchte, "bindkey" ^ [[3 ~ "delete-char" in mein ~ / .profile einzufügen, startete Terminal neu und sagt mir, dass es "bindkey" nicht kennt. Es wurde in .zshrc hinzugefügt, Terminal neu gestartet und nichts passiert. Ich glaube nicht, dass ich _zsh_ benutze. Oder ist es die Standard-Shell von Mac? Ich bin ein Amateur in diesen Dingen ... :) Martin Janiczek vor 13 Jahren 0
Sie können Ihre Shell mit `dscl 'überprüfen. read / Benutzer / $ USER UserShell`. Der Standard ist * bash *. Sie können Ihre Standard-Shell mit `chsh -s / bin / bash` ändern. Sie können nur die in * Terminal * verwendete Shell in den Voreinstellungen ändern (Schaltfläche "Einstellungen", dann Registerkarte "Shell", ändern Sie den Befehl "Ausführen" in (z. B. `` bin / zsh`)). Chris Johnsen vor 13 Jahren 0
Ja, mein Standard ist bash. Ich habe Zsh ausprobiert und es scheint so zu funktionieren, wie ich es will. Hat die bash eine Möglichkeit, das gleiche Ergebnis zu erzielen? Martin Janiczek vor 13 Jahren 0

1 Antwort auf die Frage

14
Chris Johnsen

Die Antwort auf die Frage, auf die verlinkt Sie zeigt, wie die Steuersequenz finden Klemme sendet, wenn Sie drücken FnBackspace: echo 'ControlV FnBackspace' | od -c.
Dies ControlVist entscheidend, um eine spezielle Interpretation des (wahrscheinlichen) anfänglichen ESC-Charakters zu verhindern.

Das Terminal sendet wahrscheinlich die 4-Byte-Sequenz ESC [ 3 ~.

Die Frage, zu der Sie verlinkt haben, war die Frage nach zsh . Der Kommentar zur Antwort gibt den Befehl zum Binden der Sequenz in zsh, dh:

bindkey "^[[3~" delete-char 

(normalerweise in ~/.zhsrc).

Unter Mac OS X ist bash jedoch die Standard-Shell. Der Befehl zum Binden eines Schlüssels (und der für das Binden verfügbaren Funktionen) unterscheidet sich jedoch, wenn Sie bash : verwenden bind '"\e[3~": delete-char'. Sie werden dies wahrscheinlich in einer Bash- Startdatei 1 speichern wollen .

Wenn Sie feststellen, dass Sie bash verwenden, aber stattdessen zsh verwenden möchten, gibt es zwei Möglichkeiten, Ihre effektive Shell zu ändern:

  • Verwenden chsh -s /bin/zshSie diese Option, um Ihre Standard-Shell zu ändern.
    Dadurch wird sowohl die Shell, die Terminal startet, als auch die Shell für andere Anmeldesitzungen (z. B. Anmeldungen über SSH) geändert .
  • Konfigurieren Sie nur Klemme eine andere Shell in verwenden Klemme ‚Einstellungen.
    Terminal > Voreinstellungen…, Schaltfläche der Symbolleiste Einstellungen, dann die Registerkarte Shell,
    ändern Sie den Befehl Ausführen in (z /bin/zsh -l. B.) .

1 Normalerweise ~/.bashrckönnen Sie jedoch auch eine zugehörige Zeile ( "\e[3~": delete-char) ~/.inputrceinfügen. Wenn Sie es auf Ihre setzen .bashrc, sollten Sie sicherstellen, dass Sie auch eine Zeile wie source ~/.bashrcin haben ~/.bash_profile, oder ~/.bash_login(wenn Sie keine haben, erstellen Sie die erste; wenn Sie bereits genau eine von ihnen haben, verwenden Sie die Zeile, die Sie haben: if Sie haben beides, dann sollten Sie das beheben, da wahrscheinlich nur das erstere verwendet wird.

Hervorragende Erklärung. Vielen Dank! (oh, und es hat funktioniert. :)) Martin Janiczek vor 13 Jahren 0
Schöne einfache Antwort für mich. Setzen Sie dies einfach in "~ / .zshrc" auf den Server itsthejb vor 7 Jahren 0