Skip to content

Instantly share code, notes, and snippets.

@wael34218
Last active December 16, 2021 16:23
Show Gist options
  • Save wael34218/ad902405712b7566506a193bfd4b1e97 to your computer and use it in GitHub Desktop.
Save wael34218/ad902405712b7566506a193bfd4b1e97 to your computer and use it in GitHub Desktop.

Vim Basics

Basic Command Description
h, j, k, l ARROWS Move cursor left, down, up, right (You can also use arrows)
H, M, L Go to the first, middle and last line of current screen
ctrl+ [f, b] Jump forward, backward one full screen
ctrl+ [d, u] Jump down, up one half screen
w, b Move word forward, backward
0, $ Jump to start, end of line
[f] [CHAR] Find the first occurance of CHAR at the current line
i Change to insert mode
o, O Insert new line (below, above) and change to insert mode
I, A Append at the (beginning, end) of the line
d Delete
dd Delete current line
r replace
u Undo
[ctrl r] Redo
gg Go to start of file
G Go to end of file
(#N)gg Go to line N
[ctrl f], [ctrl b] Move (forward, backward) one full screen
yy Copy current line
p Paste current line
v Start visual selection mode
V Start linewise visual mode
[ctrl v] Start block visual mode
[v][i][BRACKET] Select text between bracket
[ctrl v][NAV][I][TEXT][ESC][j] Add indentation
:w , :q, :wq Save, quit, save and quit
:set number Add line numbers
:set tabstop=4 number of space characters that will be inserted when the tab key is pressed
:set shiftwidth=4 Print out lines that matches the regular expression
:set ai Auto indentation
:set expandtab insert space characters whenever the tab key is pressed
:set ts=4 sw=4 expandtab ai last 4 commands at once
/REGEX Search for regular expression
%s/TEXT1/TEXT2/gi Replace TEXT1 with TEXT2 through the entire file

Buffer

Command Description
:e FILE edit a file in a new buffer
:ls list all open buffers
:bd Close buffer
:bn, :bp Buffer (next, previous)
[ctrl ^] Toggle between last opened 2 files
:b(#N) Go to buffer with id N

Tab

Command Description
:tabnew FILE Open file in new tab
:tabn, :tabp Move to (next, previous) tab
:tabc Close tab
:tabo Keep only current tab
(#N)gt Go to tab N

Window

Commands Description
:vsplit Vertical split window
:split Horizontal split window
[ctrl + w] [c] Close window
[ctrl + w] [w] Move cursor to other window
[ctrl + w] [o] Keep current window only
[ctrl + w] [ARROWS] Move cursor to respective window
:Ex Open file explorer
:Vex Vertical split and open explorer
:Sex Split and open explorer

Marks

Commands Description
m<lowercase_letter> Mark current line in a file
'<lowercase_letter> Go to that line
y'<lowercase_letter> Copy from the current position of the cursor to the marked line "a"
m<uppercase_letter> Mark file
'<uppercase_letter> Go to that file

Recording

Commands Description
q<letter> Start recording
q Stop recording
@<letter> Play
29@<letter> Play 29 times

Sessions

Create new session:

:mksession ~/stored_session.vim

Then later you can source that vim file and you'll have your old session back:

:source ~/stored_session.vim

or open vim with the -S option:

vim -S ~/stored_session.vim

Suspend

Suspend running vim:

[ctrl + z]

Resume vim session:

fg

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment