TypeScript
Need help with vscode-vim?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.
74th

Description

vim emulator for Visual Studio Code

207 Stars 23 Forks MIT License 499 Commits 25 Opened issues

Services available

Need anything else?

Vim emulator for VSCode

vimanimetion

  • GitHub https://github.com/74th/vscode-vim
  • Visual Studio Marketplace https://marketplace.visualstudio.com/items/74th.vimStyle

Build Status Version Installs Rating

Require

  • v0.3 : Visual Studio Code 1.0.0

Features

vimanimetion

  • support repeat command

vimanimetion

Installation

ext install vimStyle

Supported vim commands

  • h j k l 0 $ ^ w W b B e E { } [{ ]} tx fx Tx Fx ; , gg G
  • Nh Nj Nk Nl Nw NW Nb NB Ne NE N{ N} N[{ N]} Ntx Nfx NTx NFx N; N, NG
  • i a s o x r I A S O X gr J
  • Nx Nr Ngr
  • d y c dd yy cc D C p P d$ y$ c$ ...
  • Ndd Nyy Ncc
  • ci[ ca[ ci" ca"
  • Nci[ Nca[
  • v V v..d v..c v..y v..r v..j
  • .

  • quickref function list is here.

  • If you need Ctrl-D and Ctrl-U for scrolling, you can use additional scroll key entention.

Support to call VSCode commands from vim keybind

  • u : / n N > < %

But they do not behave exactly as vim command, and their supports may be changed.

Settings

If you needs optional settings, please copy belong json and paste to your

settings.json
.
// Show mode in status bar (default: true)
"vimStyle.showMode": false,
// changing cursor by mode (default: true)
"vimStyle.changeCursorStyle": false,
// motion with jkl;(default: false)
"vimStyle.useErgonomicKeyForMotion": true,
// default mode (default: "normal")
"vimStyle.defaultMode": "insert",
// disable without to uninstall (default: "true")
"vimStyle.enabled": "false",
// keys go to normal mode from insert mode (default: "" disable)
"vimStyle.imapEsc": "jj",
// some vimrc like settings
"vimStyle.vimrc": [
    "nmap Y y$", //
    "nnoremapmap Y y$", //
]

If you would like to use

ctrl+[
instead of
escape
, please add blong setting to your
keybindings.json
.
{
    "key": "ctrl+[",
    "command": "vim.Esc",
    "when": "editorTextFocus"
}

If you would like more vim flavor, you can use

vim.inNormalMode
,
vim.inInsertMode
and
vim.inVisualMode
to your keyboard shortcuts. For example,
// in insert mode
{
    // Ctrl-h : BackSpace
    "key": "ctrl+h", "command": "deleteLeft",
    "when": "editorTextFocus && vim.inInsertMode"
},
{
    // Ctrl-w : delete word
    "key": "ctrl+w", "command": "deleteWordLeft",
    "when": "editorTextFocus && vim.inInsertMode"
},
// in visual mode
{
    // arrow up
    "key": "up", "command": "vim.type-",
    "when": "editorTextFocus && vim.inVisualMode"
},
{
    // arrow down
    "key": "down", "command": "vim.type-",
    "when": "editorTextFocus && vim.inVisualMode"
},
{
    // arrow right
    "key": "right", "command": "vim.type-",
    "when": "editorTextFocus && vim.inVisualMode"
},
{
    // arrow left
    "key": "left", "command": "vim.type-",
    "when": "editorTextFocus && vim.inVisualMode"
},

Support vimrc settings

  • nmap Y y$
  • nnoremap Y y$

Will never be supported

  • Ctrl-x Cmd-x Alt-x Meta-x

VimStyle Loadmap

the vim emulator written type script

  • [x] basic vim keybinds
  • [x] fix word motion bugs
  • [x] user keybindings ( nmap )
  • [ ] user keybindings ( call vscode function )
  • [ ] text object ( diw, di{ ... )
  • [ ] resister
  • [ ] vim style plugin for chrome browser
  • [ ] complete quickref list

License

MIT License

Contributing

function list

git clone https://github.com/74th/vscode-vim.git ~/.vscode/extensions/vscode-vim
cd ~/.vscode/extensions/vscode-vim
npm install
npm run-script build

Updates

0.5.7

  • fix insert mode

0.5.5

  • fix https://github.com/74th/vscode-vim/issues/73

0.5.4

  • fix multi select problem #64 #69

0.5.3

  • #57 support arrow keys in visual mode(need add keybindings)

0.5.2

  • fix #65

0.5.1

  • support J v..J V..J

0.5.0

  • support ci[ ci{ ci( ci< ca[ ca{ ca( ca<
  • support ci' ci" ci
    ca' ca" ca
  • treat
    _
    as alphabet

0.4.7

  • fix visual mode moves

0.4.6

  • revert 0.4.2

0.4.5

  • some bugfix

0.4.2

  • support
    [(
    ,
    [{
    ,
    ])
    ,
    ]}

0.4.1

  • support
    {
    ,
    }

0.4.0

  • support nmap nnoremap (use like vimrc setting)

0.3.13

  • support vim mode contexts for keyboard shortcuts #45
  • fix word motion bugs #38

0.3.12

  • support imap ESC keybinding
  • support enable setting

0.3.11

0.3.10

0.3.9

0.3.6

  • support r gr v..r
  • fix visual mode move bug

0.3.5

  • support VSCode commands from vim keybindings %
  • fix some bug

0.3.4

  • support VSCode commands from vim keybindings : / n N > <

0.3.3

  • support ^
  • change icon

icon

0.3.2

  • update for vscode 1.0.0
  • support repeat command
  • support visual line mode
  • support tab size

0.2.4

  • support W B e E

0.2.3

  • support
    useErgonomicKeyForMotion
    option : move a cursur by
    jkl;
  • support visual mode

0.2.2

  • fix #21 CR+LF bug

0.2.1

  • update README

0.2.0

  • more friendly with VSCode functions
  • show block sursor
  • bug fix : dfx dFx dtx dTx
  • append indents by o O

0.1.8

  • JISキーボード向けオプション(support Win and Mac Jis keyboard option)
  • show suggestion by only alpabet and .
  • fix some bugs

0.1.7

  • gg G

0.1.1

pre release!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.