ganjan
ganjan

Reputation: 7576

How to use vim (key-bindings) with Visual Studio Code vim extension

I just started using Visual Studio Code and think it's really great. Also installed the vim extension, but I'm struggling with mapping esc to a another key.

Normally I have this:

:imap jj <Esc>

And I can see that VS Code has a keybindings.json file. I tried this:

[{
    "key": "jj",
    "command": "vim.Esc",
    "when": "editorTextFocus"
}]

Also there is a settings.json file, so I tried:

{
  "vim.keyboardLayout": "en-US (QWERTY)",
    "vim.insertModeKeyBindings": {
        "j": "vim.Esc"
    }
}

Also did not work. So does anyone know how to use the a vim extension with VS Code where I can map jj to Esc or something else to Esc perhaps?

Upvotes: 60

Views: 96479

Answers (4)

Sorul
Sorul

Reputation: 354

An alternative way would be using the keybindings.json file.

Ctrl+Mayus+P (Windows) -> keybindings Open Keyboard Shortcuts

And insert:

    {
    "key": "CapsLock",
    "command": "vim.remap",
    "when": "editorTextFocus && vim.mode == 'Insert'",
    "args": {
        "after": ["<Esc>"]
    }
},
{
    "key": "CapsLock",
    "command": "vim.remap",
    "when": "editorTextFocus && vim.mode == 'Normal'",
    "args": {
        "after": ["<Esc>"]
    }
},
{
    "key": "CapsLock",
    "command": "vim.remap",
    "when": "editorTextFocus && vim.mode == 'Visual'",
    "args": {
        "after": ["<Esc>"]
    }
},
{
    "key": "CapsLock",
    "command": "vim.remap",
    "when": "editorTextFocus && vim.mode == 'Replace'",
    "args": {
        "after": ["<Esc>"]
    }
}

Upvotes: 0

thedayturns
thedayturns

Reputation: 10823

Add the following to settings.json (open the Command Pallete and search for "User Settings"):

"vim.insertModeKeyBindings": [
     {
         "before": ["j", "j"],
         "after": ["<esc>"]
     }
]

That should do it.

Upvotes: 127

fuadj
fuadj

Reputation: 454

If you running on Linux and have used setxkbmap to remap Esc to Caps-Lock and have problems, I suggest the following workaround Fix for Esc remapping.

The solution is to add the following to your User Settings

"keyboard.dispatch": "keyCode"

You should save and restart after that enter image description here

Upvotes: 10

sudo bangbang
sudo bangbang

Reputation: 28189

From this issue, I learned that you can use something like

{ "key": "j j", "command": "extension.vim_esc", "when": "editorTextFocus" },

But it does come with a problem of not being able to use j for movement.

PS. I know this is not a complete answer but something to get going.

Upvotes: 3

Related Questions