zsh kill Ctrl + Retour arrière, Ctrl + Suppr

11

Comment configurer zsh de telle sorte que Ctrl+ Backspacetue le mot avant le point? Comment y parvenir Ctrl+ Deletetue le mot après le point?

J'utilise urxvt comme émulateur de terminal.

étudiant
la source
Tout d'abord, vous devez définir "mot". S'agit-il uniquement de caractères alphabétiques? Tous les caractères non spatiaux?
Mikel
mot comme il est utilisé dans la terminologie emacs
étudiant
Si aucune des solutions ci-dessous ne fonctionne, reportez-vous à: stackoverflow.com/questions/21252419/… .
AP.

Réponses:

11

Je vais me concentrer sur Ctrl+ d' Deleteabord.

La commande zsh pour supprimer un mot entier vers l'avant est appelée kill-word. Par défaut, il est lié à Alt+ D.

Comment faire Ctrl+ le Deletefaire dépend aussi de l'émulateur de terminal que vous utilisez.

Sur mon système, cela fonctionne dans xterm et Gnome Terminal:

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

et pour urxvt, vous devez faire:

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

Si cela ne fonctionne pas, essayez de taper Ctrl+ V Ctrl+ Deletepour voir quelle est la valeur sur votre système.

Vous pouvez même ajouter ces deux éléments ensemble à votre .zshrc, ou utiliser la sortie de tput kDC5au lieu de coder en dur la séquence.

Ctrl+ Backspacesemble plus difficile.

Sur mon système, appuyer sur cela revient à appuyer sur juste Backspace.

Si le vôtre est le même, je pense que votre meilleure option est d'utiliser à la place Alt+ Backspaceou Ctrl+ W.

Mikel
la source
J'utilise urxvt comme émulateur de terminal
étudiant
Ctrl + Backspacene fonctionne pas
étudiant
Vous avez besoin ^[[3^d'urxvt. Ctrl+V Ctrl+Deletevous montrerait cela.
Mikel
1
Merci, j'ai ajouté bindkey '^[[3^' kill-word bindkeyet '^H' backward-kill-wordà mon .zshrc. Maintenant ça marche!
étudiant
@ user5289: Ah, désolé, nous nous sommes mal compris. Je ne pense pas ^Hou ^?travaillerai pour Ctrl+Backspace. En fait, il semble qu'une telle liaison ne soit pas possible. Alt+Backspaceou Ctrl+Wpourraient être des remplacements adéquats.
Mikel
3

Sur urxvt, pour la suppression de la partie arrière, j'ai simplement dans mon texte .zshrcsuivant:

bindkey '^H' backward-kill-word

et cela me permet de supprimer le mot précédent avec ctrl + backspace

benterris
la source
2

J'ai ceci dans mon .Xresources:

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

et que dans mon .zshrc:

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

Cela tue chaque mot séparé par des espaces. Notez que '^ [' est le caractère d'échappement. Vous devez xrdb -load .Xresourcesouvrir un terminal, puis appuyez sur ^Vsuivi de ^BackSpace.

jchnkl
la source
1

Ajoutez ce qui suit à votre ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
rysama
la source