最新编辑:2015.12.17
什么是vi/vim
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。由于对Unix及 Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
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,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
1) 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
3) 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
vim 打开文件
(1)vim + 文件名 ,在打开文件后,光标会定位到最后一行
(2)vim +3 文件名,在打开文件后,光标会定位到第3行
(3)vim +/2 文件名,在打开文件后,光标会定位到2第一次出现的那一行。(可以按字母n在多个2之间来回切换)
(4)vim name1 name2 name3 会打开多个文件,通过在底行模式中输入:n(向下)或N(向上)来切换不同的文件
vi的基本操作
我们在
a) 进入vi
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:$ vi myfile。不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!
b) 切换至插入模式(Insert mode)编辑文件
在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) Insert 的切换
您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
d) 退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:$ vi myfile。不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!
b) 切换至插入模式(Insert mode)编辑文件
在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) Insert 的切换
您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
d) 退出vi及保存文件
在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
三个模式之间的切换
命令(一般)模式常用键
(1)[u]
:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
(2)[Ctrl] + [f] : 屏幕[向下]移动一页
(3)[Ctrl] + [b] : 屏幕[向上]移动一页
(4)[0] 或 [Home] : 移至这一行最前面字符
(5)[$] 或 [End] : 移至这一行最后面字符
(6)[ G ]: 移至这个档案的最后一行
(7)[gg]: 移至这个档案的第一行
(8)[x]、[X]: 在一行字中,x为向后删除一个字符(相等于[del]按键),X为向上删除一个字符
(9)[dd]: 删除游标所在的那一整列
(10)[yy]: 复制游标所在的那一行
(11)[Ctrl] + [r] : 重做上一个动作
(12)[p]: 在光标所在的行的下方粘贴
(13)[P]: 在光标所在行的上方黏贴
(14):s/,/\r/g : 文本中的,用换行代替
插入模式常用键
(2)[a]、[A]:进入插入模式,a为从目前光标所在的下一个字符处插入,A为从目前所在行最后一个字符出插入
(3)[o]、[O]:进入插入模式,o为从目前光标所在的下一行处插入新的一行,O为从目前所在的上一行插入新的一行
(4)[r]、[R]:进入取代模式,r只会取代光标所在的那一个字符一次,R会一直取代光标所在字符,直到按下ESC为止
(5)[ESC]:退出插入模式,回到一般模式中
Last line mode 常用键
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
A) 列出行号
「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
B) 跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
C) 查找字符
「/关键字」:往光标后搜索,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:往光标前搜索,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
D) 保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来。可以在后面跟一个[!],强制写入,不过最后能否写入还要看权限。
A) 列出行号
「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
B) 跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
C) 查找字符
「/关键字」:往光标后搜索,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:往光标前搜索,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
D) 保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来。可以在后面跟一个[!],强制写入,不过最后能否写入还要看权限。
「w [filename] 」:将编辑的数据储存成另一个文档
E) 离开vi
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
E) 离开vi
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
其他)
[:ls]:显示打开的所有文件
[:15]:快速定位到第15行
[:n]:
表示切换到下一个文件
高手总结的图:
综合案例
1
(1) 在/tmp这个目录下建立一个名为vitest的目录
mkdir /tmp/vitest
(2) 进入vitest这个目录当中
cd /tmp/vitest
(3) 将 /etc/man.config 复制到本目录底下
cp /etc/man.config .
(4) 使用vi 开启本目录下的man.config档案
vi man.config
(5) 在vi中设定一下行号
:set nu
(6) 搜索bzip2
/bzip2
(7) 将50到100行之间的[小写man字符串]改为[大写MAN字符串],并且一个一个挑选是否需要修改
:50,100s/man/MAN/gc
(8) 修改完之后,要全部复原,有哪些方法
简单的方法一直按[u]回复到原始状态,或者 [:q!] 不存储离开
(9) 将这个档案另存成一个man.test.config的档名
:w man.test.config
(10) 在第一行新增一行,该行内容输入 [I am a student....]
按下 [gg] 然后按 [O],输入 I am a student....