vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
1、vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和末行模式(last line mode),各模式的功能区分如下:
1) 命令行模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
3) 末行模式(last line mode)
设置vi编辑环境、保存文件、退出编辑器,以及多文件内容进行查找、替换等操作。
一、命令行模式(command mode)功能键
1、从命令模式进入到插入模式:
指令 |
说明 |
a |
在光标后插入内容; |
A |
在当前行的末尾插入内容; |
o |
在当前行的下面插入内容; |
O |
在当前行的上面插入内容 |
i |
在光标处插入内容; |
I |
在当前行的行首插入内容 |
2、命令模式下的跳转命令:
指令 |
说明 |
上、下、左、右方向键 |
移动光标 |
pageup或ctrl+B |
向上翻页; |
pagedown或ctrl+F |
向下翻页 |
home键 |
跳到当前行的行首(shift+^/数字0); |
end键 |
跳到当前行的行尾(shift+$) |
G(shift+g) |
跳到文件的最后一行;#G:跳转到文件的第#行 |
gg/1G |
回到文件的第一行行首;10gg:跳到文件的第十行;22gg:跳到文件的第22行; |
H |
跳到当前屏幕的第一行 |
M |
跳到当前屏幕的中间 |
L |
跳到当前屏幕的最后一行 |
w |
一个单词一个单词的向右跳 |
b |
一个单词一个单词的向左跳 |
f |
后面跟想跳转的字母,如:f b,向右跳到最近的一个b字母处 |
3、命令模式下的复制和粘贴命令:
指令 |
说明 |
yy |
复制当前行;比如:10yy:从当前行开始向下复制十行 |
yw |
从光标开始复制一个单词 |
y$ |
复制光标处到行尾所有内容 |
y^ |
复制光标处到行首所有内容 |
p |
(小写) 将缓冲区中的内容粘贴到光标位置处之后 |
P |
(大写) 粘贴到光标位置处之前 |
4、命令模式下的删除\撤消\替换命令:
指令 |
说明 |
dd |
删除当前行;10dd:从当前行开始向下删除10行 |
dw |
从光标开始删除一个单词 |
d$ 删除光标处到行尾所有内容 |
d^ |
删除光标处到行首所有内容 |
x/del |
删除光标处的一个字符 |
u |
撤消上一步操作 |
U |
用于取消对当前行所做的所有编辑 |
ZZ |
保存当前的文件内容并退出vi编辑器 |
ctrl+r |
反撤消 |
r b |
把光标所在处的字符替换成b;r n:把光标处的字符替换成n |
R |
从光标处连续向右替换直到按esc键停止 (光标处开始替换模式) |
5、命令模式下文件内容查找:
指令 |
说明 |
/word |
从上而下在文件中查找字符串“word” |
?word |
从下而上在文件中查找字符串“word” |
n |
定位下一个匹配的被查找的字符串 |
N |
定位上一个匹配的被查找的字符串 |
二、插入模式
就是写入文本内容。
三、末行模式(在“:”后面输入内容)
1、保存和退出:
指令 |
说明 |
w |
保存 |
w aa.log |
把当前文件另存为aa.log 放到当前目录 |
w /tmp/ab.log |
把当前文件另存为ab.log放到/tmp目录 |
q |
退出 |
wq |
保存后退出 和x一样 |
q! |
不保存退出 |
1090,1096 w 1090.log |
把当前文件的1090行到1096行,另存到当前目录1090.log中 |
1085,1088s /^/#/g |
在1085行到1088行的行首插入# |
%s /^/#/g |
所有行的行首插入# |
1085,1088s /^#//g |
在1085行到1088行的行首去掉# |
set nu |
显示行号 (临时显示) |
set nonu |
不显示行号 |
2、打开新文件或读入其他文件内容
指令 |
说明 |
e /home/a.txt |
在当前文件下,打开新的文件进行编辑; |
r aa.log |
把当前目录下的aa.log文件读取到当前文件中,起到文件合并的效果 |
3、文件内容替换
指令 |
说明 |
s /old/new |
将当前行中查找到的第一个字符串“old”替换为“new” |
s /old/new/g |
将当前行中查找到的所有字符串“old”替换为“new” |
#,# s/old/new/g |
在行号"#,#"范围内替换所有的字符串“old”为“new” |
% s/old/new/g |
在整个文件范围内替换所有的字符串“old”为“new” |
%s /^c/C/g |
把当前文档中所有以c开头的内容替换成C |
s /old/new/c |
在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |