github / github/copilot-cli

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

未關閉
#3,374 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area:input-keyboard area:platform-windows
主要語言
Shell
星號
11.2k
分支
1.9k
平均合併
14 小時 16 分鐘
30 天內合併 PR
6

描述

### 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`)

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。