zsh kill Strg + Rücktaste, Strg + Löschen

11

Wie konfiguriere ich zsh so, dass Ctrl+ Backspacedas Wort vor dem Punkt beendet? Wie erreicht man das Ctrl+ Deletetötet das Wort nach dem anderen?

Ich benutze urxvt als Terminalemulator.

Schüler
quelle
Zunächst sollten Sie "Wort" definieren. Sind es nur alphabetische Zeichen? Alle Nicht-Leerzeichen?
Mikel
Wort wie es in der Emacs-Terminologie verwendet wird
Student
Wenn keine der folgenden Lösungen funktioniert, lesen Sie : stackoverflow.com/questions/21252419/… .
AP.

Antworten:

11

Ich werde mich zuerst auf Ctrl+ konzentrieren Delete.

Der Befehl zsh zum Löschen eines ganzen Wortes vorwärts wird aufgerufen kill-word. Standardmäßig ist es an Alt+ gebunden D.

Wie Ctrl+ Deletees auch macht, hängt davon ab, welchen Terminalemulator Sie verwenden.

Auf meinem System funktioniert dies in xterm und Gnome Terminal:

bindkey -M emacs '^[[3;5~' kill-word

und für urxvt sollten Sie tun:

bindkey -M emacs '^[[3^' kill-word

Wenn dies nicht funktioniert, geben Sie Ctrl+ V Ctrl+ ein Delete, um den Wert auf Ihrem System anzuzeigen.

Sie können sogar beide zu Ihrer hinzufügen .zshrcoder die Ausgabe von verwenden, tput kDC5anstatt die Sequenz fest zu codieren.

Ctrl+ Backspacescheint schwieriger.

Das Drücken auf meinem System entspricht dem Drücken von nur Backspace.

Wenn deins dasselbe ist, ist es meiner Meinung nach die beste Option, stattdessen Alt+ Backspaceoder Ctrl+ zu Wverwenden.

Mikel
quelle
Ich benutze urxvt als Terminalemulator
Student
Ctrl + Backspacefunktioniert nicht
Student
Sie brauchen ^[[3^für urxvt. Ctrl+V Ctrl+Deletewürde dir das zeigen.
Mikel
1
Danke, ich habe bindkey '^[[3^' kill-word bindkeyund '^H' backward-kill-wordzu meiner .zshrc hinzugefügt. Jetzt funktioniert es!
Student
@ user5289: Ah, sorry, wir haben uns missverstanden. Ich denke nicht ^Hoder ^?werde dafür arbeiten Ctrl+Backspace. Tatsächlich scheint eine solche Bindung nicht möglich zu sein. Alt+Backspaceoder Ctrl+Wkönnte angemessener Ersatz sein.
Mikel
3

Auf urxvt habe ich für das Löschen des Rückwärts-Teils einfach .zshrcFolgendes:

bindkey '^H' backward-kill-word

und es erlaubt mir, das vorherige Wort mit Strg + Rücktaste zu löschen

Benterris
quelle
2

Ich habe das in meinem .Xresources:

URxvt.keysym.C-BackSpace:       \033[33~

und das in meinem .zshrc:

bindkey -M main -M viins -M vicmd   '^[[33~'    backward-kill-word

Dies tötet jedes durch Leerzeichen getrennte Wort. Beachten Sie, dass '^ [' das Escape-Zeichen ist. Sie müssen xrdb -load .Xresourcesein Terminal öffnen und dann drücken, ^Vgefolgt von ^BackSpace.

jchnkl
quelle
0

Fügen Sie Folgendes zu Ihrem hinzu ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
Rysama
quelle