VIM Cheat Sheet

Panduan singkat tentang shortcut / keybind VIM / Nvim yang wajib diketahaui


Daftar Isi

Apa itu VIM?

Vim merupakan text editor yang yang ada di hampir semua linux. Hampir semua pekerjaan seputar text bisa dilakukan melalui VIM.

Jika anda baru masuk di dunia linux dan programming, belajar VIM akan sangat membantu kamu untuk bisa mengerjakan pekerjaan lebih cepat di masa yang akan datang.

Saat menggunakan VIM, anda mungkin tidak akan menyentuh mouse lagi, karena sebagian besar perintah dan navigasi bisa dilakukan hanya melalui keyboard saja.

VIM Modes

VIM memiliki 3 mode yaitu:

  • Normal Mode
  • Insert Mode
  • Command Mode

Normal Mode

Pada normal mode, kita bisa memindahkan cursor di dalam file, menghapus text, dan melakukan sejumlah macam perintah.

Untuk bisa masuk ke normal mode, cukup menekan Esc pada keyboard.

Insert Mode

Pada insert mode, anda bisa melakukan input text atau mengetikkan isi dokumen yang ingin dibuat.

Anda bisa masuk ke insert mode dengan menekan i pada keyboard

Command Mode

Pada command mode anda bisa melakukan sejumlah perintah terhadap isi file / dokumen yang sedang dibuka. Seperti search and replace di vim.

Untuk masuk ke command mode, tekan Esc lalu : pada keyboard.

VIM Commands

Global

Command Description
:h[elp] keyword Open help for keyword.
:sav[eas] file Save the file as file.
:clo[se] Close the current file.
:ter[minal] Open a terminal.
K Open help for word under cursor.

Cursor movement

