Skip to content
This repository has been archived by the owner on Feb 9, 2021. It is now read-only.

74th/vscode-vim

Repository files navigation

There are no plans to update this project.

I recommend using Neo Vim Extension.

Vim emulator for VSCode

vimanimetion

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-<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

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

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!