一、关于vi
vi是最强大的文本编辑器,没有之一,vi作为上古神器,历史悠久,现在还应用如此的广泛,正印证了存在即合理的道理,只要你经常接触linux,必然少不了接触vi。
vi的初次使用可能体验感很不好,就和上古神器一样,强大的武器和工具都是难以驾驭的。当你vi操作熟练后,你会觉得真香,并且你的90%操作都可以摆脱鼠标。
二、创建/打开文件
vi 文件名
打开一个文件,如果文件不存在,就创建它
示例:
vi helloword.c
三、vi的三种模式
vi 有三种模式,命令行模式、插入模式和替换模式,在命令行模式下,任何键盘输入都是命令,在插入模式和替换模式下,键盘输入的才是字符,插入模式和替换模式也合称为编辑模式。
四、vi的常用命令
模式切换命令
Esc 从编辑模式切换到命令行模式
i 在光标所在位置前面开始插入
a 在光标所在的位置后面开始插入
o 在光标所在位置行的下面插入空白行
O 在光标所在位置行的上面插入空白行
I 在光标所在位置行的行首开始插入
A 在光标所在位置行的行末开始插入
保存于退出操作命令
:w回车 存盘。
:w!回车 强制存盘。
:wq回车 存盘退出。
:x回车 存盘退出。
:q回车 不存盘退出。
:q!回车 不存盘强制退出。
方向操作命令
k 类似方向键上
j 类似方向键下
h 类似方向键左
l 类是方向键右
Ctrl+u 向上翻半页
Ctrl+d 向下翻页
跳转操作命令
Ctrl+g 显示光标所在位置的行号和文件的总行数。
nG 光标跳到文件的第n行行首
G 光标跳到文件最后一行
:n回车 光标跳到第n行
0 光标跳到当前行的行首
$ 光标跳到当前行的行尾
w 光标跳到下个单词的开头
b 光标跳到上个单词的开头
e 光标跳到本单词的尾部
删除操作
x 每按一次,删除光标所在位置的一个字符
nx 如"3x"表示删除光标所在位置开始的3个字符
dw 删除光标所在位置到本单词结尾的字符
D 删除本行光标所在位置后面全部的内容
dd 删除光标所在位置的一行
ndd 如"3dd"表示删除光标所在位置开始的3行
复制粘贴操作命令
yy 将光标所在位置的一行复制到缓冲区
yw 复制光标位置到单词的结束到缓冲区
y$ 复制光标位置到行末到缓冲区
yG 复制光标所在行到文件末尾到缓冲区
nyy 将光标所在位置的n行复制到缓冲区
p 将缓冲区里的内容粘贴到光标所在位置
Ctl+insert 复制鼠标选中的文本,相当于Ctl+c
Shift+insert 输出鼠标选中的文本,相当于Ctl+v
备注:以上两个命令在windows和UNIX中是通用的。
替换与查找操作命令
r 替换光标所在位置的一个字符 replace
R 从光标所在位置开始替换,直到按下"Esc"
cw 从光标所在位置开始替换单词,直到按下"Esc"
查找操作:/
示例:
/abcd 在当前打开的文件中查找“abcd”文本内容
n 查找下一个
N 查找上一下
单个替换:
:s/xxx/ccc 把光标所在行第一个xxx字段替换为ccc
单行替换:
:s/xxx/ccc/g 把光标所在行所有xxx字段替换为ccc
全局替换:
:g/xxx/s//ccc/g回车 把文件中全部的xxx替换成ccc
Ctrl+r 反撤销命令,可多次反撤销
u 撤销命令,可多次撤销
其余常用操作命令
- . 重复执行上一次执行的vi命令(与查找替换命令结合起来非常好用)
- 对光标当前所在的位置的字符进行大小写转换
列操作 :Ctrl+V
示例:
Ctrl+V 光标上或下 大写的I 输入需要插入的内容内容 Esc
J 把当前行的下一行接到当前行的尾部
恢复文件
vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:
O 只读打开,不改变文件内容
E 继续编辑文件,不恢复.swp文件保存的内容
R 将恢复上次编辑以后未保存文件内容
Q 退出vi
D 删除.swp文件
或者使用vi -r 文件名来恢复未保存的内容