There are no plans to update this project.
I recommend using Neo Vim Extension.
Vim emulator for VSCode
- GitHub https://github.com/74th/vscode-vim
- Visual Studio Marketplace https://marketplace.visualstudio.com/items/74th.vimStyle
Require
- v0.3 : Visual Studio Code 1.0.0
Features
- pure TypeScript vim engine
- have tests comparing with original vim
- support complex command
- support visual mode
- support repeat command
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
-
.
-
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-<Up>",
"when": "editorTextFocus && vim.inVisualMode"
},
{
// arrow down
"key": "down", "command": "vim.type-<Down>",
"when": "editorTextFocus && vim.inVisualMode"
},
{
// arrow right
"key": "right", "command": "vim.type-<Right>",
"when": "editorTextFocus && vim.inVisualMode"
},
{
// arrow left
"key": "left", "command": "vim.type-<Left>",
"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
- basic vim keybinds
- fix word motion bugs
- 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
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 #73
0.5.4
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
- support ; ,
- fix #38
- support #31
- test to fix #32
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
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 byjkl;
- 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!