Notez que cela fonctionnera dans le terminal et le mode emacs par défaut (que vous utilisez si Ctrl+ Wsupprime le mot précédent pour vous). Cela ne fonctionnera pas en mode vi de bash et n'affectera pas vi / vim lui-même. Ce n'est donc qu'une réponse partielle mais le meilleur que cet utilisateur d'emacs puisse offrir.
Ce genre de chose est géré par la readline
bibliothèque dont le comportement peut être contrôlé via ~/.inputrc
. Modifiez (ou créez, s'il n'existe pas) ~/.inputrc
et ajoutez cette ligne:
"\C-H":"\C-W"
Maintenant, ouvrez un nouveau terminal et cela devrait fonctionner.
Explication
C'est en \C-H
fait Control+ BackSpace. Vous pouvez voir les codes clés en appuyant sur Ctrl+ Vpuis sur la touche que vous recherchez. Vous verrez que cela BackSpacerevient ^H
.
Maintenant, il devrait être possible de lier Control+ BackSpaceà la fonction bash qui supprime le mot précédent ( backward-kill-word
ou unix-word-rubout
) en utilisant "\C-H": backward-kill-word
. Cependant, je ne peux pas faire fonctionner cela. Cela fonctionne parfaitement avec différentes clés ( "\C-E": backward-kill-word
, par exemple, fait Ctrl+ Esupprimer le mot précédent) mais pour une raison quelconque, je ne peux pas le faire fonctionner BackSpace.
Donc, comme solution de contournement, nous mappons simplement Ctrl+ Backspaceà Ctrl+ Wqui est déjà mappé backward-kill-word
. Ainsi, lorsque vous appuyez sur Ctrl+ Backspace, cela sera traduit en Ctrl+ Wqui, à son tour, sera envoyé backward-kill-word
. J'ai eu l'idée de cette solution de contournement de ce poste SU .