Vim
三个主要模式
- normal mode(command mode)
- Insert mode
- visual mode
normal mode => insert mode
- 在下方插入一行:
o
- 在上方插入一行:
O
- 在当前光标后插入:
a
- 在当前光标前插入:
i
- 在行尾插入:
A
- 在行首插入:
I
光标移动
基础移动
- 上下左右:
hjkl
- 移动到第一行:
gg
- 移动到最后一行:
G
- 移动到指定行:
nG
进阶移动
-
移动到下一个单词的开头:
w
-
移动到下一个单词的结尾:
e
-
移动到上一个单词的开头:
b
-
移动到行首:
0
-
移动到第一个非空字符:
^
-
移动到行尾:
$
-
移动到括号匹配处:
%
-
移动到变量定义处:
gd
(实质是跳到函数内变量第一次出现的位置,若要找文件中第一次出现的位置gD
) -
移动到前一个没有匹配的左大括号处:
[{
复制粘贴
- 复制:
y
- 粘贴:
p
不要害怕尝试
- Undo:
u
- Redo:
C-r
删除
- 删除整行:
dd
- 删除字符:
x
- 删除到行尾:
D
删除操作其实是剪切,删掉的内容在剪切板中
替换
- 替换单个字符:
r
- 替换到行尾:
C / .....
- 修改大小写:
~
Composable
- 删除2个单词
d2w
- 删除单词,做两遍
2dw
2d2w
d5j
删5行 == 在visual mode下选中5行再按d
搜索替换
- 搜索下一个:
/
(下一个按n
,上一个按N
) - 搜索上一个:
?
- 快速搜索当前单词:
#/*
- 将range范围内的from替换成to:
:[range]s/from/to/[flags]
range | description | example |
---|---|---|
21 | line 21 | :21s/olad/new/g |
l | first line | |
$ | last line | |
% | all lines(= 1,$ ) | |
21,25 | Lines 21 to 25 inclusive | |
21,$ | lines 21 to end | |
.,$ | current line to end | |
.+1,$ | line after current line to end | |
.,.+5 | six lines | |
.,.5 | same |
flags
表示操作类型,默认只对第一个匹配的字符进行替换
flags | description |
---|---|
g | 全局替换 |
i | 忽略大小写 |
I | 大小写敏感 |
c | 操作时需要确认 |
& | 复用上次替换命令的flags |
宏
生成从1~100的序列
- 录制宏:
q
- 运行宏:
@
修饰词
i
innera
aroundt
tillf
find
split window
sp
vsp
- 切换窗口
C-w [hjkl]
Mark
- 生成标签
m
- 跳转 `
注释不需要的大段代码
v
以字符为单位进行选择V
以行尾单位进行选择c+V
进入块可视化模式
Tutorial
- 键位图:http://www.viemu.com/vi-vim-cheat-sheet.gif
- https://vimsnake.com/
- http://www.vimgenius.com/