1、vi的三种模式
Command Mode/命令行模式、Entry Mode/插入模式和Last-line Mode/底行模式
2、vi命令模式功能键
(1)插入操作
① i 在当前光标位置插入
② I 在当前光标所在行的行首插入
③ a 在当前光标位置的后一个字符插入
④ A 在当前光标所在行的行尾插入
⑤ o 在当前光标所在行下新建一行插入
⑥ O 在当前光标所在行上面新建一行插入
(2)光标移动
①
← H |
↓ J |
↑ K |
→ L |
② G 移到文件尾
gg 移到行首
nG 或ngg 光标定位到第n行
③ f 移动到光标右边的指定字符上,如fx,会定到右边第一个‘x’字符上
F 移动到光标左边的指定字符上
t 移动到光标右边的指定字符之前
T 移动到光标左边的指定字符之前
④ 0或^ 光标定位到行首
⑤ $ 光标定位到行尾
⑦ w 光标向右移一个单词,光标定到首字符
e 光标定到尾字符
b 光标定到单词首字符
⑧ n 跳到当前下n行
⑨ :n 光标定位到第n行 (ps:底行模式下)
空格n 光标定位到第n行
⑩ Ctrl + b 屏幕往后翻动一页
Ctrl + f 屏幕往前翻动一页
Ctrl + u 屏幕往后翻动半页
Ctrl + d 屏幕往前翻动半页
(3)修改操作
① r 替换一个字符
② cw 替换一个单词
③ cc 替换一行
④ C 替换从光标至行尾
(4)删除操作
① x 删除一个字符
② dw 删除当前词
③ ndw 删除n个词
④ dd 删除当前行
⑤ ndd 删除n行
⑥ :m,nd 删除从第m行到第n行
ps:删除后的字符放在剪贴板上,可以用p/P粘贴。
⑦ D 删除到行尾
⑧ dtc 当前行上删除到下一次出现的c字符的前一字符
dfc 当前行上删除到下一次出现的c字符
(5)拷贝操作
① yw 拷贝词
② nyy或nY 拷贝n行
③ :1,4cos3 拷贝从行1至行4在行3之后
④ :4,6m7 移动从行4至行6在行7之后
(6)粘贴操作
① p 当前行下粘贴一行 或 当前光标后一字符粘贴一词
② P 当前行上粘贴一行 或 当前光标处粘贴一词
(7)撤销操作
① u 撤销
② U 撤销到上一次的操作
(8)查找操作
① # 高亮显示当前光标处词
3、vi底行模式功能键
(1):w [newname] 保存 [到新文件]
(2):q 退出
(3):q! 强制退出,不做保存
(4):wq 或 :x或 shift + zz 保存退出
(5)/string 向下查找匹配字符串
?string 向上查找匹配字符串
n 重复刚才同样的搜索
N 以相反的方向,重复刚才同样的搜索
(6)set nu/nonu 显示/取消行号
(7)set ts=4 设置tab长度
(8)noh 去高亮显示状态
(9)ctrl + z 挂起vi; fg 打开挂起的vi
4、快捷键
(1)shift 5 找到对应括号关系
(2)shift 8 找到所有光标处所指定的字符并加高亮
(3)gg=G 从首行到底行缩进
n== 光标所在行起n行缩进
(4),$s/hello/helen/g 从光标处开始hello替换为helen
1,$s/hello/helen/g 第一行开始全部替换
%$s/hello/hellen/g 全部替换