You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中Jupyter Notebook全局启用Vi核心快捷键的方法咨询

VS Code中Jupyter Notebook全局启用Vi核心快捷键的方法咨询

我完全懂这种被快捷键“割裂”的难受——用惯了Vim全局操作的流畅感,突然被限制在单个代码块里,连/搜索、*匹配当前词、.跳最近编辑行这些核心操作都只能在小方块里生效,加上Esc还会跳去全局模式导致Vim命令直接失效,真的太别扭了!

下面给你几个实用的解决思路,亲测能改善大部分痛点:

1. 调整Vim扩展的核心设置,让它接管Notebook全局

打开VS Code的设置界面(Ctrl+,),搜索以下几个关键选项:

  • Vim: Esc Exit Insert Mode Only:把这个选项勾选上,这样Esc只会从Vim的插入模式切换到命令模式,不会跳去Notebook的全局模式,彻底解决Esc的“跳脱”问题。
  • Vim: Notebook Global Mode:如果你的Vim扩展有这个选项,直接开启,它会让Vim的命令模式在Notebook的全局范围内生效,跨代码块的操作就都能正常用了。

2. 自定义全局快捷键映射,补全缺失的Vim操作

如果上面的基础设置还满足不了所有需求,可以手动把Vim的核心快捷键映射到Notebook的全局操作:

  1. 打开快捷键设置界面(Ctrl+K Ctrl+S),点击右上角的{}图标进入settings.json编辑模式。
  2. 添加以下配置(可以根据自己的习惯调整):
{
  // 让Vim正常模式下的核心命令全局生效
  "vim.normalModeKeyBindingsNonRecursive": [
    // 全局搜索替代Vim的/
    {
      "before": ["/"],
      "commands": ["notebook.find"]
    },
    // 全局匹配当前单词替代Vim的*
    {
      "before": ["*"],
      "commands": ["editor.action.addSelectionToNextFindMatch"]
    },
    // 跳转到最近编辑的单元格替代Vim的.
    {
      "before": ["."],
      "commands": ["notebook.navigateToLastEditLocation"]
    },
    // 全局撤销替代Vim的u
    {
      "before": ["u"],
      "commands": ["undo"]
    },
    // 全局重做替代Vim的Ctrl+R
    {
      "before": ["<C-r>"],
      "commands": ["redo"]
    }
  ],
  // 锁定Esc只切换Vim模式
  "vim.escExitInsertModeOnly": true
}

保存后重启VS Code,这些快捷键就能跨代码块生效了。

3. 退而求其次:适应VS Code原生Notebook快捷键

如果上面的方法还是有小瑕疵,也可以慢慢熟悉VS Code针对Notebook的原生快捷键,比如:

  • 全局搜索:Ctrl+F(和Vim的/功能一致)
  • 跳最近编辑位置:Ctrl+Q
  • 全局撤销/重做:Ctrl+Z/Ctrl+Shift+Z

虽然和Vim的习惯不一样,但用久了也能形成流畅的操作节奏。

备注:内容来源于stack exchange,提问作者dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:23:02