可通过安装Vim扩展、启用内置Emacs键绑定、自定义keybindings.json及禁用冲突快捷键,在VSCode中实现Vim或Emacs操作习惯迁移。

如果您在使用 VSCode 时习惯 Vim 或 Emacs 的键盘操作方式,但默认编辑器不支持这些键绑定,则可以通过配置键盘映射实现行为迁移。以下是将 Vim 或 Emacs 操作习惯引入 VSCode 的具体方法:
本文运行环境:MacBook Air,macOS Sequoia。
一、启用 Vim 模式插件
Vim 模式需依赖第三方扩展提供完整键绑定支持,VSCode 原生不内置 Vim 行为。安装后可复现普通模式、插入模式、可视模式等核心交互逻辑。
1、打开 VSCode,点击左侧活动栏的扩展图标(四个方块组成的图标)。
2、在搜索框中输入 Vim,找到由 vscodevim 官方维护的 Vim 扩展。
3、点击“安装”,安装完成后重启 VSCode。
4、打开任意文本文件,按 Esc 键确认进入普通模式,光标移动和命令输入即生效。
二、配置 Emacs 键绑定模式
VSCode 内置对 Emacs 键绑定的部分支持,无需额外插件即可启用基础快捷键,如 Ctrl+A(行首)、Ctrl+E(行尾)、Ctrl+K(剪切至行尾)等。
1、按下 Cmd+, 打开设置界面。
2、在右上角搜索框中输入 keybindings,点击“键盘快捷方式”选项卡。
3、点击右上角三个点图标,选择“打开键盘快捷方式(JSON)”。
4、在打开的 keybindings.json 文件中添加以下内容:
"{ "key": "ctrl+a", "command": "cursorHome", "when": "textInputFocus && !editorReadonly" }"
"{ "key": "ctrl+e", "command": "cursorEnd", "when": "textInputFocus && !editorReadonly" }"
三、自定义键映射 JSON 配置
通过直接编辑 keybindings.json,可精确覆盖或新增任意按键组合,适用于 Vim 和 Emacs 风格之外的个性化需求,例如将 jj 映射为 Esc(Vim 插入模式退出快捷键)。
1、按下 Cmd+Shift+P 打开命令面板。
2、输入 Preferences: Open Keyboard Shortcuts (JSON) 并回车。
3、在数组内添加如下对象:
"{ "key": "j j", "command": "extension.vim_escape", "when": "editorTextFocus && vim.mode == 'InsertMode'" }"
4、保存文件,该映射立即生效,无需重启。
四、禁用冲突的原生快捷键
部分 VSCode 默认快捷键会与 Vim 或 Emacs 行为冲突,例如 Ctrl+Shift+P 在 Vim 普通模式下应被拦截,否则触发命令面板而非光标移动。
1、打开 keybindings.json 文件。
2、查找包含 ctrl+shift+p 的已有绑定项。
3、在其末尾添加 "when": "false" 字段,使该快捷键全局失效。
4、另起一行添加新绑定,例如将 leader+shift+p 作为替代命令面板触发方式。