Command Description
h Move left.
j Move down.
k Move up.
l Move right.
gj Move down a screen.
gk Move up a screen.
H Move to top of screen.
M Move to middle of screen.
L Move to bottom of screen.
w Move forward one word.
W Move forward one WORD.
e Move to end of word.
E Move to end of WORD.
b Move back one word.
B Move back one WORD.
ge Move to end of previous word.
gE Move to end of previous WORD.
% Move to matching character (default supported pairs: ‘()’, ‘{}’, ‘[]’).
0 Move to the start of the line.
^ Move to the first non-blank character of the line.
$ Move to the end of the line.
g_ Move to the last non-blank character of the line.
gg Move to the first line of the file.
G Move to the last line of the file.
5G Move to line 5.
gd Move to the definition of the word under the cursor.
gD Move to the definition of the WORD under the cursor.
fx Move to the next occurrence of character x.
Fx Move to the previous occurrence of character x.
tx Move to the character before the next occurrence of character x.
Tx Move to the character after the previous occurrence of character x.
; Repeat the previous f, t, F, or T movement.
, Repeat the previous f, t, F, or T movement, but in the opposite direction.
} Move to the next paragraph (or function/block, when editing code).
{ Move to the previous paragraph (or function/block, when editing code).
zz Center cursor on screen.
Ctrl + e Move screen down one line (without moving cursor).
Ctrl + y Move screen up one line (without moving cursor).
Ctrl + b Move back one full screen.
Ctrl + f Move forward one full screen.
Ctrl + d Move forward half a screen.
Ctrl + u Move back half a screen.

Insert mode

Command Description
i Insert before the cursor.
I Insert at the beginning of the line.
a Insert (append) after the cursor.
A Insert (append) at the end of the line.
o Append (open) a new line below the current line.
O Append (open) a new line above the current line.
ea Insert (append) at the end of the word.
Ctrl + h Delete the character before the cursor.
Ctrl + w Delete the word before the cursor.
Ctrl + j begin a new line.
Ctrl + t Shift the current line one tab to the right.
Ctrl + d Shift the current line one tab to the left.
Ctrl + n Insert the next completion of the word under the cursor.
Ctrl + p Insert the previous completion of the word under the cursor.
Ctrl + rx Insert the register x contents.
Ctrl + ox Temporarily enter normal mode to issue a single command.
ESC Exit insert mode.

Editing

Command Description
r Replace a single character.
R Replace multiple characters.
J Join line below to the current one with one space in between.
gJ Join line below to the current one without space in between.
gwip Reformat paragraph.
g~ Switch case of character under cursor.
gu Make character under cursor lowercase.
gU Make character under cursor uppercase.
cc Change (replace) an entire line.
c$ Change (replace) to the end of the line.
C Change (replace) to the end of the line.
ciw Change (replace) the entire word.
cw Change (replace) to the end of the word.
ce Change (replace) to the end of the word.
s Delete character under cursor and substitute text.
S Delete line and substitute text (same as cc).
xp Transpose two letters (delete and paste).
u Undo.
U Undo all changes on line.
Ctrl + r Redo.
. Repeat last command.

Marking text (visual mode)

Command Description
v Start visual mode, mark lines, then do a command (like y-yank).
V Start linewise visual mode.
o Move to other end of marked area.
O Move to other corner of block.
Ctrl + v Start visual block mode.
aw Mark a word.
ab A block with ()
aB A block with {}
at A block with <>
ib Inner block with ()
iB Inner block with {}
it Inner block with <>
Esc Exit visual mode.

Visual commands

Command Description
> Shift text right.
< Shift text left.
y Yank (copy) marked text.
d Delete marked text.
~ Switch case.
u change marked text to lowercase.
U Change marked text to uppercase.

Registers

Command Description
:reg[isters] List all registers.
"xy Yank text into register x.
"xp Paste text from register x.
"xP Paste before cursor.
"+y Yank into system clipboard.

Marks and positions

Command Description
:marks List all marks.
ma Set current position for mark a.
``a` Jump to mark a.
y'a Yank to mark a.
``0` Jump to start of line.
``"` Jump to last edit position.
``.` Jump to last edit position.
`` Jump to last edit position.
:ju[mps] List all jump positions.
Ctrl + o Jump to previous position.
Ctrl + i Jump to next position.
:changes List all changes.
g, Jump to previous change.
g; Jump to next change.
Ctrl + j Jump to next change.

Macros

Command Description
qa Start recording macro a.
q Stop recording macro.
@a Execute macro a.
@@ Execute last macro.

Cut and paste

Command Description
yy Yank (copy) a line.
2yy Yank (copy) 2 lines.
yw Yank (copy) the characters of the word from the cursor position to the start of the next word.
y$ Yank (copy) to end of line.
yiw Yank (copy) inner word.
yaw Yank (copy) a word including the surrounding white space.
p Put (paste) the clipboard after cursor.
P Put (paste) before cursor.
gp Put (paste) after cursor.
gP Put (paste) before cursor.
dd Delete (cut) a line.
2dd Delete (cut) 2 lines.
dw Delete (cut) the characters of the word from the cursor position to the start of the next word.
D Delete (cut) to the end of the line.
d$ Delete (cut) to the end of the line.
diw Delete (cut) inner word.
daw Delete (cut) a word including the surrounding white space.
x Delete (cut) character.

Indent text

Command Description
>> Shift text right.
<< Shift text left.
>% Shift selected lines right.
<% Shift selected lines left.
>ib Shift inner block right.
<ib Shift inner block left.
>at Shift block right.
<at Shift block left.
3== Auto indent 3 lines.
=% Auto indent selected lines.
=iB Auto indent inner block.
gg=G Auto indent whole file.
]p Paste and indent.

Exiting

Command Description
:w Write (save) the file, but don’t exit.
:w !sudo tee % Write out the current file using sudo.
:wq Write (save) and quit.
:x Write (save) and quit.
ZZ Write (save) and quit.
:q Quit (fails if there are unsaved changes).
:q! Quit and throw away unsaved changes.
ZQ Quit and throw away unsaved changes.
:wqa Write (save) and quit on all tabs.
:qa Quit on all tabs.

Search and replace

Command Description
/pattern Search for pattern.
?pattern Search backward for pattern.
\vpattern Search for lines not containing 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.
:s/old/new/g Replace all old with new in the current line.
:s/old/new/gc Replace all old with new in the current line with confirmations.
:noh[lsearch] Remove highlighting of search matches.

Search in multiple files

Command Description
:vimgrep /pattern/ {file} Search for pattern in multiple files.
:cn[ext] Jump to the next match.
:cp[revious] Jump to the previous match.
:cope[n] Open a window containing the list.
:ccl[ose] Close the window.

Tabs

Command Description
:tabe Open a new tab.
:tabnew {page.words.file} Open a new tab.
gt Move to the next tab.
:tabn[ext] Move to the next tab.
gT Move to the previous tab.
:tabp[revious] Move to the previous tab.
#gt Move to tab #.
:tabm[ove] {number} Move the current tab to the {number}th position (indexed from 0).
:tabc[lose] Close the current tab.
:tabo[nly] Close all tabs except for the current one.
:tabr[ewind] Move to the first tab.
:tabfir[st] Move to the first tab.
:tabl[ast] Move to the last tab.
:tabs List all tabs.
:tabdo Run a command for each open tab.
:tabdo {cmd} Run {cmd} for each open tab.

Working with multiple files

Command Description
:e[dit] {file} Edit a file in a new buffer.
:bn[ext] Go to the next buffer.
:bp[revious] Go to the previous buffer.
:bd[elete] Delete a buffer.
:b[uffer]{number} Go to buffer {number}.
:b[uffer] file Go to buffer {file}.
:ls List all open buffers.
:buffers List all open buffers.
:sp[lit] {file} Open a file in a new buffer and split window.
:vsp[lit] {file} Open a file in a new buffer and vertically split window.
:vert[ical] ba[ll] Open a file in a new buffer and vertically split window.
:tab ba[ll] Open a file in a new buffer and split window.
:tabe[dit] {file} Open a file in a new buffer and split window.
:tabnew {file} Open a file in a new buffer and split window.
:tab sball Open a file in a new buffer and split window.
Ctrl + ws Split window.
Ctrl + ww Move to the next window.
Ctrl + wq Close the current window.
Ctrl + wv Split window vertically.
Ctrl + wh Move to the window on the left.
Ctrl + wl Move to the window on the right.
Ctrl + wj Move to the window below.
Ctrl + wk Move to the window above.
Ctrl + w= Make all windows the same height.
Ctrl + wH Move the current window to the far left.
Ctrl + wL Move the current window to the far right.
Ctrl + wJ Move the current window to the bottom.
Ctrl + wK Move the current window to the top.

Akhir kata

Ternyata cukup banyak perintah yang bisa dilakukan di VIM. Ini hanya sebagian daftar saja, di antara banyak sekali hal yang bisa dilakukan di VIM.

Anda bisa melihat daftarnya melalui :help di VIM. Tapi daftar ini sudah cukup lengkap untuk sekedar melakukan pekerjaan dengan lebih cepat menggunakan VIM.

Semoga bermanfaat.

Menampilkan Nama Tamu Undangan Online dengan Javascript
Ditulis oleh Rafi pada Sunday, 20 November 2022
mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

Baca juga

Vim Replace Comma Into New Line

Vim Replace Comma Into New Line

words min read

comments powered by Disqus