如何在 VSCode 的 Vim Insert 模式下设置 Emacs 风格的快捷键?


#1

安装了以下两个插件:

code --install-extension vscodevim.vim
code --install-extension migrs.vimacs

目前大部分快捷键都正常,唯独 C-n 键不知被哪个插件占去了。我应该如何设置,才能实现在 Vim Insert 模式下按 C-n 执行 cursorDown 动作?

VSCode 如何解决快捷键冲突?


#2

在emacs-china 你甚至能讨论vscode 的高阶用法…:rofl:


#3

在 keybindings.json 中修改,类似于:

{
    "key": "ctrl+p",
    "command": "cursorUp",
    "when": "suggestWidgetVisible && vim.active && vim.use<C-p>"
  },

command 和 when 你需要自己改改。


#4

我也有这种需求,相当于 spacemacs 的 hybrid state


#5

感觉重度 emacs 用户往往用其他编辑器/IDE时也是爱折腾,一般都是为了复现 emacs 的编辑习惯,但是这种折腾往往都是徒劳的,最后不得不认清现实滚回 emacs,即使承认 emacs 只是二流 IDE,但是内心仍然认为 emacs 是最好的编辑器 :joy:


#6

如果你是mac用户。。。


#7

不起作用。应该是有其他插件抢先拦截了 C-n 事件。

我这边是这样写才有效:

    {
        "key": "ctrl+n",
        "command": "cursorDown",
        "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode == 'Insert'"
    }

VSCode 没有类似 describe-key 的功能?Keyboard Shortcuts 只能查到哪些命令绑定到了某个快捷键上,看不出来最终执行的是哪一个:


#8

可以去 Issue 里提一个 describe key 的需求,不过我觉得编辑器插件的开发者应该有工具可以获知到,没有具体了解过。