Sélectionner du texte dans le terminal sans utiliser la souris

68

Je suis sur le point d'appuyer sur Entrée pour exécuter une commande dans Terminal, mais avant de le faire, je veux copier la commande dans le Presse-papiers sans utiliser la souris.

Comment?

Si vous êtes ailleurs que sur le terminal, Ctrl+ le Homefait.

Existe-t-il un moyen de sélectionner arbitrairement un texte comme celui-ci dans le terminal?

ÉDITÉ:

  • supposons que l'utilisation d'autres programmes comme screenn'est pas une bonne alternative
  • le texte doit être collé à l'extérieur du terminal, donc Ctrl+ yet des séquences similaires ne le résolvent pas non plus
Strapakowsky
la source
1
Vous voulez dire Ctrl-Maj-Maison?
Escargot mécanique
Shift-Home copie au début de la ligne. Ctrl-Shift-Home copie au début de la page.
Strapakowsky
Shift-Home et Ctrl-Shift-Home font la même chose pour moi (sautent au début du terminal) et aucun d'eux ne semble copier quoi que ce soit, ni Ctrl-Y ni Ctrl-Shift-V (ni sélectionner). Mais cela fonctionne dans l’éditeur de texte, pas dans la copie, mais simplement dans la sélection. Utilisation de OpenSUSE Leap 15 dans Virtual Box. Toutes les autres combinaisons de touches mentionnées dans les réponses fonctionnent.
Brambor

Réponses:

16

Lier le raccourci suivant:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Maintenant, après avoir utilisé Crtl+, Pvotre ligne sera copiée dans le presse-papier. Vous pouvez le coller dans un terminal en utilisant:

xsel

Et dans n'importe quelle application X en utilisant le bouton central de la souris ou Shift+ Insert.

Nykakin
la source
Je veux éviter d'utiliser la souris. Est-il possible de le coller avec Ctrl + Maj + V au lieu du bouton central de la souris?
MrGigu
@MrGigu, cela utilise un presse-papier différent (voir ici ). Vous devez utiliser un autre raccourci. Par défaut, il devrait s'agir de Maj + Insérer (voir ici )
Nykakin
Oh, merci, Maj + insert va faire l'affaire! ne savais pas que vous pouviez coller avec cette commande.
MrGigu
Des explications sur ce qui se passe réellement ici?
Alexander
Ou utilisez xsel -bpour utiliser le presse-papier standard, c'est-à-dire celui qui utilise Ctrl + V / Ctrl + Maj + V. Il convient également de noter que cette méthode échoue avec les commandes multilignes.
Wjandrea
27

Si vous utilisez l'un des shells comprenant les clés emacs (bash, csh, etc.), vous pouvez copier la commande en cours en:

  1. control-A vous amène au début de la ligne.

  2. control-K va tuer toute la ligne que vous venez d'entrer.

  3. control-Y va tirer le texte en arrière.

Ensuite, vous pourrez control-Yrécupérer le texte pour l'insérer à nouveau dans l'éditeur de ligne de commande du shell.

Voir man bashpuis quand il arrive, tapez /emacssuivi par un couple de n(suivant) pour vous déplacer à la section READLINE.

ElderDelp
la source
Je le savais mais je voulais coller en dehors du terminal. Édité pour clarification.
Strapakowsky
3
control-Upeut couper la commande à partir de la fin directement
vstepaniuk
1
2e commandement a changé ma vie.
Krishna
10

Le plus proche auquel je puisse penser est Ctrl+ u, Ctrl+ y
Ceci effacerait du curseur jusqu'au début de la ligne, puis collerait depuis le tampon readline. Ce n'est pas exactement la même chose que le presse-papier, mais vous pourriez coller à l'intérieur du shell, si c'est ce dont vous avez besoin.

sage
la source
Je le savais mais je voulais coller en dehors du terminal. Édité pour clarification.
Strapakowsky
8

Il y a un programme appelé screen. Il crée un système de fenêtrage de texte qui vous permet de basculer entre plusieurs instances. Mais cela vous permet également de sélectionner du texte.

sudo apt-get install screen

Cette commande l'installe.

Puis tapez screen

Vous utilisez ctr-a pour démarrer la séquence de commandes. Ensuite, appuyez sur esc et votre curseur se déplacera dans n'importe quelle direction. Appuyez sur enter pour commencer la sélection du texte, allez au point final, appuyez à nouveau sur enter. Cela va copier dans le tampon.

Puis ctr-a puis} collera

Plus de détails sur les autres commandes ici http://www.kuro5hin.org/story/2004/3/9/16838/14935

Meer Borg
la source
Bonne suggestion, mais je n'aime pas screenpour des raisons différentes, supposons donc un terminal Ubuntu normal. Edité ma question pour clarification.
Strapakowsky
1
Cela devrait être marqué comme la bonne réponse à mon humble avis.
Eddiewould
2

Si vous êtes dans vim, vous pouvez sélectionner visuellement une ou plusieurs lignes avec Shift+ v, puis utiliser une liaison, par exemple yypour diriger la sélection vers xclip .

Ajoutez la liaison à votre vimrc:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Cela nécessite que xclip soit installé, il se trouve dans le référentiel Debian / Ubuntu aptitude.

xclipstocke stdin, avec l' -selection clipboardoption il pousse également stdin dans le presse-papiers du système.

Vous pouvez donc également utiliser xcliple terminal de manière générique, par exemple pour copier un fichier entier dans le Presse-papiers du système:

cat myfile | xclip -selection clipboard

Si vous pouvez éventuellement créer également un alias, tel que:

alias cb="xclip -selection clipboard" 
Kris
la source