Terminal: Copiar y pegar combinaciones de teclas

Creado en 24 may. 2019  ·  60Comentarios  ·  Fuente: microsoft/terminal

Medio ambiente

Windows build number: 10.0.18362.86
Windows Terminal version (if applicable):

pasos para reproducir

En la consola estándar de Windows 10, puede habilitar el uso de Ctrl + C / V para copiar y pegar. Windows Terminal no tiene esto y es extremadamente frustrante.

Comportamiento esperado

Habilite el uso de Ctrl + C para copiar y Ctrl + V para pegar.

Comportamiento real

Ctrl + C no copia nada, y Ctrl + V simplemente escribe ^ V en el indicador.

Area-User Interface Help Wanted Issue-Task Needs-Tag-Fix Product-Terminal

Comentario más útil

Me gusta la forma en que WSL + Bash maneja copiar / pegar. Ctrl + C solo copia cuando se selecciona algo. Si no se selecciona nada, Ctrl + C se comporta como de costumbre y envía un SIGINT.

Todos 60 comentarios

Esto suena bien en el callejón de @ carlos-zamora

O en realidad, cualquiera podría subirse a esto. Le gustaría configurar acciones de copiar y pegar en App.cpp (como _Scroll , por ejemplo) que desencadenan las acciones apropiadas en TermControl. Ya debería haber Copiar y Pegar ShortcutActions, por lo que es solo una cuestión de registrar valores predeterminados para ellos y conectar las acciones a los enlaces (ver HookupKeyBindings o similar en App.cpp).

Debo insistir en que los enlaces predeterminados para esto no sean solo Ctrl+ .

Agh, lo siento. No tenía la intención de cerrar este problema.

Debo insistir en que los enlaces predeterminados para esto no sean solo Ctrl+ .

Sé por qué estás diciendo eso, y por eso, por supuesto, la consola normal lo tiene detrás de una configuración que uno debe habilitar. Pero tenerlos detrás de Ctrl + Shift o algo similar frustra el propósito. Es la memoria muscular la que hace que valga la pena tener estas combinaciones de teclas.

Para mí, hacer que Ctrl + V ingrese ^V nunca ha sido útil y sospecho que esto es cierto para un número muy significativo de personas. ¿Sería posible habilitar esto como configuración?

Quizás necesitemos combinaciones de teclas específicas del perfil. En este momento, todos los enlaces se pueden volver a unir: sonrisa:

Me gusta la forma en que WSL + Bash maneja copiar / pegar. Ctrl + C solo copia cuando se selecciona algo. Si no se selecciona nada, Ctrl + C se comporta como de costumbre y envía un SIGINT.

@namatoj Eso es perfecto; exactamente como debería ser.

Supongo que al menos deberíamos admitir Ctrl-Insert / Shift-Insert / Shift-Delete si Ctrl-C / V / X puede tener conflictos.

En mi opinión, las opciones deberían ser:

  • Comportamiento "inteligente", donde CTRL-C es copiar solo si se selecciona algo.
  • Comportamiento personalizado, con combinaciones de teclas predeterminadas en CTRL-SHIFT-C / V.
  • Sin comportamiento, la copia está disponible en el menú contextual en la selección.

Toda la discusión sobre " CTRL + C se copia solo si se selecciona algo" ignora CTRL + V ; no hay ningún indicador para saber que _debemos_ pegar, y si uno valora la coherencia por encima de todo, es problemático decir "Solo CTRL + C funciona cuando X, pero CTRL + V funciona siempre ". La alternativa, " CTRL + C si se selecciona, CTRL + MAYÚS + V para pegar siempre" tampoco es particularmente consistente.

Pero CTRL-C es universalmente "enviar un SIGINT", hay una gran ambigüedad allí. La terminal de Ubuntu resuelve esto usando CTRL-SHIFT-C / V para copiar / pegar; la terminal MacOS lo resuelve usando CMD-C para copiar y CTRL-C para interrumpir.

