vi +n filename 打开文件并将光标置于第n行行首
vi + filename 打开文件并将光标置于行尾
vi +/pattern filename 打开文件并将光标置于匹配模式pattern的第一个串处
vi -r filename 当上次使用vi编辑文件时系统崩溃使用-r恢复文件
vi -R filename 以只读模式打开文件
#############移动光标类#########
k <=> 向上键
j <=> 向下键
h <=> 向左键
l <=> 向右键
数字0 光标移动至当前行行首
$ 光标移动至当前行行尾
{ 光标移动至当前段段首
} 光标移动至当前段段尾
( 光标移动至当前句句首
) 光标移动至当前句句尾
nG 光标移动至第n行行首 可以使用1G来返回页首
n+ 光标下移n行
n- 光标上移n行
n$ 光标下移n行(包含当前行)并置于行尾 例如:1$ 移至当前行尾 2$ 移至下一行行尾
H 移至屏幕顶行,在往上就翻不上了。只能使用nG来实现了。
M 移至屏幕中间行
L 移至屏幕最后一行
#############屏幕翻滚类#########
ctrl+u 向文件首翻半屏
ctrl+d 向文件尾翻半屏
ctrl+f 向文件尾翻一屏
ctrl+b 向文件首翻一屏
#############插入文本类#########(按ESC键进入编辑模式)
i 光标前插入字符
I 当前行行首插入字符
a 光标后插入字符
A 当前行行尾插入字符
o 当前行下一行新建一行进行插入
O 当前行上一行新建一行进行插入
#############替换字符类#########(按ESC键进入编辑模式)
r 替换当前光标所指字符。例如:用a替换b,将光标定格在b上,然后按r键紧跟着按a键,则完成字符a替换b的任务
R 替换当前字符其后的字符,直至按ESC键结束
#############删除文本类#########(按ESC键进入编辑模式)
s 删除光标处字符,并进入输入模式
S 删除光标所在行,并进入输入模式,等同于cc
d0(数字0) 删除光标所在处字符至行首所有字符
d$ 删除光标所在字符至行尾所有字符
dd 删除当前行
ndd 删除当前行及其后n-1行
x 删除当前字符,不进入输入模式
X 删除光标前一个字符。等价于db
de 删除光标所在字的自光标所在处后所有字符包括当前字符。例如“abc_123”光标在b字符处,则de删除bc字符,剩余字符串为:“a_123”
u 恢复修改,类似windows下的ctrl+z
#############搜索及替换命令#########
/pattern 从光标所在处向文件尾搜索
?pattern 从光标所在处向文件首搜索
n 在同一方向查看搜索到的字符串
N 在反方向查看搜索到的字符串
:s/p1/p2/g 将当前行中所有p1替换成p2
:g/p1/s//p2/g 将当前文件中所有p1替换成p2
:n1,n2s/p1/p2/g 将第n1行到n2行中所有p1替换成p2
#############行拷贝命令#########
:n1,n2 co n3 将n1行到n2行(包含n1n2)之间的内容拷贝至n3行下
:n1,n2 m n3 将n1行到n2行(包含n1n2)之间的内容转移至n3行下,相当于剪切
:n1,n2 d 将n1行到n2行(包含n1n2)之间的内容删除
:e newfilename 打开新文件newfilename进行编辑
:!command 执行shell命令
:r!command 将命令command执行结果输出至光标所在行的下一行
:number 查看当前光标所在行的行号
ctrl+g 显示当前光标所在行的行号以及所占百分比