Copiar seleccionando y pegar con clic derecho en TODAS las consolas de Windows

TL;DR — Cómo dejar cmd, PowerShell (incluido admin), Git Bash, Windows Terminal y la terminal de VS Code con el mismo flujo: seleccionar = copiado al portapapeles y clic derecho = pegar. Todo con mecanismos nativos, sin AutoHotkey ni utilidades externas.

Aplica a: Windows 10 / 11

El objetivo

Un solo hábito para todas las consolas:

  1. Arrastras el mouse sobre el texto → queda copiado.
  2. Clic derecho → pega en la línea de comandos.

Cada consola lo logra con SU propio mecanismo (por eso “se pierde” la config si solo tocas una). Esta es la tabla completa:

Consola Copiar al seleccionar Pegar con clic derecho Dónde se configura
cmd / PowerShell clásicos (conhost) Seleccionar + 1er clic derecho (límite nativo) 2º clic derecho Registro HKCU\Console (QuickEdit)
Windows Terminal ✅ al soltar el mouse ✅ settings.json → copyOnSelect
Git Bash (mintty) ✅ al soltar el mouse ✅ ~/.minttyrc
Terminal de VS Code ✅ al soltar el mouse ✅ settings.json de VS Code
Claude Code (su TUI) ✅ (con TUI en modo default) — ~/.claude/settings.json

⚠️ Importante: nada de esto usa Ctrl+C, así que no matas procesos por accidente (Claude Code y compañía quedan a salvo). Y el copy-on-select global del SO (AutoHotkey) quedó descartado a propósito: enredaba el copiar/pegar normal fuera de las terminales.

1) cmd y PowerShell clásicos — QuickEdit (registro)

Pega este bloque en PowerShell:

# Default global
Set-ItemProperty -Path 'HKCU:\Console' -Name 'QuickEdit' -Value 1 -Type DWord

# Forzarlo en todos los sub-perfiles por aplicación (powershell.exe, Git Bash, Git CMD…)
Get-ChildItem 'HKCU:\Console' | ForEach-Object {
    Set-ItemProperty -Path $_.PSPath -Name 'QuickEdit' -Value 1 -Type DWord
    Write-Host ('  perfil: ' + $_.PSChildName + ' -> QuickEdit=1')
}

Límite nativo de conhost: soltar el mouse NO copia. El flujo es: seleccionar → 1er clic derecho copia (y quita la selección) → 2º clic derecho pega. Es lo máximo que da la consola clásica; el “soltar = copiado” lo dan las demás.

2) Windows Terminal — copyOnSelect

Ctrl + , → Abrir archivo JSON → agrega en la raíz (o verifica que ya esté):

"copyOnSelect": true,
"copyFormatting": "none"

Con copyOnSelect activo, el clic derecho siempre pega. Esta es la consola por defecto en Windows 11, así que cubre los cmd/PowerShell que abres normalmente.

3) Git Bash — .minttyrc

Git Bash usa mintty, que ignora el registro y el JSON de Windows Terminal. Crea el archivo C:\Users\<tu-usuario>\.minttyrc con:

CopyOnSelect=yes
RightClickAction=paste

El menú contextual de mintty no se pierde: queda en Ctrl + clic derecho.

Comando listo:

@"
CopyOnSelect=yes
RightClickAction=paste
"@ | Set-Content "$env:USERPROFILE\.minttyrc" -Encoding ascii

4) Terminal integrada de VS Code

En el settings.json de VS Code (Ctrl+Shift+P → “Preferences: Open User Settings (JSON)”):

"terminal.integrated.copyOnSelection": true,
"terminal.integrated.rightClickBehavior": "paste"

Trampa real (me pasó): con "rightClickBehavior": "copyPaste" el clic derecho copia cuando hay selección activa en vez de pegar — y como copyOnSelection ya copió, parece que “el pegado no funciona”. Debe ser "paste".

5) Claude Code (bonus)

Para poder seleccionar/copiar con el mouse dentro de la TUI de Claude Code, en ~/.claude/settings.json:

"tui": "default",
"env": { "CLAUDE_CODE_DISABLE_MOUSE_CLICKS": "1" }