CTRL-V no tiene tal conflicto. Algunos usuarios de emacs pueden vincularlo a cosas, pero si eres lo suficientemente un usuario avanzado de emacs para volver a vincular claves, probablemente estés usando el bloqueo de mayúsculas como tu meta clave de todos modos.

Creo que el riesgo principal de hacer que el comportamiento "inteligente" sea el predeterminado es que los usuarios interrumpan accidentalmente un proceso porque no hicieron su selección. Si eso es una preocupación o queremos coherencia, entonces diría que simplemente copie Ubuntu y haga los enlaces predeterminados para CTRL-SHIFT-C / V.

Al implementar combinaciones de teclas personalizadas por perfil, esto podría permitir que los atajos de teclado predeterminados de Ubuntu se comporten como deberían, o permitir que el usuario los cambie para permitir que los atajos del portapapeles de Windows se comporten como deberían.

@mikepurvis El https://github.com/Eugeny/terminus donde muestra una pequeña ventana emergente para indicar que el texto se ha copiado o pegado.

@mikepurvis El https://github.com/Eugeny/terminus donde muestra una pequeña ventana emergente para indicar que el texto se ha copiado o pegado.

La información sobre herramientas para Copiado sería buena, especialmente cuando Ctrl + C no siempre está asignado a Copiar

Gnome Terminal tiene una combinación de teclas consistente que no es intuitiva al principio, pero es fácil de adoptar y no está muy lejos del habitual CTRL + C para copiar.

CTRL + C : Cancelar
CTRL + Mayús + C : Copiar
CTRL + Shift + V : Pegar

No hay lógica para la selección, siempre funciona de una manera específica. Creo que es perfecto. También armonizaría con otros sistemas operativos, ya que este comportamiento es coherente en Linux y MacOS .

Realmente, no creo que tengamos ninguna excusa ya que el símbolo del sistema usa Enter para copiar y clic derecho para pegar.

@NatoBoram Eso está bien como una opción. Pero a muchas personas les gusta el comportamiento inteligente. En cualquier otro lugar de Windows, Ctrl + C es copiar y es difícil ajustar el comportamiento de una aplicación, así que quiero el comportamiento inteligente.

Además, dado que el Conhost también vive aquí; los efectos de pegar texto obtenido con Ctrl+C y Ctrl+Shift+C tienen efectos diferentes.

image

La forma en que se lee el búfer es correcta para Ctrl+C también conocido como el atajo de comportamiento inteligente (es decir, con los finales de línea).

Todas las aplicaciones similares a terminal tienen este problema ( CMD , Powershell , WLS -apps) y dado que el cerebro detrás de todas ellas vive aquí, pensé que Lo publicaría.

En cualquier otro lugar de Windows, Ctrl + C es copiar

Y en Linux y MacOS. Windows no es diferente en ese sentido.

Es difícil ajustar el comportamiento de una aplicación.

Sí, por eso Microsoft decidió que sería una gran idea usar Enter para copiar y Click derecho para pegar.
*Ejem*
Quiero decir, es difícil ajustar el comportamiento de un sistema operativo. 🧂

Lanzar otro voto (aunque el tema está cerrado) para una opción de configurar el comportamiento inteligente. Por mi parte, configuraría el comportamiento inteligente para copiar y CTRL+v para pegar siempre. Si tengo el texto resaltado y quiero enviar un SIGINT, espero presionar ESC y luego CTRL+c .

Lo mismo aquí, me encantaría una opción para hacer ctrl + v pegar siempre, y ctrl + c para copiar cuando se selecciona y SIGINT cuando no existe selección. Este es el comportamiento que tengo actualmente en conemu.

: tada: este problema se abordó en el # 1093, que ahora se ha publicado con éxito como Windows Terminal Preview v0.3.2142.0 .: tada:

Enlaces útiles:

🎉Este problema se solucionó en el número 1093, que ahora se ha publicado con éxito como Windows Terminal Preview v0.3.2142.0 .🎉

