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?

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.


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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.