Linux系统之vi编辑器

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编辑环境、保存文件、退出编辑器,以及多文件内容进行查找、替换等操作。

Linux系统之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命令,将对每个替换动作提示用户进行确认
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章