vs code 安装 vim 模拟器应使用 vscode-vim 插件,禁用 amvim;安装后必须重启窗口,配置 "vim.usectrlkeys": false 等三项关键设置,并验证 ciw、y/p、:q! 等功能是否正常。

VS Code 安装 Vim 模拟器,核心就是装 vscode-vim 插件——它不是“Vim 本体”,而是最成熟、维护活跃的 Vim 行为模拟器,支持 hjkl、yy、ciw、可视模式、寄存器等关键功能。
直接在扩展面板搜 vscode-vim 并安装
这是最快也最稳妥的方式,别搜 “Vim” 或 “amVim”(后者已多年未更新,兼容性差):
- 按
Ctrl+Shift+X(Windows/Linux)或Cmd+Shift+X(macOS)打开扩展面板 - 输入
vscode-vim,认准作者是vscodevim(GitHub 组织名),图标是绿色 Vim logo - 点「安装」,安装完成后**必须重启 VS Code 窗口**(不是重载,是完全关闭再打开)
- 打开任意文本文件,按
Esc,光标左下角应显示-- NORMAL --;按i进入插入模式,再按Esc回退——这就通了
装完立刻要调的三个配置项
默认配置会让很多人卡住几小时:按 Esc 没反应、Ctrl+C/V 失效、hjkl 不动。关键就在这三处:
-
"vim.useCtrlKeys": false—— 否则Ctrl+C不复制,Ctrl+V不粘贴,而是走 Vim 寄存器;日常开发建议关掉 -
"vim.handleKeys"配置里把"<c-c>"</c-c>、"<c-v>"</c-v>、"<c-x>"</c-x>等全设为false,防止插件劫持系统快捷键 - macOS 用户必加:
"vim.easymotion": true+ 终端运行defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false,否则长按Esc触发系统重复输入,Vim 收不到单次退出信号
vscode-vim 和 amVim 别混用
amVim 是早期轻量替代品,2018 年后基本停止维护,不支持 operator-pending 模式(比如 v 选中后按 d 删除会失败)、无多光标联动、寄存器行为错乱。现在所有新项目、协作场景都应只用 vscode-vim。
如果你已装过 amVim,先禁用/卸载它,再装 vscode-vim,否则两个插件会互相干扰按键逻辑,导致 i 进不去、Esc 退不出这种看似“插件坏了”的假象。
验证是否真生效:别只试 i 和 Esc
很多用户以为能切模式就万事大吉,结果写代码时发现 ciw(改单词)没反应、gq(自动换行)报错——说明插件加载不完整或配置冲突:
- 打开一个 .js 文件,光标停在某个变量名上,按
ciw→ 应该删除该单词并进入插入模式;输完按Esc→ 应恢复到 normal 模式且光标在词尾 - 选中一段文字(
v或鼠标拖),按y→ 再到别处按p→ 应粘贴成功 - 按
:→ 输入q!→ 应提示“放弃更改?”,说明命令模式也通了(虽然实际不用,但证明底层解析正常)
如果其中任何一步失败,优先检查 settings.json 里有没有残留的 amVim 配置、vim.useCtrlKeys 是否被其他插件覆盖、以及 VS Code 是否用了远程开发(WSL/SSH)——远程窗口需单独在远程环境中再装一次插件。











