Bash: efface du curseur jusqu'à la fin de la ligne avec un raccourci clavier

91

Considérez l'invite bash suivante, où ^indique l'emplacement de l'invite:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

Supposons que je veuille commettre à nouveau avec le même bogue, avec un message de validation différent. Est-il possible de supprimer le texte de la position du curseur jusqu'à la fin de la ligne?

Adam Matan
la source

Réponses:

145

Utilisez Ctrl+ Kpour supprimer du curseur à la fin de la ligne.

Utilisez Ctrl+ Upour supprimer du curseur jusqu'au début de la ligne.

utilisateur128285
la source
Quelle est la combinaison de touches à mettre?
ShooShoSha
@ ShooShoSha, essayez Maj + Insertion
utilisateur128285
Quelles sont les significations de K et U, je ne peux pas m'en souvenir de la semaine prochaine si je ne connais pas les significations, comment s'en souvenir?
workplaylifecycle le
2
@hylepo Dunno mais mon mnémonique est Brexit - the UK leaves Europe- U supprime au début et K à la fin.
Snowcrash
47

Cela dépend si vous utilisez le mode d'édition vi ( set -o vi) ou emacs ( set -o emacs) dans votre shell.

Par défaut, votre shell utilise généralement le mode d’édition emacs.

  • En mode emacs, la suppression jusqu’à la fin de la ligne peut être effectuée à l’aide de la commande ctrl- k.

  • Si, toutefois, vous utilisez le mode d'édition vi dans votre shell de commande, vous pouvez obtenir le même résultat en tapant Esc(qui vous placera en mode commande) suivi de d- $(si vous souhaitez supprimer la ligne entière, entrez dd).

Si vous ne savez pas quel mode d'édition vous utilisez actuellement dans votre shell, entrez la commande à set -opartir de la ligne de commande et vous pourrez déterminer le mode d'édition que vous utilisez actuellement:

set -o
...snip...
emacs           on
...snip...
vi              off

Pour changer de mode d’édition en ligne de commande, tapez simplement:

set -o vi

ou

set -o emacs
Kevin Bowen
la source
4
Si vous voulez un mnémonique, le Ksymbole signifie kill (la ligne partant de la position du curseur).
Gregor Botero
5
En mode de commande vi, Dfonctionne de la même manière qued$
glenn jackman
3
+1 pour écrire réellement la bonne réponse et expliquer que des coquilles peuvent la changer.
TC1
1
>> Merci Il semble que j'utilise vi, alors CTRL + K fait l'affaire. - Adam Matan Adam, alors vous êtes dans le mode emacs, pas vi.
catch22
1
Dans Kubuntu, oneiric (konsole), Ctrl + K et ESC Shift + D fonctionnent tous les deux. ESC d supprime une partie de la ligne (peut-être jusqu'à un ';'). (Taper un $ après cela envoie simplement le $ à la console.) J'essaie de comprendre comment faire cela depuis assez longtemps. Merci!
Joe
3

Si vous ne connaissez que l'un de Zsh et de Bash, voici les raccourcis clavier dont vous pourriez avoir besoin:

frapper

bind '"\C-k"':kill-line

zsh

bindkey "\C-k"      vi-kill-eol

Autres informations pertinentes

Pour obtenir une liste des raccourcis clavier:

# bash
bind -p

# zsh
bindkey
Sridhar Sarnobat
la source
Je suis confus. Pour Bash, ne devrait-ce pas être "^k" pour Control + K?
Wjandrea
Désolé, c'est ma liaison personnelle. J'aurais mis la liaison par défaut mais je n'étais pas à l'aise avec la syntaxe bash. Depuis que vous avez mentionné ce que cela devrait être, j'ai pris votre parole et modifié mon message.
Sridhar Sarnobat
1
Ah d'accord. Je ne le connais pas moi-même, mais je viens de vérifier et cela devrait être"\C-k"
wjandrea