光标移动
0行首
$行尾
gg第一行
G最后一行
nG<Enter>移到第n行
n<Enter>向后移n行
n<space>向后移n个字符
pageup向上翻页
pagedown向下翻页
插入
i光标前
I行首插入
a光标后插入
A行尾插入
o在下一行插入
O在上一行插入
复制
yy复制当前行
5yy复制从当前行开始的5行
粘贴
p粘贴到下一行
P粘贴到上一行
删除
dd删除当前行
5dd删除从当前行开始向后的5行
dnG删除从第n行到当前行的数据
dG删除从当前行到最后一行的数据
D从光标位置删除到行尾
x向后删除1个字符
nx向后删除n个字符
X向前删除1个字符
搜索
/str从光标位置向后搜索str
?str从光标位置向前搜索str
n查找下一个
N查找上一个
替换
:s/abc/123/g把abc全部替换成123
:s/abc/123/gc同上,但是要用户确认是否替换
保存
:w保存
:w!强制保存
:w filename文件另存为filename
:3,7 w filename将第3到第7行的数据存入filename
退出
:q退出
:q!强制不保存退出
:qw!强制保存退出
:x保存并退出
撤销
u退回前一个动作
ctrl+r重复前一上动作
:e!文档还原到原始状态
块操作
v光标经过的字符被选中
V光标经过的行被选中
y复制被选中的数据
d删除被选中的数据
多文件编辑
vim file1 file2同时打开多个文件
:files列出vim当前打开的文件列表
:n编辑下一个文件
:N编辑上一个文件
多窗口操作
:split file2在新窗口打开另一个文件file2 (split可简写为sp)
:vsplit file2水平分割窗口
ctrl+w =窗口等宽
ctrl+w h移动到左边的窗口
ctrl+w j移动到下边的窗口
ctrl+w k移动到上边的窗口
ctrl+w l移动到右边的窗口
显示行号
set nu显示行号
set nonu取消显示行号
读入其他文件
:r filename把filename中的内容插入到当前光标所在的位置
执行shell命令
:!shellcommand暂时离开vim执行shell命令