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

¿Por qué Ctrl + V no se pega en el Bash (shell de Linux)?

Cuando copio algo en el portapapeles y presiono Ctrl + V en el Bash, no pasa nada; Sin embargo, al hacer clic derecho y seleccionar Pegar hace el trabajo.

¿Por qué? ¿Hay algún problema razonable (estoy seguro de que lo hay) detrás de este comportamiento en Linux?

Respuestas (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

Usa CtrlShiftV para pegar.

Ctrl con otros caracteres es usualmente usado por el shell para funciones especiales.

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

Aquí está su configuración de copia y pegado de propósito general con terminales populares:

terminal de nombre (más popular en Linux) Copia : CtrlShiftC Pegar : CtrlShiftV Nota : Seleccionar para copiar y hacer clic en el medio para pegar también funciona, pero usa un portapapeles alternativo.

PuTTY (terminal más popular en Windows) Copiar : (seleccionar con el ratón, sin interacción con el teclado) Pegar : Clic-derecho (o más fiable: shiftRight-clic) Nota : Las aplicaciones que toman la entrada del ratón (como vim y links) pueden robar el Right-click – shiftRight-click siempre funcionará en cualquier aplicación.

Terminal OSX Copiar : AppleC Pegar : AppleV Nota: Las aplicaciones que toman el control del ratón (como vim y links) pueden anular lo que significa seleccionar el texto, en cuyo caso copiar no funcionará de la manera que usted espera. En esos casos, mantén pulsada la tecla Control mientras arrastras el ratón para seleccionar. La interacción del ratón con las aplicaciones está desactivada de forma predeterminada en la configuración de tu terminal, por lo que la mayoría de la gente ni siquiera se enterará de esto.

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

Es una tradición muy arraigada que la tecla Ctrl, junto con una letra, genera caracteres de control ASCII que se encuentran restando 64 del valor ASCII de la letra mayúscula. Este cálculo asigna Ctrl-A a 1, y así sucesivamente. Por ejemplo, Ctrl-I es Tab y Ctrl-J es salto de línea.

No existe una tradición similar para Ctrl-Shift. Ctrl-Shift-V no se espera que produzca ningún carácter específico.

Los emuladores de terminales deben apoyar la tradición pasando de forma transparente por la convención Ctrl, dejando que aparezca como entrada de caracteres en los programas que se operan a través de esa ventana de terminal. Los programas basados en terminales asignan las teclas de control a los comandos. Por ejemplo, Bash usa Ctrl-V como comando que significa “tomar el siguiente carácter literalmente”. Esto le permite incrustar un carácter de control en la línea de comandos. Si la terminal roba las claves de control para su propio uso, tales comandos no estarán disponibles. Así que interceptar Ctrl-V para una meta-función está fuera de discusión (al menos en una configuración por defecto).

Sin embargo, los emuladores de terminales son libres de interceptar Ctrl-Shift-V que no se espera que genere un carácter. Ctrl-Shift-V no es un estándar; es una cosa de terminal de gnomos (que puede estar en algunas otras terminales)

En los escritorios Unix basados en X la convención es que no se necesita ningún comando para copiar. Sólo se selecciona el texto. Y el botón del medio pega ese texto en otro lugar. Encontrará que funciona tanto en Xterm, Gnome Terminal y Firefox.

Ctrl-V es una convención de Microsoft Windows, que es una imitación de Apple-V de la Macintosh.

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

Para mí, la forma más simple de copiar y pegar en la cáscara es:

Selecciona el código que quieras y luego pásalo haciendo clic en la tecla media del ratón

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

Podemos usar el botón de insertar el teclado para hacer copiar y pegar (En los teclados antiguos puede faltar)

Copiar : CtrlInsertar Pegar : CtrlShiftInsert

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

También puedes usar el botón del medio y el ratón si te sientes perezoso y seleccionar un comando de un documento de texto, guión o web o foro. Una vez que hayas seleccionado el comando deseado, simplemente muévete a tu terminal y haz clic en el botón del medio del ratón. Yo uso este método porque uso puppy linux que no parece soportar el comportamiento normal de hacer clic derecho y pegar. Lo hace en una ventana del manejador de archivos, pero no en una ventana de terminal. No sé por qué, pero estoy muy contento de haber descubierto el método del botón del medio, ¡muy útil! ;-)