Vim emulator for VSCode
Require
- v0.3 : Visual Studio Code 1.0.0
Features
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
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
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
0.5.5
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
0.5.1
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
0.4.6
0.4.5
0.4.2
0.4.1
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
0.3.2
- update for vscode 1.0.0
- support repeat command
- support visual line mode
- support tab size
0.2.4
0.2.3
- support
useErgonomicKeyForMotion
option : move a cursur by jkl;
- support visual mode
0.2.2
0.2.1
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
0.1.1
pre release!