Le raccourci «supprimer le mot» du shell supprime trop de caractères

9

Sous Bash, un comportement de Alt+ dme rend fou depuis des années et j'ai compris que cela pourrait peut-être être corrigé avec un paramètre.

Si je suis sur un terminal et émets une commande comme celle-ci:

...$   cat >> ~/notesSuperLongFilename.txt

puis si je veux, disons, émettre:

...$ scp ~/notesSuperLongFilename.txt

Je voudrais récupérer le "chat >> ~ / notesSuperLongFilename.txt" en utilisant Ctrl + p (ligne précédente) puis refaire Ctrl+ a, puis Alt+ det Alt+ dpour avoir:

...$  ~/notesSuperLongFilename.txt

puis je serais en mesure d'entrer simplement "scp" puis de faire un Ctrl+ m(ou appuyez sur Entrée / Retour).

Cependant ça ne marche pas car après le premier Alt+ dj'obtiens:

...$ >> ~/notesSuperLongFilename.txt

(jusqu'ici tout va bien)

mais après le deuxième Alt+ dj'obtiens:

...$ .txt

Donc, pour une raison quelconque, Alt+ dsupprime ">> ~ / notesSuperLongFilename" à la fois au lieu de simplement supprimer ">>" .

Ce doit être le plus gros gaspilleur de temps qui me rend fou avec Linux / Bash depuis des années.

Alors, comment puis-je corriger ce comportement (sans doute cassé) de Alt+ d?

PS: je ne sais pas qui est "responsable" de ce Alt+ dcomportement: je ne sais pas si c'est le terminal ou si c'est le shell (Bash dans mon cas).

Cedric Martin
la source
après "cat >> ~ / notesSuperLongFilename.txt", tapez "scp" puis Esc ,. (Échapper une fois puis le caractère "." Une fois)
Mathieu

Réponses:

3

Je ne sais pas qui est "responsable" de ce comportement Alt + d: je ne sais pas si c'est le terminal ou si c'est le shell (Bash dans mon cas).

Il s'agit bashen particulier de la configuration d'édition par défaut de la ligne de commande. Voici une belle page sur les commandes qui peuvent être liées et comment changer les liaisons par défaut.

La liaison par défaut pour Alt-dest celle kill-wordqui est censée fonctionner comme la commande du même nom dans Emacs. Cependant, comme vous l'avez observé, ce n'est pas le cas - Emacs considérerait l'espace entre >>et le tilde dans votre exemple comme une rupture de mot. Ce bashn'est pas le cas, je considérerais un bug. À moins d'obtenir la source bash, de la changer et de la recompiler, je ne sais pas ce que vous pouvez faire.

dodgethesteamroller
la source
1
Cela semble être un bug. Je le signalerais à l'équipe Bash.
Ernie