ctrl+c/ctrl+v不生效需关闭vim.usectrlkeys;esc无反应须删除vscode的escape键绑定;jj/jk退出插入模式需配置vim.insertmodekeybindings;系统剪贴板不同步应启用vim.usesystemclipboard。

Ctrl+C/Ctrl+V 不生效?关掉
vim.useCtrlKeys
VSCode 默认把 Ctrl+C、Ctrl+V、Ctrl+A 这类组合键交给原生编辑器处理,而 Vim 插件默认会劫持所有 Ctrl 键组合——结果就是复制粘贴全失效。
- 关键配置项是
vim.useCtrlKeys,它控制插件是否接管 Ctrl 组合键 - 在设置界面搜索
vim.useCtrlKeys,把它设为false - 或者直接在
settings.json里加一行:"vim.useCtrlKeys": false - 修改后无需重启,但建议执行
Developer: Reload Window确保全部生效
注意:这个开关关掉后,Ctrl+]、Ctrl+I 这类 Vim 原生命令也会失效,如果依赖它们,就得走 vim.handleKeys 逐个放行。
Esc 按了没反应?删掉 VSCode 自己的 Escape 绑定
Vim 的 Esc 是退出 Insert 模式的命脉,但 VSCode 默认用它触发命令面板或切换终端,直接吃掉了按键事件。
- 打开快捷键设置:
Ctrl+K Ctrl+S(Windows/Linux)或Cmd+K Cmd+S(macOS) - 搜索
escape,你会看到至少两条:workbench.action.showCommandsworkbench.action.terminal.toggleTerminal - 对每一条右键 →「删除键绑定」
- 顺便检查
vim.useCtrlKeys是否为true(仅当你要保留 Ctrl+Esc 等组合时才需要)
别跳过这一步——哪怕其他配置都对,只要 VSCode 抢先截了 Esc,Vim 就永远卡在 Insert 模式。
想用 jj/jk 退出插入模式?必须写进 vim.insertModeKeyBindings
这不是快捷键,是插入模式下的按键序列监听。你不能在通用快捷键设置里配它,也不能靠 remap 解决。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 只能在
settings.json中配置vim.insertModeKeyBindings - 格式严格:
before必须是小写字母数组,after中的<esc></esc>要带尖括号和英文符号 - 示例:
"vim.insertModeKeyBindings": [ { "before": ["j", "j"], "after": ["<esc>"] }, { "before": ["j", "k"], "after": ["<esc>"] } ] </esc></esc> - 多个绑定按数组顺序匹配,前面的会优先触发
- 如果你同时配了
jj和jk,且光标前是jk,那jk会生效,jj不会误触
别漏掉引号和逗号,JSON 格式错误会导致整个 Vim 插件降级为半启用状态。
系统剪贴板不同步?vim.useSystemClipboard 是唯一解
yy 复制的内容默认只存在 Vim 寄存器里,Ctrl+V 粘的却是系统剪贴板——两边不打通,等于白配。
- 直接设
"vim.useSystemClipboard": true即可 - macOS 用户额外注意:VSCode 必须有「辅助功能」权限,否则该选项无效(系统设置 → 隐私与安全性 → 辅助功能 → 勾选 VSCode)
- Windows/Linux 不需要额外授权,但旧版 VSCode 可能要求手动安装 xclip 或 xsel 工具
别试图用 clipboard=unnamedplus 配置 .vimrc,VSCode-Vim 插件不读取本地 vimrc,只认自己的 JSON 配置项。
Vim 插件不是黑盒,它的行为几乎全部由几个核心配置项驱动;真正难的不是配什么,而是搞清哪个冲突来自 VSCode、哪个来自插件、哪个来自系统权限——三者混在一起,一个没理清,整套就卡住。










