一、 一般模式:
1 移动光标
h: 左移
l: 右移
j: 下移动
k: 上移动
0 or Home: 移动光标到行末
$ or End: 移动光标到行头
H: 光标移动到屏幕最上方的行头
L:光标移动到屏幕最下方的行头
G: 光标移动到文件最后一行行头
nG: 输入行数n,然后输入G,则光标移动到文件第多少行
gg: 移动这个文件第一行,等价于1G
n[Enter]: 光标向下移动多少行,5按回车,在当前行数上+5.
2 翻页
[ctrl+f]: 下翻一页 等价于 PageDown
[ctrl+b]: 上翻一页等价于 PageUp
[ctrl+d]: 下翻半页
[ctrl+u]: 上翻半页
3 查询 & 替换
/word: 向下查询word
?word: 向上查询word
n: 向下继续查找word
N: 反向继续查找word
:num1,num2s/word1/word2/g:在num1行到num2行将word1 替换成word2
:1,$ s/word1/word2/g: 在1行到最后1行查找word1,并将word1 替换成word2,替换不需要用户确认
:1,$ s/word1/word2/gc: 在1行到最后1行查找word1,并将word1 替换成word2,替换需要用户确认
:set nu: 设置行号
:set nonu: 不设置行号
4 增删行或者字符
x: 向后删除一个字符
X: 向前删除一个字符
nx|nX: 连续删除n个字符
dd: 删除光标一整行
ndd: 删除光标之下n行
dG: 删除光标所在到最后一行数据
d1G: 删除光标所在到第一行的数据
d$: 删除光标所在到该行最末的字符
d0: 删除光标所在到所在行第一个字符之间的字符
yy:复制光标所在行
nyy: 复制光标之下n行
yG: 复制光标所在到最后一行数据
u: 撤销上一步的操作
[ctrl+r]: 上一步的操作再做一次
y1G: 复制光标所在到第一行的数据
y$: 复制光标所在到该行最末的字符
y0: 复制光标所在到所在行第一个字符之间的字符
p: 将复制的数据在光标下一行粘贴
P:将复制的数据在光标上一行粘贴
二、 编辑模式
:w: 保存写入磁盘
:w! 强制写入
:q: 退出vi
:q!: 强制离开不保存文件
:wq: 写入磁盘,保存并离开
ZZ: 如果没有更新,不保存离开,如果有更新,保存离开
:w [filename] 编辑的数据保存为另外一个文件,相当于另存为
:r [filename] 在编辑的数据后,读入file,加载数据后面
:num1,num2 :w [filename] : num1行到num2行的数据另存为某一个文件