有没有办法将 Caps_Lock 重新映射为 vscode 的 vim 上的转义键?

Is there a way to remap Caps_Lock to be the escape key on vscode's vim?

问题

我想在 Visual Studio 代码的 vim 扩展中使用 Caps_Lock 作为退出插入模式的键。我已经用 Xmodmap 重新映射了 Xorg 中的键,但是 Visual studio 似乎并不重要。

我的 VScode 设置

如您所见,我已经尝试使用 "vim.insertModeKeyBindings",但它只会禁用 Escape 键,让我认为 Caps_lock 有另一个键 name/keysym,但我不能'好像没找到

{
    "editor.fontFamily": "'Inconsolata-g for Powerline'",
    "editor.fontSize": 16,
    "liveshare.authenticationProvider": "GitHub",
    "vim.enableNeovim": true,
    "code-runner.enableAppInsights": false,
    "code-runner.runInTerminal": true,
    "workbench.startupEditor": "newUntitledFile",
    "workbench.editorAssociations": [
        {
            "viewType": "jupyter.notebook.ipynb",
            "filenamePattern": "*.ipynb"
        }
    ],
    "workbench.colorTheme": "BeardedTheme Anthracite",
    "extensions.autoUpdate": "onlyEnabledExtensions",
    "vim.vimrc.enable": true,
    "vim.vimrc.path": "$HOME/.config/nvim/init.vim",
    "editor.fontWeight":"bold", 
    "vim.insertModeKeyBindings": [
        {
            "before": ["<Esc>"],
            "after": ["<Caps_Lock>"]
        }
   ]
}

我想说的另一件事是我已经有 j,k 和它们的组合来退出插入模式。这是默认值吗?


非常感谢任何提供帮助的人!!

解决方案

由于此问题出现在 Linux 中,并且我已经更改了 Xmodmap 中的设置,因此 VScode 不考虑使用 xkbmap 重新映射似乎是一个已知问题, 应该是通过在 VScode 的 settings.json 中添加 "keyboard.dispatch": "keyCode" 并重新打开 VS.

来修复

我看到你已经找到了一个可能的解决方法,但我想知道 'xcape' 工具是否 (apt install xcape) 可以在您的 bashrc 中提供以下帮助吗?

# set capslock to escape key  
setxkbmap -option ctrl:nocaps
xcape -e '#66=Escape'

按 CTRL + SHIFT + P 打开命令面板。

然后,单击任意命令上的设置按钮。

这将打开键绑定。

搜索extension.vim_escape

将此更改为 CAPS_LOCK。

The only issue with this is that it still capitalises things when you re-enter insert mode, so you have to press it twice.