(tui: default desactiva el renderer fullscreen que captura el mouse; la variable evita que los clics lleguen a la app pero conserva el scroll de la rueda.)

Cómo probar que quedó

  1. Cierra TODAS las consolas abiertas — las ventanas viejas no toman los cambios. Este es el motivo nº 1 de “no funcionó”.
  2. Abre una nueva, ejecuta algo (Get-Date), selecciona la salida con el mouse.
  3. Ve a otra consola y da clic derecho → debe pegar. ✅

Si en una consola específica no funciona

  • ¿La abres desde un acceso directo anclado? Los .lnk de consola guardan sus propias propiedades y pisan el registro. Clic derecho al acceso directo → Propiedades → Opciones → marca “Modo de edición rápida”.
  • ¿Es conhost clásico? Recuerda el doble clic derecho (1º copia, 2º pega) — no es un bug.
  • ¿Es una app de terminal distinta (ConEmu, Hyper, etc.)? Cada una tiene su propia opción de copy-on-select; el patrón es el mismo.

Por qué NO un copy-on-select global (y cómo se apagó)

Antes de esta versión hubo un intento de “copiar al seleccionar en todo el SO” con AutoHotkey: al soltar el mouse tras arrastrar, enviaba Ctrl+C. Se descartó por dos motivos:

  • Enredaba el copiar/pegar normal fuera de las terminales: al seleccionar cualquier texto o una ruta en el Explorador disparaba un copiado, y luego Ctrl+V traía algo distinto a lo esperado. Con falsos positivos (arrastrar archivos en el Explorador “copiaba” los archivos).
  • Ctrl+C es peligroso en consolas: interrumpe el proceso en ejecución (podría matar a Claude Code). Por eso el script tenía que excluir las terminales… justo donde sí queremos el copy-on-select. Al final resultó ser lo contrario de lo útil.

La regla correcta = copy-on-select SOLO en terminales, con los mecanismos nativos de arriba (QuickEdit / copyOnSelect / mintty), que copian por el buffer de la consola, no por Ctrl+C. Fuera de terminales, Windows normal.

Si tienes ese AutoHotkey activo, apágalo así:

# 1) Cerrar el proceso si está corriendo
Get-CimInstance Win32_Process |
  Where-Object { $_.CommandLine -match 'copy-on-select\.ahk' } |
  ForEach-Object { Stop-Process -Id $_.ProcessId -Force }

# 2) Sacarlo del arranque (movido a un .disabled, reversible)
$lnk = [Environment]::GetFolderPath('Startup') + '\copy-on-select.lnk'
if (Test-Path $lnk) { Move-Item $lnk "$env:USERPROFILE\bin\copy-on-select.lnk.disabled" -Force }

Para reactivarlo algún día: devuelve el .lnk a la carpeta Startup y relanza el .ahk.

Cómo revertirlo

# QuickEdit off
Set-ItemProperty 'HKCU:\Console' -Name 'QuickEdit' -Value 0 -Type DWord
Get-ChildItem 'HKCU:\Console' | ForEach-Object { Set-ItemProperty $_.PSPath -Name 'QuickEdit' -Value 0 -Type DWord }
# Windows Terminal: copyOnSelect -> false · VS Code: quitar las 2 líneas · Git Bash: borrar .minttyrc
Dos bugs de Windows que parecían otra cosa: clic derecho en PowerShell admin y apps GUI 'invisibles'
Older post

Dos bugs de Windows que parecían otra cosa: clic derecho en PowerShell admin y apps GUI 'invisibles'

Bitácora de dos arreglos: por qué el clic derecho no pegaba en la PowerShell de administrador (y la subclave del registro que lo causaba), y por qué las apps gráficas lanzadas desde la terminal 'no aparecían' cuando en realidad estaban fuera de pantalla.

Newer post

Cómo construí una Fábrica de Software con Agentes de IA (Etapa 1: el Control Plane)

Bitácora real de montar una fábrica de software con agentes de IA: una MacBook como CEO que dirige por SSH sobre Tailscale a una PC Windows donde corren contenedores obreros. Diseño de roles, docker context sobre SSH, y las trampas que más enseñaron.

Cómo construí una Fábrica de Software con Agentes de IA (Etapa 1: el Control Plane)
raul@wesoft: ~/ficha