进入命令模式
Esc //进入命令模式
导航
/|\
<--h--j|--k|--l-->
\|/
h //向左
j //向下
k //向上
l //向右
H //屏幕顶,nH顶部第n行
M //屏幕中央
L //屏幕底,nL底部第n行
文件操作
vi filename //打开filename文件
:w //保存文件
:w filename //保存至filename文件
:q //退出编辑器
:q! //退出编辑器,且不保存
:wq //退出编辑器,且保存文件
:new //新建文件
进入编辑模式
a //在当前光标位置的右边添加文本
A //在当前行的末尾位置添加文本
i //在当前光标位置的左边添加文本
I //在当前行的开始处添加文本
O //在当前行的上面新建一行
o //在当前行的下面新建一行
复制
yy //将当前行复制到缓存区,也可以用"ayy复制,"为寄存器标识,"a为寄存器,可以替换为a到z的任意字母。
nyy //将当前行向下n行复制到缓冲区,也可以用"anyy复制进寄存器。
yw //复制从光标开始到词尾的字符。
nyw //复制从光标开始的n个单词。
y^ //复制从光标到行首的内容。
y$ //复制从光标到行尾的内容。
粘贴
p //粘贴剪切板里的内容在光标后,使用ap可粘贴某一缓冲区内的内容。
P //粘贴剪切板里的内容在光标前,使用aP可粘贴某一缓冲区内的内容。
撤销
u //撤销上一步操作
U //撤销对当前行的所有操作
删除
x //删除当前字符
nx //删除从光标开始的n个字符
dd //删除当前行
ndd //向下删除当前行在内的n行
查找
/name //向光标下查找name字符串
?name //向光标上查找name字符串
n //查找下一处
N //查找上一处
替换
:s/old/new //用new替换行中首次出现的old
:s/old/new/g //用new替换行中所有的old
:n,m s/old/new/g //用new替换从n到m行里所有的old
:%s/old/new/g //用new替换当前文件里所有的old
跳转
n+ //向下跳n行
n- //向上跳n行
b //跳至前一单词
w //跳至后一单词
e //跳至词尾
gg //跳至文件的首行
G //跳至文件的底部
nG //跳到行号为n的行
$ //跳至行尾
0 //跳至行头
^ //跳至行头第一个非空字符
zt //把光标所在行移动到屏幕的顶部
zz //把光标所在行处于屏幕的中间
zb //把光标所在行移动到屏幕的底部
Ctrl f //前进一屏,下移
Ctrl b //后退一屏,上移
Ctrl d //前进半屏,下移
Ctrl u //后退半屏,上移
ctrl e //上滚一行
ctrl y //下滚一行