Enlaces útiles:

* [Release Notes](https://github.com/microsoft/terminal/releases/tag/v0.3.2142.0)

* [Store Download](https://www.microsoft.com/store/apps/9n0dx20hk701?cid=storebadge&ocid=badge)

Agregar estas combinaciones de teclas hace el truco

{
                "command" : "copy",
                "keys" : 
                [
                    "ctrl+shift+c"
                ]
},
{
                "command" : "paste",
                "keys" : [
                    "ctrl+shift+v"
                ]
}

¿Cómo es que nadie pensó en hacer esto de la manera masilla? Actualmente, toda la base de usuarios usa masilla o cygwin. Seleccione para copiar, haga clic derecho para pegar. Nada mas facil.
Editar: se eliminó el comentario de mala educación. Lo siento

nadie pensó en

¿Te refieres a # 524 y # 2152 (que es una solicitud de extracción de uno de los miembros del equipo?)

En una pequeña nota al margen, ¿por qué pegar texto copiado con Ctrl+C y Ctrl+Shift+C parece tener efectos diferentes en PowerShell (descrito anteriormente en uno de los comentarios, repetido aquí, 🙈 lo siento!)?

Personalmente, prefiero el comportamiento de copia "tonto", es decir, un enlace separado para él en lugar de un enlace ctrl + c (generalmente SIGINT) para copiar, cuando se selecciona algo y se juega con el comportamiento predeterminado de muchos shells. Esto puede volverse molesto cuando apaga accidentalmente la aplicación, que se está ejecutando en primer plano, cuando solo intenta copiar algo. ¡La implementación actual es excelente!

Agregué enlaces para Ctrl + C (que copia si se selecciona y envía un SIGINT) y Ctrl + V que funcionan perfectamente bien y son muy intuitivos para mí.

Como dijo @aolchawa , agregando

        {
            "command" : "copy",
            "keys" : 
            [
                "ctrl+c"
            ]
        },
        {
            "command" : "paste",
            "keys" : [
                "ctrl+v"
            ]
        }

a las combinaciones de teclas da como resultado el comportamiento "inteligente" de @mikepurvis definido anteriormente.
No entiendo completamente cómo la terminal elige entre SIGINT y Ctrl + C en este momento, no veo un cambio en # 1093, que define esto, veo en la línea 46 que ahora estamos pasando trimWhitespace a CopyTextEventArgs .
Supongo que debe ser la parte del cambio que provoca el comportamiento deseado (para mí).
No parece haber una configuración en profiles.json o el esquema de perfil que se pueda aprovechar para alternar el comportamiento.

En cualquier caso, este es el comportamiento que yo estaba buscando; Con suerte, mi divagación aquí le ahorrará a alguien unos momentos de búsqueda en las relaciones públicas para averiguar qué está pasando.

@ltomes Entonces, el cambio que hizo que Terminal eligiera entre SIGINT y Ctrl + C fue en realidad # 2446. Ahora, el título es un poco engañoso: lo que realmente implementa es "si una acción de combinación de teclas dice que no hizo nada (o que no se manejó), déle al Terminal una segunda oportunidad para manejarlo". :sonreír:

¡Gracias por el seguimiento / explicación @ DHowett-MSFT! Me siento más cuerdo ahora al ver ese cambio, pensé que estaba demasiado cansado para funcionar. 🤣

Gracias por las combinaciones de teclas.
Ahora Windows Terminal funciona como Windows cmd. :) (De hecho, me sorprendió que no funcionara como el cmd predeterminado de Windows)

Gnome Terminal tiene una combinación de teclas consistente que no es intuitiva al principio, pero es fácil de adoptar y no está muy lejos del habitual CTRL + C para copiar.

CTRL + C: Cancelar
CTRL + Mayús + C: Copiar
CTRL + Shift + V: Pegar

No hay lógica para la selección, siempre funciona de una manera específica. Creo que es perfecto. También armonizaría con otros sistemas operativos, ya que este comportamiento es coherente en Linux y MacOS .

Realmente, no creo que tengamos ninguna excusa ya que el símbolo del sistema usa Enter para copiar y clic derecho para pegar.

Siempre anulo Gnome Terminal para usar CTRL + C / CTRL + V en su lugar. Tener esta única aplicación usando diferentes enlaces para copiar / pegar que el resto de todo el sistema me enfurece.

La solución alternativa mediante la adición manual de combinaciones de teclas es útil, pero llamemos a las cosas por su nombre: el problema no se resuelve hasta que haya combinaciones de teclas predeterminadas ubicuas para la función de copiar y pegar. Que, por supuesto, debería poder anularse. Y debe estar documentado con seguridad.

¿Alguna razón en particular para que Ctrl + Insert se registre como ;5~ y Shift + Insert se registre como ;2~ y, por lo tanto, no funcione como combinación de teclas para copiar / pegar?

Me encantan estas teclas y no puedo entender por qué no deberían funcionar.

@darthcabs ¿Le importaría compartir su archivo de configuración? Lo único que me viene a la mente es que es posible que esté utilizando enlaces con cuerdas en lugar de enlaces individuales:

ataduras con cuerdas (esto no funcionará, y cuando lo haga, no tendrá el efecto deseado)

"keybindings": [
    { "command": "copy", "keys": ["ctrl+shift+c", "shift+ins"] }
]

enlaces individuales (esto debería funcionar; # 3324 sugiere un problema que no podemos reproducir)

"keybindings": [
    { "command": "copy", "keys": ["ctrl+shift+c"] },
    { "command": "copy", "keys": ["shift+ins"] }
]

@ DHowett-MSFT Le estaba respondiendo cuando me di cuenta de cuál era el problema ... En el teclado de mi computadora portátil, la tecla INS es la misma que la tecla F12.

Antes intentaba escribir INS presionando FN + F12, pero resulta que es más fácil mapear copiar / pegar en Terminal a ctrl + f12 / shift + f12 respectivamente.

¡Muchas gracias por la inspiración, jejeje!

@darthcabs ¿Le importaría compartir su archivo de configuración? Lo único que me viene a la mente es que es posible que esté utilizando enlaces con cuerdas en lugar de enlaces individuales:

ataduras con cuerdas (esto no funcionará, y cuando lo haga, no tendrá el efecto deseado)

"keybindings": [
  { "command": "copy", "keys": ["ctrl+shift+c", "shift+ins"] }
]

enlaces individuales (esto debería funcionar; # 3324 sugiere un problema que no podemos reproducir)

"keybindings": [
  { "command": "copy", "keys": ["ctrl+shift+c"] },
  { "command": "copy", "keys": ["shift+ins"] }
]

Para mí, lo que funcionó es shift+insert , no shift+ins - publicar aquí en caso de que ayude a alguien.

Como podemos ver, este es un problema que ocurre constantemente porque no es intuitivo. Ver https://github.com/ayugioh2003/today-i-learned/issues/281

Ctrl + C, Ctrl + V debería "simplemente funcionar", y no hay forma de evitar eso. Los usuarios han emitido (y siguen cumpliendo) su veredicto.

Y como la nueva herramienta de línea de comandos (no esta) funciona "correctamente", es decir. como se esperaba, este también debería hacerlo. Si a los desarrolladores les gusta otro escenario, agréguelo como configuración y deje que el comportamiento popular sea el predeterminado.

Agradezco tu aporte aquí. ¡Gracias! Solo para subrayar un par de puntos:

  • ¡Es un escenario hoy! Estas combinaciones de teclas se pueden configurar en profiles.json .
  • Una mirada preliminar al panorama de los usuarios que _han_ personalizado sus perfiles muestra que menos del 1% de los usuarios de Terminal están vinculando ctrl + c / v. Parece que el comportamiento popular se ha establecido como predeterminado.

Pero eso es asumiendo que la gente sepa cómo cambiarlo. Disculpe mis malos modales.

Una métrica más significativa sería cuántos presionaron Ctrl + V teniendo algo
en su portapapeles, y luego obtuve el ^ V, luego lo borró, o simplemente terminó en
saliendo de la aplicación ...

Den tors 19 de marzo de 2020 02:31 Dustin L. Howett (MSFT) [email protected]
skrev:

Para cualquiera que llegue a este hilo de Google: las combinaciones de teclas predeterminadas son Ctrl+Shift+C y Ctrl+Shift+V . No he encontrado estos en mi configuración, por lo que no estaba seguro de cuáles son los predeterminados.

Además, no veo que esto se discuta aquí, pero creo que vale la pena mencionarlo: Ingresar para copiar y hacer clic derecho para pegar tampoco funciona.

Desde el punto de vista de la accesibilidad, tener combinaciones de 3 teclas, o hacer clic en el mouse + tecla es muy difícil, si no imposible, para las personas con una mano o con una función de mano limitada. Esta es una gran razón por la que no puedo usar emacs y me quedo con vi / vim.

El comportamiento predeterminado que hemos tenido en Linux / Xwindows durante los últimos 20 años es el más accesible. Haga doble clic para seleccionar una palabra, haga triple clic en la línea y haga clic con el botón derecho en pegar. Esto parece funcionar dentro de un marco de Terminal, pero no llena de manera confiable el portapapeles. Nota: ConEmu tiene esta funcionalidad: puedo seleccionar texto en una terminal y llena el portapapeles.

@ DHowett-MSFT, también estaba atascado sin entender por qué copiar / pegar no funciona como cualquier otro terminal en Windows o Linux (que es lo que me llevó a este problema de github después de algunas búsquedas). No creo que la gente prefiera esta configuración, simplemente no tienen ni idea de cómo cambiarla y no se sienten cómodos editando el archivo de combinaciones de teclas.

no funciona como cualquier otro terminal en Windows o Linux

Eso es un poco dramático, dado que el comportamiento predeterminado actual de Terminal (Ctrl-Shift-C / V) coincide exactamente con lo que hace el terminal predeterminado en Ubuntu.

Esa es una pregunta de nivel superior; ¿para quién deberíamos optimizar? Claramente no el
usuarios de Windows ...

Den tors 9 abr. 2020 19: 08Mike Purvis [email protected] skrev:

Solo digo que es injusto agarrar nuestras perlas y afirmar que el equipo de Terminal ha hecho una llamada incorrecta aquí porque es diferente de "cualquier otro terminal en Windows o Linux", cuando todos los demás terminales en Windows son un asunto de terceros. y el equipo aquí ha _copiado por defecto lo que la distribución líder de Linux ha estado haciendo desde siempre_.

Y la única razón por la que esto tampoco es un problema en Mac OS es que cmd y ctrl en ese sistema son botones separados.

Todos los puntos justos Mike, pero seamos sinceros, la mayoría de los usuarios de Windows no lo sabrán
cómo pegar en este terminal.

Ese es mi único problema aquí. No solo la mía, sino mucha gente, mucha gente
ser bastante competente en Windows pero sin experiencia con Linux, y
hay un problema con que nadie sepa cuántos. Queremos a esta gente
usar la terminal o descartarla como característica incompleta?

Si estamos contentos con el estado actual de las cosas, al menos,
midamos cuántos intentan pegar pero no pueden.

Si no queremos telemetría en esto, ¿qué tal un pequeño contador y cuándo
lo ha probado 3 veces en 3 minutos, muestre una notificación con un enlace a
este problema.

... Estoy bromeando, instrucciones sobre cómo cambiarlo.

Den tors 9 abr. 2020 19: 57Mike Purvis [email protected] skrev:

Por el bien de la telemetría, acabo de descargar y construir este terminal hoy, y esta es mi única queja importante hasta ahora. Hay una opción en Preferencias que me indica que Ctrl-C / V debería funcionar, pero obviamente no funciona. Habilite la función "Smart Ctrl-C" mencionada anteriormente, ha sido mi queja número uno sobre CMD desde el principio de los tiempos. :)

Quiero señalar que encontré este problema al buscar cómo Windows Terminal implementó copiar y pegar. Una de las mayores quejas que escucho de los desarrolladores que trabajan tanto en Linux como en Windows es que copiar / pegar de Windows es inconsistente con cualquier shell de terceros instalado y entre Linux. Casi todas las distribuciones / terminales de Linux usan ctrl+shift+c/v , así que me alegro de que Windows Terminal también lo tenga configurado como predeterminado.

¿Por qué no tener Ctrl + C / V y Ctrl + Shift + C / V?

@ bjorn-ali-goransson En realidad, solo cambiamos el archivo de configuración predeterminado para incluir ambos, por lo que los usuarios pueden optar por no usar Ctrl + C / Ctrl + V si lo desean.

Vea este PR y # 5187

  • Parece que el comportamiento popular se ha establecido como predeterminado.

Disparates. Significa que las personas abandonan el intento de arreglarlo o no saben que se puede arreglar.

Es la razón por la que estoy en este hilo ahora.

@soilstack gracias. Considere leer los mensajes más recientes en este hilo.

¡Es realmente asombroso para mí que ustedes no puedan descubrir cómo hacer que algo tan fundamental como esto funcione! Este es un gran problema. Me encanta todo lo demás sobre la aplicación Terminal, pero este defecto básico me atrapa cada vez que la uso.

@SteveIves Sabes que puedes cambiar tus combinaciones de teclas para que sean lo que quieras, ¿verdad? Si desea Ctrl + C / V como copiar y pegar, continúe y agréguelos a sus combinaciones de teclas. Si desea Ctrl + Shift + C / V , también puede usarlos. Si quieres alt + q como copiar y shift + 0 como pegar, hazlo.

A partir de la versión 1.0, los valores predeterminados incluyen Ctrl + Shift + C / V como copiar y pegar, y los nuevos usuarios _también_ obtendrán Ctrl + C / V como copiar / pegar en su archivo de configuración.

EDITAR:use cualquier subconjunto de estos que desee:

{
  "keybindings": [
    // Ctrl+C / Ctrl+V for copy paste
    { "keys": "ctrl+c", "command": "copy"},
    { "keys": "ctrl+v", "command": "paste"},

    // Ctrl+Shift+C / Ctrl+Shift+V for copy paste
    { "keys": "ctrl+shift+c", "command": "copy"},
    { "keys": "ctrl+shift+v", "command": "paste"},


    // Disable Ctrl+Shift+C / Ctrl+Shift+V for copy paste
    { "keys": "ctrl+shift+c", "command": "unbound"},
    { "keys": "ctrl+shift+v", "command": "unbound"},
  ]
}

@ zadjii-msft sí, lo sé, y como desarrollador puedo hacer esto. Pero si desea que Terminal reemplace cmd.exe, debe solucionarlo.

Por curiosidad, ¿qué parte de

A partir de la versión 1.0, los valores predeterminados incluyen Ctrl + Shift + C / V como copiar y pegar, y los nuevos usuarios _también_ obtendrán Ctrl + C / V como copiar / pegar en su archivo de configuración.

¿No estamos arreglando esto?

Ctrl + Shift + C / V no es natural. ¿Tampoco el menú contextual? La Terminal de Windows me parece útil, pero la falta del menú y Ctrl + C / V me hace reconsiderar mis opciones.

Sí, este hilo ha seguido su curso. Cualquiera que esté dispuesto a comentar: lea los cuatro comentarios más recientes. Dice todo lo que necesitas saber.

¿Fue útil esta página
0 / 5 - 0 calificaciones