VIM
Installation
git clone https://github.com/vim/vim && cd vim
./configure --enable-python3interp
sudo make
sudo make install
Navigation
j down
k up
h left
l right
$ to the end of line
^ to the beginning of the first word
0 move the the beginning of the line
{ to previous empty line
} to next empty line
gg to the beginning of the file
G or :$ to the end of the file
<c-f> forward page
<c-b> back page
w or W next word
b or B beginning of word
e or E end of word
z<enter> scroll to let the current line at the top of the screen
18gg or 18G or :18 go to line 18
<c-w> then hjkl switch windows
<leader>d go to definition of a python object with jedi-vim. <leader> is mapped to \ by default.
<c-o> go back to where the cursor was just now.
<c-i> go forward if you used go back.
<c-]> go to the tag. Usually used in :help.
<c-[> go back from the tag.
Modify
c change
y copy
d delete
gq format to a paragraph with textwidth.
Registers
" + [register_name].
The register name can be 0-9 or a-z, or some other special ones.
"_ the black hole register.
"1yy copy the current line to register 1.
"1p paste the content in register 1.
Search
:vimgrep */.py 'import numpy as np'
Select
v select mode
V select lines
<c-v> select blocks
Replace
:%s/origin/destiny/g replace all. % means the entire file. Without it, it would only do the current line.
:%s/origin/destiny/gc replace interactively.
You can also use register to copy paste things for the word you want to search and replace. Just select and use y to copy,
and paste with <c-r>".
Comment
<c-v> to select a block. I to insert a // or # at the beginning of the line.
Command
:e open
:w save
:x save & quit
:q quit
:make makefile
:cwindow or :cw quickfix window
:r insert a file content to curser
:set nu turn on line number.
:set nonu turn of line number.
:set nu! toggle line number.
Replace nu with any other option.
Windows
<C-w>n new horizontal split (editing a new empty buffer)
<C-w>s split window horizontally (editing current buffer)
<C-w>v vsplit window vertically (editing current buffer)
<C-w>c close window
<C-w>o close all windows, leaving :only the current window open
za //fold and unfold code blocks
+g //go to definition
gt //next tab
gT //previous tab
NerdTree
for directory:
p //parent
x // close
o // open
for file:
o // open
s //split
gs //silent split
vim-test
<leader>+ta run all tests. This is remaped by me.
<leader>+tn nearest.
<leader>+tf file.
Search with CtrlP
To search for files and open:<c-p>
Buffers
switch between buffers:
:ls " show buffers
4
:bd close buffer