Bash: efface le mot devant le curseur

76

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 + wefface en arrière, mais quel raccourci efface un mot en avant?

Adam Matan
la source
2
Ctrl uest une option pour effacer de la position du curseur au début ...
Nutty about natty
23
Essayez alt + d, cela pourrait être utile lorsque le mode d’édition emacs est défini.
@Mik, comment activer le mode emacs?
Adam Matan
@AdamMatan l' set -o emacsactive, mais il s'agit généralement de la valeur par défaut. sinon, vous pouvez insérer cette ligne .bashrcou .bash_aliases, puis sourcez le fichier ou rechargez le terminal. Toutefois, les raccourcis auxquels vous êtes peut-être habitué en mode vi ne seront pas disponibles, bien que ceux tels que ctrl + c le soient parce qu'ils ne sont pas des raccourcis Bash.

Réponses:

56

J'ai répondu à une question similaire 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+ draccourci (essayez Esc+ dsi vous n'avez pas la clé Meta). Il ne supprimera qu'une partie du chemin à la fois.

Nykakin
la source
31
Alt-d travaille pour moi
Ricab
8
Généralement, dans le monde des claviers où Meta n’existe pas, Alt = Meta.
Nate CK
Dans le monde où vous avez de nombreux claviers différents, un fait pratique et assez utile est que le préfixe Esc sert également de méta.
triple-
1
En bref, ajoutez par exemple ceci à votre fichier $ HOME / .inputrc:, "\ew": shell-kill-word qui fera en sorte que Alt-w supprime un mot, tout comme CTRL-w supprime en arrière un mot (et contrairement à Alt-d qui transfère la suppression mais s'arrête par exemple). un / ou - et d'autres caractères)
user964970
7

Tester le esc+ det alt/ opt+ dsur OSX Mavericks et ils y travaillent également.

visyoual
la source
12
Option + dme donne ∂ sur OSX
Ivan Balashov
4
-1 OSX n'est pas Ubuntu. N'hésitez pas à ajouter un commentaire, mais ce n'est pas une réponse.
Wjandrea
vous devez d'abord activer la case à cocher "utiliser option comme clé méta" dans les préférences du terminal (profils -> onglet clavier -> case à cocher)
nils petersohn
control + dsur mac Sierra
Mfink
2
@ IvanBalashov si vous utilisez iterm, définissez votre clé opt-opt sur écha +. Sous Profils> Clés
Tessie