VIM Text Editor Keyboard Commands

vim editor logoVim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files.



Cursor movement in VIM

h move left
move down
k move up
l move right
w jump by start of words (punctuation considered words)
W jump by words (spaces separate words)
e jump to end of words (punctuation considered words)
E jump to end of words (no punctuation)


b jump backward by words (punctuation considered words)
B jump backward by words (no punctuation)
0 (zero) start of line
^ first non-blank character of line
$ end of line
G Go To command (prefix with number)

Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.


Insert Mode  Inserting/Appending text in VIM

i start insert mode at cursor
I insert at the beginning of the line
a append after the cursor
A append at the end of the line
o open (append) blank line below current line (no need to press return)
O open blank line above current line
ea append at end of word
ESC exit insert mode


Editing in VIM

r              replace a single character (does not use insert mode)

J              join line below to the current one

cc            change (replace) an entire line

cw          change (replace) to the end of word

c$            change (replace) to the end of line

s              delete character at cursor and subsitute text

S              delete line at cursor and substitute text (same as cc)

xp           transpose two letters (delete and paste, technically)

u             undo

.               repeat last command


Marking text (visual mode) in VIM

v              start visual mode, mark lines, then do command (such as y-yank)

V             start Linewise visual mode

o             move to other end of marked area

Ctrl+v    start visual block mode

O             move to Other corner of block

aw          mark a word

ab           a () block (with braces)

aB           a {} block (with brackets)

ib            inner () block

iB            inner {} block

Esc          exit visual mode


Visual commands in VIM

>             shift right

<             shift left

y              yank (copy) marked text

d             delete marked text

~             switch case


Cut and Paste in VIM

yy           yank (copy) a line

2yy         yank 2 lines

yw          yank word

y$           yank to end of line

p             put (paste) the clipboard after cursor

P             put (paste) before cursor

dd           delete (cut) a line

dw          delete (cut) the current word

x              delete (cut) current character


Exiting in VIM

:w           write (save) the file, but don't exit

:wq        write (save) and quit

:q            quit (fails if anything has changed)

:q!          quit and throw away changes


Search/Replace in VIM

/pattern                     search for pattern

?pattern                     search backward for pattern

n                                    repeat search in same direction

N                                   repeat search in opposite direction

:%s/old/new/g       replace all old with new throughout file

:%s/old/new/gc     replace all old with new throughout file with confirmations


Working with multiple files in VIM

:e filename             Edit a file in a new buffer

:bnext (or :bn)      go to next buffer

:bprev (of :bp)      go to previous buffer

:bd                             delete a buffer (close a file)

:sp filename           Open a file in a new buffer and split window

ctrl+ws                    Split windows

ctrl+ww                  switch between windows

ctrl+wq                   Quit a window

ctrl+wv                  Split windows vertically


If any feedback, queries are always welcome!

Share on Facebook0
Share on Google+3Tweet about this on TwitterShare on StumbleUpon0Share on LinkedIn0Share on Tumblr0Digg thisPin on Pinterest0Share on Reddit0Email this to someonePrint this page

About Abhijit Sandhan

Abhijit Sandhan
Loves Linux, Blogging, Traveling, Hiking and sharing knowledge!


  1. was looking for the same.. helped me a lot
    can you post commands for nano editor too like this.. thanks in advance

  2. some more shortcuts would be gr8... Ty

Leave a Reply

Your email address will not be published. Required fields are marked *