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.


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.


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


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.


0

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

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.