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.


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 是 好人


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


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

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

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.


16

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

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


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.



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.


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.



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.


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:

2

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

  • Home, Ctrl+K
  • End, Ctrl+U

0

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

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.