一、一般模式
1、光标移动
% # 可以匹配{},"",(),[]之间跳转
Ctrl + f # 屏幕向前翻动一页(常用)
Ctrl + b # 屏幕向后翻动一页(常用)
Ctrl + d # 屏幕向前翻动半页
Ctrl + u # 屏幕向后翻动半页
Ctrl + e # 下滚一行
n<space> # 光标向右移动这一行的n个字符,例如20<space>,则光标会向右移动20个字符
n<Enter> # 光标向下移动n行(常用)
0 # (这是数字0) 移动到这一行的第一个字符处(常用)
$ # 移动到这一行的最后一个字符处(常用)
2$ # 跳转到下一行的行尾。
b # 上一个词的词首(常用)
w # 下一个词的词首(常用)
e # 下一个词的词尾
<> # v 模式选中后进行缩进
h,j,k,l # 左,下,上,右。
H # 光标移动到这个屏幕最上方的那一行
M # 光标移动到这个屏幕中央的那一行
L # 光标移动到这个屏幕最下方的那一行
nH # 跳转到当前屏的第n行
nL # 跳转到当前屏的倒数第n行。
zt # 当前编辑行置为屏顶。
zz # 当前编辑行置为屏中。
zb # 当前编辑行置为屏底。
G # 移动到这个文件的最后一行(常用)
nG # 移动到这个文件的第n行.例如20G,则会移动到这个文件的第20行(可配合:set nu)
gg # 跳转到文件首。
() # 跳转到当前的行首、行尾。
{} # 向上、向下跳转到最近的空行。
[{ # 跳转到目前区块开头。
]} # 跳转到目前区块结尾。
:n # 跳转到n行。
f'n' # 跳转到下一个"n"字母后
2、查找替换
/word # 输入关键字,发现不是要找的,直接再按 n,向后 查找直到找到为止。
?word # 输入关键字,发现不是要找的,直接再按 n,向前 查找直到找到为止。
:n1,n2s/word1/word2/g # 在第n1与n2行之间查找word1这个字符串,并将该字符串替换为word2(常用)
:1,$s/word1/word2/g # 从第一行到最后一行查找word1字符串,并将该字符串替换为word2(常用)
:1,$s/word1/word2/ge # 从第一行到最后一行查找word1字符串,并将该字符串替换为word2,且在替换前显示提示符让用户确认(confirm)(常用)
# (经验证,并没有提示符让用户确认。)
3、删除 复制 粘贴
u # 恢复前一个动作(常用)
x,X # x为向后删除一个字符,X为向前删除一个字符(常用)
nx # 向后删除n个字符
D # 删除从当前光标到光标所在行尾的全部字符
dd # 删除光标所在的那一整行(常用)
ndd # 删除当前行及其后n-1行(常用)
d1G # 删除光标所在行到第一行的所有数据
dG # 删除光标所在行到最后一行的所有数据
dw # 删除一个单词/光标之后的单词剩余部分。
d4w # 删除4个word
yy # 复制光标所在行(常用) 或者 Y
yw # 将光标所在之处到字尾的字符复制到缓冲区中
nyy # 复制光标所在行的向下n行,例如,20yy则是复制20行(常用)
nyw # 复制n个字到缓冲区
y1G # 复制光标所在行到第一行的所有数据
yG # 复制光标所在行到最后一行的所有数据
n1,n2 co n3 # 复制第n1行到第n2行之间的内容到第n3行后面
p # 粘贴在光标下一行(常用)
P # 粘贴在光标上一行(常用)
J # 将光标所在行与下一行的内容结合成一行
4、移动
n1,n2 m n3 # 将n1行到n2行之间的内容移至n3行下
5、选择
V # 选择当前行
^V # 矩形选择
v3w # 选择三个字符
6、大小写转换
gUU # 将当前行的字母改为大写
guu # 将当前行的字母改为小写
gUw # 将当前光标下的单词改为大写
guw # 将当前光标下的单词改为小写
ggguG # 整篇大写
gggUG # 整篇小写
二、编辑模式
i # 当前光标所在处插入:在当前光标所在处插入输入的文字,已存在的字符会向后退(常用)
a # 光标所在处下一个字符处添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退(常用)
I # 行首插入:在当前光标所在处的行首开始插入(常用)
A # 行尾添加:由光标所在处的行尾开始输入(常用)
o # 在下一行插入新的一行:从光标所在处的下一行插入一空白行,并从行首开始输入字符(常用)
O # 在上一行插入新的一行:从光标所在处的上一行插入一空白行,并从行首开始输入字符(常用)
r # 替换:替换光标所指的那一个字符(常用)
R # 替换:一直替换光标所指的文字,直到按下Esc为止(常用)
Esc # 退出编辑模式,回到一般模式(常用)
三、命令行模式
:q # 退出vi(常用)
:q! # 若曾修改过文件,又不想保存,使用!为强制退出不保存文件
:w # 将编辑的数据写入硬盘文件中(常用)
:w! # 若文件属性为只读,强制写入该文件
:wq # 保存后退出
:wq! # 强制保存后退出(常用)
ZZ # 强制保存后退出(超方便)
:w filename # 将编辑数据保存为另一个文件(类似另存新文档) 所有filename都要加后缀
:r filename # 在编辑的数据中,将filename这个文件内容加到光标所在行的后面
:e filename # 打开并编辑指定名称的文件
n1,n2 w filename # 将n1到n2的内容保存为filename这个文件
:set nu # 显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu # 与set nu相反,为取消行号