Cuando copio algo en el portapapeles y presiono Ctrl+ Ven Bash, no sucede nada; Sin embargo, hacer clic derecho y seleccionar Pegar hace el trabajo.
¿Por qué? ¿Hay algún problema razonable (estoy seguro de que hay) detrás de este comportamiento en Linux?
linux
bash
keyboard-shortcuts
copy-paste
Yasser Zamani
fuente
fuente
Shift
-Insert
también funcionaCtrl-Shift-V
personalmente.Respuestas:
En los días de las terminales físicas , los portapapeles de toda la sesión no existían, solo unos pocos programas admitían copiar / pegar internamente, a menudo bajo el nombre de "buffers" o "kill rings", y usaban varias teclas diferentes. Por ejemplo, el shell bash usa CtrlKo CtrlUpara "matar" (cortar), CtrlYpara "tirar" (pegar); esto viene de la emacs editor .
CtrlCCasi en todas partes en Unix estaba la tecla "interrupción" , utilizada para cancelar el programa u operación actual. La CtrlVclave a menudo significaba "inserción literal", es decir, inserte el siguiente carácter literalmente sin realizar ninguna acción asociada. Por ejemplo, una normal Esccambia al modo en el comando vi editor, pero CtrlV, Escva a insertar el
ESC
carácter en el documento.Mac OS introdujo el uso de CtrlCcopiar y CtrlVpegar desde el portapapeles de toda la sesión en 1983 y Microsoft Windows 3.x en 1990. (Versiones anteriores de Windows (1.xy 2.x), así como IBM OS / 2 , solo admite las claves CUA de IBMCtrlIns para copiar y ShiftInspegar; estos accesos directos siguen siendo compatibles con todas las versiones de Windows).
Cuando las GUI con soporte para portapapeles finalmente llegaron a Unix, Ctrlmuchos programas de terminal ya usaban las pulsaciones de teclas. Además, la interfaz gráfica X tenía mecanismos algo diferentes : "selecciones" y "cortar buffers". Incluso ahora puede seleccionar texto en un programa e insertarlo con el botón central del mouse, sin ninguna acción de copia explícita.
En resumen, cuando se escribieron Xterm y GNOME Terminal (supongo que usas este último), CtrlV ya tenían un significado completamente diferente durante muchos años y no se podían cambiar. Además, un método alternativo para copiar texto, la "selección", ya estaba presente en X11, por lo que la acción explícita de copiar / pegar probablemente no se consideró tan importante como lo sería en Windows. Esto significa que se tuvieron que seleccionar diferentes métodos abreviados de teclado, por ejemplo, la mayoría de los programas de terminal modernos, como GNOME Terminal, usan CtrlShiftCy CtrlShiftV. (Si usa Xterm, los mismos atajos se pueden agregar manualmente usando las traducciones de XTerm * vt100 * Xresource. Rxvt no tiene esa opción).
(La mayoría de los kits de herramientas X11 también admiten las teclas CUA "copiar" y "pegar", que no entran en conflicto con los programas de la terminal. Desafortunadamente, las implementaciones son bastante inconsistentes: CtrlInscopias en el "portapapeles" en la mayoría de los programas (GTK, Qt4, pero ignorado por Xaw); sin embargo, ShiftInspega desde la "selección primaria" en la mayoría de los programas GTK y Qt4, pero desde el "portapapeles" en Firefox, y desde los búferes de corte ahora obsoletos en el ahora obsoleto Xaw).
Dicho todo esto, algunos terminales o consolas (en particular, la consola de Windows 10) hacen apoyar estas teclas. Como la consola de Windows siempre tenía un modo "marcar / seleccionar" separado, CtrlCahora también tiene dos significados basados en el contexto: en el modo normal, envía una interrupción, en el modo de selección copia al portapapeles (como Entersolía hacerlo).
Mientras tanto, las herramientas de línea de comandos de Windows nunca se usaron realmente CtrlVpara nada, por lo que estaba obligado a "pegar" sin molestar mucho. Sin embargo, hacer lo mismo en terminales tipo Unix sería más problemático.
fuente
<C-v>
ai
la versión 3, pero no pude poner mi dedo sobre por qué .Úselo CtrlShiftVpara pegar.
Ctrl con otros caracteres generalmente es utilizado por el shell para funciones especiales.
fuente
bash
sí mismo. Si alguna vez está fuera de un entorno de GUI, o si está utilizando otro término emulador, esto probablemente no funcionará. No pienses que este comando es portátil.Aquí está su configuración de copiar y pegar de uso general con terminales populares:
gnome-terminal (más popular en Linux)
Copiar : CtrlShiftC
Pegar : CtrlShiftV
Nota : Seleccionar para copiar y middle-clickpegar también funciona, pero utiliza un portapapeles alternativo.
PuTTY (terminal más popular en Windows)
Copia : (seleccionar con el ratón, sin interacción con el teclado)
Pegar : Right-click (o de forma más fiable: shiftRight-click)
Nota : Las aplicaciones que se llevan a la entrada del ratón (como
vim
ylinks
) puede robar Right-click- shiftRight-clicksiempre van a trabajar en cualquier aplicación.OSX Terminal
Copy : AppleC
Paste : AppleV
Nota: las aplicaciones que toman el control del mouse (como
vim
ylinks
) pueden anular lo que significa seleccionar texto, en cuyo caso la copia no funcionará de la manera esperada. En esos casos, mantenga presionado Controlmientras arrastra el mouse para seleccionar. La interacción del mouse con las aplicaciones está deshabilitada de forma predeterminada en la configuración de su terminal, por lo que la mayoría de las personas ni siquiera lo sabrán.fuente
cmd.exe
más popular que PuTTY en Windows? :-)cmd.exe
no es un terminal SSH. Eso es muy cierto.cmd.exe
(y es la única forma de hacerlo, si no desea abrir el menú> editar> pegar) en el modo de edición rápida . No hay acceso directo en el símbolo del sistema anterior a win10Es una tradición muy arraigada que la Ctrlclave junto con una letra genera caracteres de control ASCII encontrados al restar 64 del valor ASCII de la letra mayúscula. Este cálculo mapas Ctrl- Aa 1, y así sucesivamente. Por ejemplo Ctrl- Ies Taby Ctrl- Jes salto de línea.
No existe una tradición similar para Ctrl- Shift. Ctrl- Shift- Vno se espera que produzca ningún carácter específico.
Los emuladores de terminal deben apoyar la tradición al pasar de manera transparente a través de la Ctrlconvención, permitiendo que aparezca como entrada de caracteres a 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- Vcomo un comando que significa "tomar el siguiente carácter literalmente". Esto le permite incrustar un carácter de control en la línea de comando. Si el terminal roba las teclas de control para su propio uso, dichos comandos no estarán disponibles. Entonces, interceptar Ctrl, Vporque una metafunción está fuera de discusión (al menos en una configuración predeterminada).
Sin embargo, los emuladores de terminal son libres para interceptar Ctrl- Shift- Vque no se espera que genere un personaje. Ctrl- Shift- Vno es un estándar; es una cosa de Terminal Gnome (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. Simplemente selecciona el texto. Y el botón central pega ese texto en otra parte. Encontrará que funciona en Xterm, Gnome Terminal y Firefox por igual.
Ctrl- Ves una convención de Microsoft Windows, que es una imitación de Apple- Vde Macintosh.
fuente
<kbd>
etiquetas en publicaciones futuras.Ctrl-A
es1
. ¿Cómo puedo probar esto? Mi terminal Gnome no hace nada cuando presionoCtrl-A
.Para mí, la forma más simple de copiar y pegar en el shell es:
Seleccione el código que desee y péguelo haciendo clic en el mouse-middle-key
fuente
xdotool click 2
para emular el clic del tercer botón por ti. Luego, en cualquier entorno de escritorio / administrador de ventanas en el que se encuentre, puede vincular este script a una tecla, por ejemplomod
i
(para insertar) o cualquier asociación de teclas que pueda tener disponible (o cualquier modificación que pueda significar, lo que realmente depende de dónde vincula esto)Podemos usar el botón de insertar teclado para copiar y pegar (en teclados antiguos puede faltar)
Copiar : CtrlInsert
Pegar :CtrlShiftInsert
fuente
También puede usar el botón central y un mouse si se siente flojo y seleccionar un comando de un documento de texto, script o web o foro. Una vez que haya seleccionado el comando deseado, simplemente muévase a su terminal y haga clic en el botón central del mouse. Utilizo este método ya que utilizo puppy linux que no parece soportar el comportamiento normal de hacer clic derecho y pegar. lo hace en una ventana de controlador de archivos, simplemente no en una ventana de terminal. No sé por qué, pero estoy bastante contento de haber descubierto el método del botón central, ¡muy útil! ;-)
fuente