If you don’t have time to watch this video, just take a look at this note. This note is taken from https://github.com/shawncplus/vim-classes with small modification.

https://github.com/shawncplus/dotfiles

this site let you make your own colorscheme

模式切换 Change between modes

如果你不知道Vim 的各种模式,可以参考Vim 模式

Insert -> Normal : ESC/Ctrl-[
Insert -> Command : (Insert -> Normal) -> :

Normal -> Command : :
Normal -> Insert : iIsScCoO
Command -> Normal : Enter

插入模式

i Enter insert mode
I 行首非空字符前插入
s 删除光标下字符,并进入insert mode
S 删除光标所在一行,并进入insert mode行首
a 光标之后进入insert mode
A 光标移动到行尾并进入insert mode
o 在光标下一行插入一行,并进入insert mode
O 在光标上一行插入新行,并进入insert mode
C 删除光标后到行尾并进入insert mode

replace mode

按如下两个按键进入替换模式:

r replace the letter under cursor
R replace under cursor till you press Esc

advanced Move

在Vim中,Word有两种含义,开始我也没搞明白,过了很久才渐渐明白。广义的 WORD 可以是任何两个空格之间的内容,比如 this is a word ,就是四个“字”。侠义的 WORD ,英文单词、标点符号和非字母字符都被当成一个字。如$、%、^、&、*、(、)、-、+、{、}、[、]、~、|、\、<、>、/等,均被当成是一个字。

Vim中使用大写命令一般将字作为广义,小写命令就是作为侠义对待。命令都是成对出现,w 和 W,b 和 B,e 和 E:

w 词向后移动
W WORD is splited by space
b 词向前移动
B WORD向前移动
e 移下一个单词词末
ge 前一个单词词末
E 如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾。
0 Move to the zeroth character of the line
^ move to first non-blank character of the line
$ go to the end of line
g_ last character of the line

用了很多天Vim了移动最多用的还是hjkl,想不起来用这些零碎的命令啊~

以下命令可以用来翻页

Ctrl+f  下一页
Ctrl+b  上一页
Ctrl+d  下半页
Ctrl+u  上半页
H       Move to first letter on top of screen
M 		Move to first letter on middle of screen
L 		Move to first letter on bottom of screen

move inline

fx  向前查找本行中的字符x, 比如想要移动到下一个双引号时,可以使用 `f"` 来实现行内快速移动
F   向左查找

Copy/Paste

p   paste after current position
P   paste before the cursor
yy  copy the current line
y  - Yank. Example: yw (yank word) 光标停留到词第一个字母上 yw 复制单词
y0  copy the data from cursor to begining of the line
y$  copy the data from cursor to end of the line

删除 delete

x   删除光标下单个字符
X   向前删除一个字符,相当于 Backspace
dd  删除光标所在一行,并把该行复制
dw  删除光标所在词
d0  删除光标到该行最前
d$  删除光标到该行最后
J   删除光标所在行的换行符

删除x ,dd ,dw用的情况还挺多的。

撤销/重做 redo

u   撤销上一次编辑 undo
<C-r> Ctrl-R redo

搜索与替换 search replace

/pattern  - 正向搜索,从光标处开始向文件末搜索
?pattern  - 反向搜索,从光标处开始向文件首搜索
n  - 下一个,往下执行搜索命令
N  - 上一个
*  - Word under cursor - forward (bounded)
g* - Word under cursor - forward (unbounded)
#  - Word under cursor - backward (bounded)
g# - Word under cursor - backward (unbounded)
:s/p1/p2/g -将当前行中所有p1均用p2替代
:n1, n2s/p1/p2/g -将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g -将文件中所有p1均用p2替换

Load/Save/Quit/Change File

:e <path/to/file> open file
:w save
:saveas <path/to/file> save to <path/to/file>
:x, ZZ or :wq save and quit (:x only save if necessary)
:q! quit without saving. :qa! to quit even if there are modified hidden buffers
:q! 放弃修改之后可用 :e! 恢复修改 :e! 为放弃为保存的修改

Other

gg 文件开头
G  文件末尾
Ctrl-]
Ctrl-O 跳转到上一个位置
Ctrl-T 标签退栈

参考: