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
$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)
Repro
C:\Program Files\Vim\vim92\vim.exeExpected
Backspace deletes the previous character.
Actual
Backspace inserts the
⌂glyph (CP437 rendering of byte0x7F/ DEL).Notes
& $Env:EDITOR) works correctly — Backspace deletes as expected. The bug only reproduces when Vim is spawned by Copilot CLI's external-editor feature.ENABLE_VIRTUAL_TERMINAL_INPUTset, Backspace is delivered as0x7F(^?, xterm style). Vim's Windows console build defaults tot_kb=^H(0x08), so it does not recognize0x7Fas Backspace and inserts it as a literal character (displayed as⌂).Possible fixes? (Unverified)
ENABLE_VIRTUAL_TERMINAL_INPUTon the console before spawn and restore after, orTERM=win32in the spawned editor's environment so Vim picks compatible termcap defaults.Environment
vim.exe)