2012-05-07 07:44:30 +0000 2012-05-07 07:44:30 +0000
196
196

Pourquoi les touches Ctrl + V ne sont-elles pas collées dans le Bash (shell Linux) ?

Quand je copie quelque chose dans le presse-papiers et que j'appuie sur Ctrl + V dans le Bash, rien ne se passe ; Cependant, un clic droit et la sélection de Coller font le travail.

Pourquoi ? Y a-t-il un problème raisonnable (j'en suis sûr) derrière ce comportement sous Linux ?

Réponses (7)

364
364
364
2012-05-07 08:03:14 +0000

À l'époque des terminaux physiques, il n'existait pas de presse-papiers pour l'ensemble de la session, seuls quelques programmes permettaient le copier/coller interne - souvent sous le nom de “buffers” ou “kill rings” - et utilisaient diverses frappes différentes. Par exemple, le shell bash utilise CtrlK ou CtrlU pour “tuer” (couper), CtrlY pour “tirer” (coller) ; cela vient de l'éditeur emacs .

CtrlC presque partout dans Unix était la touche “interruption” , utilisée pour annuler le programme ou l'opération en cours. La touche CtrlV signifiait souvent “verbatim insert” - c'est-à-dire, insérer le caractère suivant littéralement sans effectuer d'action associée. Par exemple, une touche Esc normale passe en mode commande dans l'éditeur vi, mais CtrlV, Esc insérera le caractère ESC dans le document.

L'utilisation de CtrlC pour copier et CtrlV pour coller à partir du presse-papiers de la session a été introduite par Mac OS en 1983 et Microsoft Windows 3.x en 1990. (Les versions antérieures de Windows (1.x et 2.x), ainsi que IBM OS/2, ne supportaient que les touches IBM CUA CtrlIns pour copier et ShiftIns pour coller ; ces raccourcis restent supportés par toutes les versions de Windows)

Lorsque les interfaces graphiques avec support du presse-papiers ont finalement atteint Unix, les touches Ctrl étaient déjà utilisées par de nombreux programmes de terminal. De plus, l'interface graphique X avait quelque peu différents mécanismes : “sélections” et “couper les tampons”. Même maintenant, vous pouvez sélectionner du texte dans un programme et l'insérer en utilisant le bouton central de la souris, sans aucune action de copie explicite.

En bref, au moment où Xterm et GNOME Terminal ont été écrits (je suppose que vous utilisez ce dernier), CtrlV avait déjà une signification complètement différente depuis de nombreuses années et ne pouvait pas être modifié. De plus, une méthode alternative de copie de texte - la “sélection” - était déjà présente dans X11, donc une action explicite de copier/coller était probablement considérée comme moins importante que dans Windows. Cela signifie que différents raccourcis clavier ont dû être sélectionnés - par exemple, la plupart des programmes de terminal modernes, comme GNOME Terminal, utilisent CtrlShiftC et CtrlShiftV. (Si vous utilisez Xterm, les mêmes raccourcis peuvent être ajoutés manuellement en utilisant la XTerm*vt100*translations Xresource. Rxvt ne dispose pas d'une telle option)

(La plupart des boîtes à outils X11 prennent également en charge les touches “copier” et “coller” de la CUA, qui n'entrent pas en conflit avec les programmes de terminal. Malheureusement, les implémentations sont plutôt incohérentes - CtrlIns copie dans le “presse-papiers” dans la plupart des programmes (GTK, Qt4, mais ignoré par Xaw) ; cependant, ShiftIns colle à partir de la “sélection primaire” dans la plupart des programmes GTK et Qt4, mais à partir du “presse-papiers” dans Firefox, et à partir des cut-buffers maintenant obsolètes dans le Xaw maintenant obsolète. )


Tout cela dit, certains terminaux ou consoles (en particulier la console Windows 10) do supportent ces clés. Comme la console Windows a toujours eu un mode “marquer/sélectionner” séparé, CtrlC a maintenant deux significations basées sur le contexte - en mode normal, il envoie une interruption, en mode sélection, il copie dans le presse-papiers (comme Enter).

Pendant ce temps, les outils de ligne de commande de Windows n'ont jamais vraiment utilisé CtrlV pour quoi que ce soit, donc il était obligé de “coller” sans déranger grand chose. Faire la même chose sur des terminaux de type Unix serait cependant plus problématique.

48
48
48
2012-05-07 07:45:55 +0000

Utilisez CtrlShiftV pour coller.

Ctrl avec d'autres caractères est généralement utilisé par le shell pour des fonctions spéciales.

21
21
21
2012-05-07 21:22:43 +0000

Voici vos paramètres de copier-coller à usage général avec les terminaux les plus courants :

terminal nominal (le plus courant sous Linux) Copie : CtrlShiftC Coller : CtrlShiftV Note : Sélectionner pour copier et cliquer au milieu pour coller fonctionne également, mais il utilise un presse-papiers alternatif.

PuTTY (terminal le plus populaire sous Windows) Copy : (sélection avec la souris, pas d'interaction avec le clavier) Caste : Clic droit (ou plus fiable : shiftClic droit) Note : Les applications qui prennent la saisie de la souris (comme vim et links) peuvent voler le clic droit – shiftRight-click fonctionnera toujours dans n'importe quelle application

Terminal OSX Copie : AppleC Coller : AppleV Note: Les applications qui prennent le contrôle de la souris (comme vim et links) peuvent outrepasser ce que signifie sélectionner du texte, auquel cas la copie ne fonctionnera pas comme vous l'attendez. Dans ce cas, maintenez la touche Ctrl enfoncée pendant que vous faites glisser la souris pour sélectionner. L'interaction de la souris avec les applications est désactivée par défaut dans les paramètres de votre terminal, de sorte que la plupart des gens ne le sauront même pas.

17
17
17
2012-05-07 14:34:50 +0000

C'est une tradition profondément enracinée que la touche Ctrl associée à une lettre génère des caractères de contrôle ASCII trouvés en soustrayant 64 de la valeur ASCII de la lettre majuscule. Ce calcul fait correspondre Ctrl-A à 1, et ainsi de suite. Par exemple, Ctrl-I est Tab et Ctrl-J est un saut de ligne.

Il n'existe pas de tradition similaire pour Ctrl-Maj. Ctrl-Maj-V n'est pas censé produire un caractère spécifique.

Les émulateurs de terminal doivent soutenir la tradition en passant de manière transparente par la convention Ctrl, en la laissant apparaître comme une entrée de caractère dans les programmes exploités par cette fenêtre de terminal. Les programmes basés sur les terminaux font correspondre les clés de contrôle aux commandes. Par exemple, Bash utilise Ctrl-V comme commande, ce qui signifie “prendre le caractère suivant littéralement”. Cela vous permet d'intégrer un caractère de contrôle dans la ligne de commande. Si le terminal vole des clés de contrôle pour son propre usage, ces commandes deviennent indisponibles. Il est donc hors de question d'intercepter Ctrl-V pour une méta-fonction (du moins dans une configuration par défaut).

Cependant, les émulateurs de terminal sont libres d'intercepter Ctrl-Maj-V qui ne devrait pas générer de caractère. Ctrl-Shift-V n'est pas un standard ; c'est un truc de Gnome Terminal (qui peut se trouver dans d'autres terminaux).

Sur les bureaux Unix basés sur X, la convention est qu'aucune commande n'est nécessaire pour copier. Il suffit de sélectionner le texte. Et le bouton du milieu permet de coller ce texte ailleurs. Vous constaterez que cela fonctionne aussi bien dans Xterm, Gnome Terminal et Firefox.

Ctrl-V est une convention de Microsoft Windows, qui est une imitation de Apple-V du Macintosh.

3
3
3
2015-08-03 12:57:48 +0000

Pour moi, la façon la plus simple de copier-coller dans le shell est la suivante :

Sélectionnez le code que vous voulez, puis passez-le en cliquant sur la touche du milieu de la souris

2
2
2
2015-05-08 13:42:05 +0000

Nous pouvons utiliser la touche d'insertion du clavier pour faire du copier-coller (dans les anciens claviers, elle peut être manquante)

Copy : CtrlInsert Coller : CtrlShiftInsert

1
1
1
2015-05-19 16:08:05 +0000

vous pouvez également utiliser le bouton du milieu et une souris si vous vous sentez paresseux et sélectionner une commande dans un document texte, un script ou sur le web ou un forum. une fois que vous avez sélectionné la commande voulue, il vous suffit de vous rendre sur votre terminal et de cliquer sur le bouton du milieu de la souris. J'utilise cette méthode comme j'utilise le logiciel Puppy Linux qui ne semble pas supporter le comportement normal du clic droit et du collage. il le fait dans une fenêtre de gestionnaire de fichiers, mais pas dans une fenêtre de terminal. je ne sais pas pourquoi, mais je suis plutôt content d'avoir découvert la méthode du bouton du milieu, très pratique ! ;-)