Comment copier du texte de la ligne de commande dans le presse-papiers sans utiliser la souris?

10

J'essaie de trouver un moyen de copier le texte actuel dans une ligne de commande dans le presse-papiers SANS toucher à la souris. En d'autres termes, je dois sélectionner le texte uniquement avec le clavier. J'ai trouvé une solution à mi-chemin qui peut conduire à la solution complète:

Ctrl+a - déplacez-vous au début de la ligne.

Ctrl+k - coupe toute la ligne.

Ctrl+y - retire le texte coupé.

Alternativement, je peux également utiliser Ctrl+upour effectuer les 2 premières étapes.

Bien sûr, cela fonctionne, mais j'essaie de savoir exactement où le texte coupé est enregistré. Existe-t-il un moyen d'y accéder sans utiliser Ctrl+y? Je le xclipsais et je l'utilise même pour diriger le texte directement dans le presse-papiers, alors je pensais à canaliser les données enregistrées Ctrl+kdans xclip, mais je ne sais pas comment le faire.

La méthode que j'ai eue jusqu'à présent consiste à écrire un script qui utilise xdotoolpour ajouter echoau début de la ligne et | zxcà la fin de la ligne, puis frappe Entrée ( zxcétant un alias personnalisé qui est essentiellement dirigé vers xclip). Cela fonctionne aussi, mais ce n'est pas une solution vraiment "propre".

J'utilise Cshell si cela fait une différence.

EDIT: Je ne veux pas utiliser screencomme solution, j'ai oublié de le mentionner.

Merci!

Sancho Pancho
la source
Indépendant, mais aussi bon à savoir: Shift-Ins colle la sélection dans un xterm, si vous voulez non seulement couper du texte, mais aussi le coller.
dirkt

Réponses:

7

Si vous utilisez xtermou un dérivé, vous pouvez configurer les raccourcis clavier pour démarrer et terminer une sélection de texte et l'enregistrer en tant que sélection principale X11 ou tampon de coupe. Tu vois man xterm. Par exemple, ajoutez à votre ~/.Xdefaults:

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Vous ne pouvez avoir qu'une seule XTerm*VT100.Translationsentrée. Mettez à jour le serveur X11 avec le nouveau contenu du fichier avec xrdb -merge ~/.Xdefaults. Commencez un nouveau xterm.

Maintenant, lorsque vous avez une entrée à l'invite de commande, taper 1sur le pavé numérique commencera à sélectionner le texte à la position actuelle du curseur de texte, un peu comme le bouton 1 vers le bas de la souris. Déplacez le curseur avec les touches fléchées puis appuyez 2sur le pavé numérique et le texte intermédiaire est mis en surbrillance et copié dans la sélection principale et le tampon de coupure0. De toute évidence, d'autres touches et actions plus appropriées peuvent être choisies. Vous pouvez également coller la sélection avec des liaisons comme insert-selection(PRIMARY).

meuh
la source
C'est bien! Je ne savais pas que tu pouvais faire ça. Très utile! Est-il possible de l'utiliser en konsole?
Sancho Pancho du
2
J'ai jeté un coup d'œil au manuel de konsole mais il ne mentionne pas ce type de contrôle. Il est peu probable que vous trouviez cela dans la plupart des émulateurs de terminaux, car ils préfèrent fournir des paramètres plus simples à gérer via les menus et les boîtes de dialogue.
meuh
La translationsressource est la fonctionnalité X Toolkit à laquelle il est fait allusion ici et là et qui n'a pas d'équivalent dans d'autres toolkits. Cependant, vous pouvez basculer entre les ensembles de traductions à l'aide de la keymapfonction (en notant le commentaire sur "Vous ne pouvez en avoir qu'une").
Thomas Dickey
Merci pour tous vos commentaires. Je n'ai toujours pas découvert le presse-papiers ctrl-k / ctrl-y, est-ce que quelqu'un sait comment y accéder ou où enregistre-t-il réellement le texte coupé?
Sancho Pancho
@SanchoPancho En fonction de votre csh, il implémente un kill-ring interne qui conserve le texte coupé et lui fournit les liaisons yank et yank-pop. Je ne pense pas que vous ayez d'autre accès à cette bague. voir l' homme csh .
meuh