github / github/copilot-cli

Windows: Backspace in $EDITOR=vim.exe launched via Ctrl+G inserts ⌂ (0x7F) instead of deleting

Abierto
#3,374 0 comentarios 0 reacciones 0 asignados Ver en GitHub
area:input-keyboard area:platform-windows
Lenguaje dominante
Shell
Estrellas
11.2k
Forks
1.9k
Merge medio
14 h 16 min
PR fusionados (30 d)
6

Descripción

### Repro
- Windows 11, PowerShell (conhost or Windows Terminal)
- Copilot CLI v1.0.49-1
- Vim 9.2 (console build) at `C:\Program Files\Vim\vim92\vim.exe`

```powershell
$Env:EDITOR = "$Env:ProgramFiles\Vim\vim92\vim.exe"
copilot
# Press Ctrl+G (or Ctrl+X then e) to edit the prompt in $EDITOR
# In Vim, press `i` for insert mode, type some text, press Backspace
```

### Expected
Backspace deletes the previous character.

### Actual
Backspace inserts the `⌂` glyph (CP437 rendering of byte `0x7F` / DEL).

### Notes
- Vim launched directly from the same PowerShell session (`& $Env:EDITOR`) works correctly — Backspace deletes as expected. The bug only reproduces when Vim is spawned by Copilot CLI's external-editor feature.
- Apparent root cause: Copilot CLI puts the Windows console into VT input mode (ConPTY) for its own TUI. With `ENABLE_VIRTUAL_TERMINAL_INPUT` set, Backspace is delivered as `0x7F` (`^?`, xterm style). Vim's Windows console build defaults to `t_kb=^H` (`0x08`), so it does not recognize `0x7F` as Backspace and inserts it as a literal character (displayed as `⌂`).
- The editor is spawned via plain stdio inheritance (no PTY bridge), so the parent's VT input mode leaks into the child.

### Possible fixes? (Unverified)
- Allocate a PTY for the editor subprocess, or
- Temporarily clear `ENABLE_VIRTUAL_TERMINAL_INPUT` on the console before spawn and restore after, or
- Set `TERM=win32` in the spawned editor's environment so Vim picks compatible termcap defaults.

### Environment
- OS: Windows 11
- Shell: PowerShell
- Copilot CLI: 1.0.49-1
- Vim: 9.2 (console build, `vim.exe`)

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Start with the external-editor feature used by Ctrl+G or Ctrl+X then e, and reproduce the Windows PowerShell case with Vim 9.2. Trace how Copilot CLI configures console input and inherits stdio when spawning the editor; done means Backspace deletes characters in Vim while the CLI's own terminal behavior remains intact.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
powershell, shell, vim
Área
cli, operating-systems
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.