Skip to content

Windows 下斜杠命令自动补全失效或崩溃

问题

在 Windows 环境(PowerShell 或 CMD)运行 Gemini CLI 时,输入 / 触发命令自动补全(如 /help/stats 等斜杠命令)时出现以下异常:

  • 补全列表不显示,按 Tab 无反应
  • 出现乱码或命令文本错误拼接
  • 偶发崩溃,终端报错并退出

根本原因packages/cli/src/ui/hooks/useCommandAutocomplete.ts 中,在命令片段替换阶段对 Windows 路径分隔符(反斜杠 \)处理有回归 bug,导致子命令匹配逻辑失败。此问题是 Windows 独占,macOS/Linux 不受影响。

解决方案

方案一:升级到最新版本(推荐)

社区贡献者已提交 PR 修复此问题(PR #24040),升级到已合并该 PR 的版本即可解决:

bash
npm install -g @google/gemini-cli@latest
gemini --version  # 确认版本已更新

方案二:切换到 WSL 环境(临时规避)

如果无法立即升级版本,在 WSL 中运行 Gemini CLI 可绕过该 Windows 路径处理 bug:

bash
wsl
npm install -g @google/gemini-cli  # WSL 内独立安装
gemini

WSL 使用 Linux 路径处理逻辑,不受此 bug 影响。

方案三:手动输入完整命令(不依赖补全)

在补全失效期间,直接手动输入完整的斜杠命令代替自动补全:

/help
/stats model
/clear

不使用 Tab 触发补全,直接回车执行。

参考

  • 原始 Issue:#23541
  • 修复 PR:#24040
  • 问题文件:packages/cli/src/ui/hooks/useCommandAutocomplete.ts

社区补充方法

粘贴含 @ 符号的内容时 CLI 崩溃或卡死(Issue #24898)

在输入框中粘贴含 @ 的内容(如邮件地址、@user 引用、git 提交引用等)时,@ 会被解析为文件引用触发符,导致 CLI 崩溃。

解决方法:在 settings.json 中启用粘贴转义:

json
{
  "escapePastedAtSymbols": true
}

设置后,粘贴时 @ 符号会自动转义为字面量,不再触发文件引用弹窗。