web-dev-qa-db-fra.com

Bash: efface Word avant le curseur

Considérez la ligne de commande bash suivante, où ^ indique l'emplacement du curseur:

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^

J'aimerais créer un fichier différent avec le même message. Comment puis-je supprimer le mot actuel, de l'emplacement du curseur à l'espace suivant? Y at-il également un raccourci pour la suppression en arrière, forme le curseur vers le premier espace en arrière?

Mise à jour: ctrl+w efface en arrière, mais quel raccourci efface un mot en avant?

74
Adam Matan

J'ai répondu à la même question sur unix.stackexchange.com :

Bash a des commandes readline qui ne sont pas liées par défaut. Vous pouvez les trouver à la référence: http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

La commande que vous recherchez s'appelle "Shell-backward-kill-Word". Vous devez d'abord sélectionner un raccourci. Utilisons Crtl + p, puisqu'il s'agit de "commande précédente" - identique à la flèche vers le haut.

bind '"\C-p": Shell-backward-kill-Word'

La seule différence est que vous devez utiliser la commande "Shell-kill-Word" à la place, car vous souhaitez supprimer en avant.

Il existe également une commande "kill-Word" avec Meta+d raccourci (essayez Esc+d si vous n'avez pas de clé méta). Il ne supprimera qu'une partie du chemin à la fois.

56
Nykakin

Testé à la fois esc+d et alt/opt+d sur OSX Mavericks et ils y travaillent également.

7
visyoual