Shengting Cao's Notebook ᕦʕ •ᴥ•ʔᕤ

VIM Note

reference 1, vim cheat sheet

reference 2, vim command summary

multi-window

lmuti-window basic operations
 :e filename      - edit another file
 :split filename  - split window and load another file
 ctrl-w up arrow  - move cursor up a window
 ctrl-w ctrl-w    - move cursor to another window (cycle)
 ctrl-w_          - maximize current window
 ctrl-w=          - make all equal size
 10 ctrl-w+       - increase window size by 10 lines
 :vsplit file     - vertical split
 :sview file      - same as split, but readonly
 :hide            - close current window
 :only            - keep only this window open
 :ls              - show current buffers
 :b 2             - open buffer #2 in this window
 :bnext or :bn - go to the next buffer
 :bprev or :bp - go to the previous buffer
 :bd - delete a buffer (close a file)
 :ls - list all open buffers
 :sp file - open a file in a new buffer and split window
 :vsp file - open a file in a new buffer and vertically split window
 Ctrl + ws - split window
 Ctrl + ww - switch windows
 Ctrl + wq - quit a window
 Ctrl + wv - split window vertically
 Ctrl + wh - move cursor to the left window (vertical split)
 Ctrl + wl - move cursor to the right window (vertical split)
 Ctrl + wj - move cursor to the window below (horizontal split)
 Ctrl + wk - move cursor to the window above (horizontal split)

cursor movement

cursor movement
h - move cursor left
j - move cursor down
k - move cursor up
l - move cursor right
H - move to top of screen
M - move to middle of screen
L - move to bottom of screen
w - jump forwards to the start of a word
W - jump forwards to the start of a word (words can contain punctuation)
e - jump forwards to the end of a word
E - jump forwards to the end of a word (words can contain punctuation)
b - jump backwards to the start of a word
B - jump backwards to the start of a word (words can contain punctuation)
% - move to matching character (default supported pairs: '()', '{}', '[]' - use <code>:h matchpairs</code> in vim for more info)
0 - jump to the start of the line
^ - jump to the first non-blank character of the line
$ - jump to the end of the line
g_ - jump to the last non-blank character of the line
gg - go to the first line of the document
G - go to the last line of the document
5G - go to line 5
fx - jump to next occurrence of character x
tx - jump to before next occurrence of character x
Fx - jump to previous occurence of character x
Tx - jump to after previous occurence of character x
; - repeat previous f, t, F or T movement
, - repeat previous f, t, F or T movement, backwards
} - jump to next paragraph (or function/block, when editing code)
{ - jump to 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 -
Ctrl + d -
Ctrl + u -

Search and replace

Search and replace
/pattern - search for pattern
?pattern - search backward for pattern
\vpattern - 'very magic' pattern: non-alphanumeric characters are interpreted as special regex symbols (no escaping needed)
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
:noh - remove highlighting of search matches
Search in multiple files
:vimgrep /pattern/ {file} - search for pattern in multiple files
	e.g.:vimgrep /foo/ **/*
:cn - jump to the next match
:cp - jump to the previous match
:copen - open a window containing the list of matches