Comment effacer / supprimer la ligne actuelle dans le terminal?

796

Si j'utilise un terminal et que je tape une ligne de texte pour une commande, existe-t-il un raccourci clavier ou un moyen de supprimer / supprimer cette ligne?

Par exemple, si ma ligne / commande actuelle est quelque chose de vraiment long comme:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

Existe-t-il un raccourci clavier ou une commande pour passer de ce qui précède à:

>

?

Habituellement, j'appuie sur la touche, et si ma ligne actuelle est une toute nouvelle sur l'historique, cela l'effacera. Mais si je passe en revue mon historique de commandes via la touche et commencez à modifier ou à utiliser ces commandes, ne changera l'invite que par la prochaine commande la plus récente de l'historique, donc cela ne fonctionnera pas ici sauf si j'appuie plusieurs fois.

triade
la source
6
Raccourcis pour se déplacer plus rapidement dans la ligne de commande Bash Cette page est plus illustrative et explique mieux je pense
Gab 是 好人
1
Duplication possible de In bash, comment effacer l'entrée actuelle?
Cas

Réponses:

1494

Vous pouvez utiliser Ctrl+ Upour effacer jusqu'au début.

Vous pouvez utiliser Ctrl+ Wpour supprimer juste un mot.

Vous pouvez également utiliser Ctrl+ Cpour annuler.

Si vous souhaitez conserver l'historique, vous pouvez utiliser Alt+ Shift+ #pour en faire un commentaire.


Aide-mémoire du mode d'édition de Bash Emacs

kev
la source
231
La ligne supprimée par Ctrl-U est également rappelable avec Ctrl-Y.
frappe
65
Wut? Tellement cool merci keks & kev, ⌃ + U est tout supprimer avant le curseur, ⌃ + K est tout supprimer après le curseur, ⌃ + A doit aller au début de la ligne. Donc techniquement ⌃ + C est la meilleure solution pour la Question
Binarian
3
Alt-Shift- # ne fonctionne pas? pensaient les autres. Alt-Shift- # imprime un caractère> sur le terminal
tgkprog
49
A voté pour m'apprendre la <kbd>...</kbd>balise pour afficher les clés dans SO.
Samveen
11
@ LưuVĩnhPhúc ESCest sa propre touche de modification en bash. Il est utilisé pour des choses comme l'annulation de la navigation dans l'historique ( CTRL+ r) ou l'échange des deux derniers mots derrière le curseur ( ESC+ t).
noobish
578

Juste pour résumer toutes les réponses:

  • Nettoyer la ligne: vous pouvez utiliser Ctrl+ Upour effacer jusqu'au début.
  • Nettoyer la ligne: Ctrl+ E Ctrl+ Upour effacer la ligne actuelle dans le terminal
  • Nettoyer la ligne: Ctrl+ A Ctrl+ Kpour effacer la ligne actuelle dans le terminal
  • Annuler la commande / ligne actuelle: Ctrl+ C.
  • Rappelez la commande supprimée: Ctrl+ Y(puis Alt+ Y)
  • Aller au début de la ligne: Ctrl+A
  • Aller à la fin de la ligne: Ctrl+E
  • Supprimez les mots vers l'avant par exemple, si vous êtes au milieu de la commande: Ctrl+K
  • Supprimez les caractères à gauche, jusqu'au début du mot: Ctrl+W
  • Pour effacer l'intégralité de votre invite de commande: Ctrl+L
  • Basculer entre le début de la ligne et la position actuelle du curseur: Ctrl+XX
J4cK
la source
6
note ctrl-k supprime tout entre le curseur et la fin de la ligne.
Peter Berg
6
Supprimer le mot suivant:Alt + D
cnlevy
1
Alt+ D ne fonctionne pas c'est pourquoi je ne l'ai pas inclus :(
J4cK
1
CTRL + Lefface l'écran mais conserve ce qui a été tapé dans la ligne de commande actuelle.
Aziraphale
1
Ctrl + Alt + >passe à la fin de l'historique d'entrée, ce qui est parfait lorsque vous souhaitez annuler la recherche dans l'historique.
astasiak
165

J'ai la liste complète des raccourcis:

  1. Ctrl+ a Déplacer le curseur au début de la ligne
  2. Ctrl+ e Déplacer le curseur à la fin de la ligne
  3. Ctrl+ b Reculer d'un personnage
  4. Alt+ b Reculer d'un mot
  5. Ctrl+ f Avancer d'un caractère
  6. Alt+ f Avancer d'un mot
  7. Ctrl+ d Supprimer le caractère actuel
  8. Ctrl+ w Coupez le dernier mot
  9. Ctrl+ k Coupez tout après le curseur
  10. Alt+ d Couper le mot après le curseur
  11. Alt+ w Couper le mot avant le curseur
  12. Ctrl+ y Coller la dernière commande supprimée
  13. Ctrl+ _ Annuler
  14. Ctrl+ u Tout couper avant le curseur
  15. Ctrl+ xxBasculer entre la première position et la position actuelle
  16. Ctrl+ l Vider le terminal
  17. Ctrl+ c Annuler la commande
  18. Ctrl+ r Commande de recherche dans l'historique - tapez le terme de recherche
  19. Ctrl+ j Terminer la recherche à l'entrée de l'historique actuel
  20. Ctrl+ g Annuler la recherche et restaurer la ligne d'origine
  21. Ctrl+ n Commande suivante de l'historique
  22. Ctrl+ p commande précédente de l'historique
tharunkumar
la source
5
Désolé, mais j'ai fourni toutes les touches de raccourci utiles, dans lesquelles 7,8,9,10,11,14,16,17 sont les touches de raccourci de suppression / suppression que nous pouvons utiliser selon les exigences.
tharunkumar
2
Il convient de mentionner que CTRL+ L(16.) préserve le contenu de la ligne de commande actuelle.
Aziraphale
sur Windows, il semble que vous devez utiliser Ctrl + Maj + A pour aller au début de la ligne
Gandalf458
3
Il manque Ctrl+ h: supprimer le caractère devant le curseur
peflorencio
22

Ctrl+ A, Ctrl+ Kpour effacer la ligne actuelle dans le terminal. Vous pouvez ensuite le rappeler avec Ctrl+ Ysi vous en avez besoin.

Spyros Mandekis
la source
16

ou si vous utilisez le mode vi, appuyez sur Escsuivi decc

pour récupérer ce que vous venez d'effacer, Escpuis p:)

bluTaz
la source
5
Vous pouvez activer le mode vi par echo 'set editing-mode vi' >> ~/.inputrc.
Fonctionne
11

Je ne sais pas si vous l'aimez mais j'utilise Ctrl+ A(pour commencer la ligne) et Ctrl+ K(pour supprimer la ligne) Je connaissais ces commandes d'emacs et je les ai trouvées accidentellement.

Muhammet Can
la source
10

Une alternative à Ctrl+ A, Ctrl+ Kest Ctrl+ E, Ctrl+ U.

Andrey Starodubtsev
la source
6
  • Ctrl+ u: déplacez- vous jusqu'au début de votre ligne vers un tampon en anneau
  • Ctrl+ k: déplacez- vous jusqu'à la fin de votre ligne vers un tampon en anneau
  • Ctrl+ w: déplacez les caractères et (plusieurs) mots vers la gauche de votre curseur vers un tampon circulaire

  • Ctrl+ y: insérez la dernière entrée de votre tampon en anneau, puis vous pouvez utiliser Alt+ ypour faire pivoter votre tampon en anneau. Appuyez plusieurs fois pour continuer à l'entrée "précédente" dans le tampon en anneau.

Cyrus
la source
4

CTRL+ Ret commencez à taper pour rechercher les commandes précédentes dans l'historique. Affiche les lignes complètes.
CTRL+ à Rnouveau pour faire un cycle.

Daniel
la source
2

Ctrl + W effacera le mot à gauche.

bendangelo
la source
2

Ajouter à la liste:

En mode Emacs, appuyez sur Esc, puis sur R, supprimera toute la ligne.

Je ne sais pas pourquoi, il arrive juste de le trouver. Peut-être qu'il n'est pas utilisé pour supprimer la ligne mais qu'il a le même effet. Si quelqu'un le sait, dites-le moi, merci :)

Fonctionne dans Bash, mais ne fonctionnera pas dans Fish.

PickBoy
la source
1
Il s'agit de la revert-linecommande readline: "Annuler toutes les modifications apportées à cette ligne". Il est lié, par défaut, à M-r(Meta-R), qui peut être à la fois Alt-R ou Esc R. Cela signifie qu'il ne supprime pas réellement la ligne, uniquement lorsqu'elle était vide pour commencer; si vous faites défiler en arrière dans votre historique de commandes et modifiez une commande, puis exécutez revert-line, elle reviendra à la commande à l'origine et ne supprimera pas la ligne.
Benjamin W.
2

Pour supprimer la ligne entière, peu importe où se trouve le curseur, vous pouvez utiliser la kill-whole-linecommande, mais elle n'est pas liée par défaut. Il peut être lié à, par exemple, Ctrl+ Alt+ Ken insérant

"\e\C-k": kill-whole-line

dans votre fichier init Readline (conventionnellement ~/.inputrc).

Remarques diverses:

  • Pour éviter de réaffecter accidentellement une séquence de touches déjà utilisée pour autre chose, vous pouvez vérifier toutes vos liaisons avec bind -P. Vérifiez la liaison suggérée avec

    bind -P | grep '\\e\\C-k'
  • Le nom du fichier init Readline est tiré de la variable shell INPUTRC. S'il n'est pas défini, la valeur par défaut est ~/.inputrc, ou (si cela n'existe pas) /etc/inputrc. Notez que si vous l'avez ~/.inputrc, /etc/inputrcsera ignoré.
  • Pour recharger votre fichier init Readline, vous pouvez utiliser Ctrl+ X Ctrl+ R.
  • Liens vers les sections du manuel pertinentes:
Benjamin W.
la source
2

Afin de nettoyer toute la ligne (2 manières différentes):

  • Home, Ctrl+K
  • End, Ctrl+U
Jose1755
la source
0

Alt+ #commente la ligne actuelle. Il sera disponible dans l'historique si nécessaire.

saumon mat
la source