⭐ Vim for Visual Studio Code
![Slack Status](https://vscodevim-slackin.azurewebsites.net/badge.svg)
Vim
Vim (aka. VSCodeVim) is a Visual Studio Code extension that enables the power of the Vim keybinding experience within Visual Studio Code. This is a work in progress and contributions are welcomed and loved!
![Screenshot](/VSCodeVim/Vim/media/commit/cf6a71992c24e99d820989fba8c5c8a12176a438/images/screen.png)
Install
- Within Visual Studio Code, open the command palette (
Ctrl-Shift-P
/ Cmd-Shift-P
)
- Select
Install Extension
and search for 'vim' or run ext install vim
Configure
Adjust configurations through user settings (File -> Preferences -> User Settings).
- vim.keyboardLayout:
- Supported Values:
en-US (QWERTY)
(default), es-ES (QWERTY)
, de-DE (QWERTZ)
, da-DK (QWERTY)
Project Status
Check out our release notes for more notes. The tables below are obviously an incomplete list, but show, at a glance, the current commands supported:
Keys in Insert Mode
Status |
Key |
Description |
✅ |
Esc |
end Insert mode, back to Normal mode |
✅ |
Ctrl+[ |
Command Mode |
Writing and Quitting
Status |
Key |
Description |
✅ |
: |
Open command palette |
✅ |
:q |
Quit current buffer, unless changes have been made. Exit Vim when there are no other non-help buffers |
✅ |
:w |
Write the current file and exit. |
Motions
Left-Right Motions
Status |
Key |
Description |
✅ |
h |
left (also: CTRL-H, , or key) |
✅ |
l |
right (also: or key) |
✅ |
0 |
to first character in the line (also: key) |
✅ |
^ |
to first non-blank character in the line |
✅ |
$ |
to the last character in the line (N-1 lines lower) |
g0 |
to first character in screen line (differs from "0" when lines wrap) |
|
g^ |
to first non-blank character in screen line (differs from "^" when lines wrap) |
|
g$ |
to last character in screen line (differs from "$" when lines wrap) |
|
| |
to column N (default: 1) |
|
f |
to the Nth occurrence of to the right |
|
F |
to the Nth occurrence of to the left |
|
t |
till before the Nth occurrence of to the right |
|
T |
till before the Nth occurrence of to the left |
|
; |
repeat the last "f", "F", "t", or "T" N times |
|
, |
repeat the last "f", "F", "t", or "T" N times in opposite direction |
|
Up-Down Motions
Status |
Key |
Description |
✅ |
k |
up (also: CTRL-P and ) |
✅ |
j |
down (also: CTRL-J, CTRL-N, , and ) |
- |
up, on the first non-blank character |
|
+ |
down, on the first non-blank character (also: CTRL-M and ) |
|
_ |
down N-1 lines, on the first non-blank character |
|
✅ |
G |
goto last line, on the first non-blank character |
✅ |
gg |
goto frst line, on the firstnon-blank character |
% |
goto line N percentage down in the file. N must be given, otherwise it is the % command. |
|
matching brace |
% |
jump to matching brace, C-style comment, C/C++ preprocessor conditional |
gk |
up N screen lines (differs from "k" when line wraps) |
|
gj |
down N screen lines (differs from "j" when line wraps) |
|
✅ |
CTRL-F |
page down |
✅ |
CTRL-B |
page up |
Word Motions
Status |
Key |
Description |
✅ |
w |
words forward |
✅ |
W |
N blank-separated WORDS forward |
✅ |
e |
forward to the end of the word |
✅ |
E |
forward to the end of the Nth blank-separated WORD |
✅ |
b |
words backward |
✅ |
B |
N blank-separated WORDS backward |
✅ |
ge |
backward to the end of the Nth word |
✅ |
gE |
backward to the end of the Nth blank-separated WORD |
Insert Mode Commands
Status |
Key |
Description |
✅ |
a |
append text after the cursor |
✅ |
A |
append text at the end of the line (N times) |
✅ |
i |
insert text before the cursor (N times) (also: ) |
✅ |
I |
insert text before the first non-blank in the line (N times) |
✅ |
o |
open a new line below the current line, append text (N times) |
✅ |
O |
open a new line above the current line, append text (N times) |
Deleting Text
Status |
Key |
Description |
✅ |
x |
delete characters under and after the cursor |
|
delete N characters under and after the cursor |
|
✅ |
X |
delete N characters before the cursor |
dw, dW, db, dB, de, dE |
d{motion} |
delete the text that is moved over with {motion} |
{visual}d |
delete the highlighted text |
|
✅ |
dd |
delete N lines |
✅ |
D |
delete to end-of-line (and N-1 more lines) |
J |
join N-1 lines (delete newlines) |
|
{visual}J |
join the highlighted lines |
|
Deleting and Inserting
Status |
Key |
Description |
✅ |
C |
Delete from the cursor position to the end of the line and enter insert mode |
✅ |
cw |
Delete from the cursor position to the end of the word and enter insert mode |
✅ |
cW |
Delete from the cursor position to the end of the WORD and enter insert mode |
✅ |
ciw |
Delete word and enter insert mode |
✅ |
caw |
Delete word, right-side blanks and enter insert mode |
✅ |
s |
Delete character under cursor and enter insert mode |
Changing Text
Status |
Key |
Description |
✅ |
<< |
move N lines one shiftwidth left |
✅ |
>> |
move N lines one shiftwidth right |
Undo/Redo
Status |
Key |
Description |
✅ |
u |
undo last change |
✅ |
CTRL-R |
redo last undone change |
U |
restore last changed line |
|
Contributing
See here for how to run a development environment and make contributions.
This project is maintained by a group of awesome contributors. Thank you! ❤️
License
MIT