vi命令
1. 移动光标
k |
上 |
j |
下 |
h |
左 |
l |
右 |
w |
下一个单词开始 |
2w |
下下个单词 |
e |
这个单词末尾 |
3e |
第三个单词末尾 |
$ |
行尾 |
^或0 |
行首 |
Ctrl-g |
显示当前位置 |
G |
文件末尾 |
gg |
文件开始 |
123G |
第123行 |
Ctrl-o |
回到前一个位置 |
ctrl-i |
回到后一个位置 |
2. 插入
i |
在当前字符前插入 |
a |
在当前字符后插入 |
A |
在行尾插入 |
o |
当前行后插入一行 |
O |
当前行前插入一行 |
<ESC> |
退回普通模式 |
3. 删除
x |
删除一个字符 |
dw |
删除到下个单词开始 |
d2w |
删除两个单词 |
de |
删除到这个单词末尾 |
d$ |
删除到行尾 |
dd |
删除整行 |
2dd |
删除2行 |
4. 修改
r |
替换一个字符 |
R |
替换多个字符 |
ce或cw |
替换到单词末尾 |
c$ |
替换到行尾 |
c2w |
替换2个单词 |
5. 查找
/ |
向后查找 |
? |
向前查找 |
n |
继续查找 |
N |
反向继续查找 |
% |
查找匹配的括号 |
:s/old/new |
将这一行中的一个old字符串替换成new。 |
:s/old/new/g |
将这一行中所有old字符串替换成new。 |
:%s/old/new/g |
将文件内所有old字符串替换成new。 |
:%s/old/new/gc |
将文件内所有old字符串替换成new,每次替换前提示确认。 |
:#,#s/old/new/g |
将文件中某两行间的old字符串替换成new。 |
:set ic |
查找时忽略大小写 |
:set noic |
区分大小写 |
:set hls |
高亮显示查找结果 |
:set nohls |
取消高亮查找结果 |
:nohlsearch |
取消上次查找结果的高亮显示 |
:set is |
增量搜索 |
:set nois |
取消增量搜索 |
:/abc\c |
临时忽略大小写查找字符串abc |
6. 恢复
u |
undo |
U |
整行修改undo |
Ctrl-R |
redo |
7. 复制
v |
选择一部分文本 |
y |
复制选择的部分 |
yw |
复制一个单词 |
p |
插入复制或删除的内容 |
8. 文件
:q! |
不保存退出 |
:w |
保存 |
:wq |
保存退出 |
:w newfile |
另存为newfile文件(或者选择的部分写到新文件) |
:r file |
将文件file内容插入到当前位置 |
:r !ls |
将ls命令的执行结果插入到当前位置 |
:!make |
执行外部命令make |
:e abc |
打开abc文件编辑 |
9. 帮助
F1 |
帮助 |
:help |
帮助 |
:help w |
查看w命令帮助 |
:q |
退出帮助 |
Ctrl-w Ctrl-w |
切换窗口 |
<Tab> |
补全命令 |
Ctrl-d |
补全命令列表 |