学习目标:
- Linux环境下能够熟练使用VI编辑器进行文本内容修改
1、Vi编辑器简介
vi是Visual interface的简称,它是Unix以及Linux操作系统下标准的编辑器,类似于我们日常使用的Window系统中自带的记事本,可以执行输出、删除、查找、替换、块操作的众多文本操作。与Window系统中记事本能便捷式的通过鼠标和键盘组合进行操作外相比,vi的核心设计思想是让程序员的手指始终保持在键盘核心区域就能完成所有操作。
2、Vi编辑器的模式
如上图所示,vi编辑器有三种工作模式,不同模式间可以通过相应按键操作进行切换。例如命令模式下,在键盘上输入i,vi编辑器进入编辑模式,同时在vi编辑器的左下角的位置将出现“--INSERT--”字样,这种情况可以在编辑器中进行正常的编辑操作。当编辑器处于编辑模式或末行模式时,可以通过按ESC键,编辑器再次切换到命令模式。三种模式的详细说明如下:
- 命令模式
shell环境下通过vi命令打开文件时,默认进入该模式。在该模式下,用户可以输入各种合法的命令,用于管理自己的文档。此时键盘上输入的各种字符,都会被当作命令来解析,如果输入的时合法的vi命令,输入完成后将执行相应操作。需要注意的是,输入的命令不会在屏幕上显示。
- 编辑模式
该模式下,用户输入的各种字符,都会被vi当作字符显示到屏幕上,通过保存命令可以正式将字符保存在文件中(类似于我们在window下的文本编辑器中输入想要内容)。
- 末行模式
末行模式又称转义模式,在命令模式下输入“:”进入,此时vi的最后一行显示一个“:”作为提示,等待用户输入命令,多数文件管理命令在此模式下执行(如把缓冲区的内容写到文件中),末行模式执行完自动进入命令模式。
3、Vi编辑器的命令
- 打开文件
vi+文件名,如要编辑main.c的文件,在打开shell中输入vi main.c 即可打开文件
- 进入插入模式
i:插入光标前一个字符
I:在行首插入
a:插入光标后一个字符
A:行末插入
o:向下新开一行,插入行首
O:向上新开一行,插入行首
- 移动光标
编辑模式下,移动插入文本位置的光标可以通过上下左右键进行移动,较便捷的方法是进入命令行模式,通过以下的移动光标的命令进行操作:
h:左移
j:下移
k:上移
l:右移
w:向后移动一个字
b:向前移动一个字
nG:跳转到指定行号,如要跳转到文件的文件的100行,只需在键盘上输入100后再输入G
{:按段向上移动
}:按段向下移动
gg:光标移动到文件开头位置
G:光标移动到文件末尾位置
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
- 删除文本
编辑模式下,删除文本只需将光标移动到要删除文本后面,按BackSpace,但相对较方便的方法还是进入命令行模式,通过特定删除命令操作。
x:删除光标后一个字符,相当于Del
X:删除光标前一个字符,相当于BackSpace
dd:删除当前所在行
ndd:删除当前光标所在行再内的以下n行
D:删除光标后本行所有内容
d0:删除光标前本行所有内容
dw:删除光标后一个字
db:删除光标前一个字
- 复制、粘贴文本
yy:复制当前行文本
nyy:复制包含当前行的以下n行
p:粘贴复制内容
- 重复命令
.:重复上一次操作命令
- 文本的移动
<<:文本行左移
>>:文本行右移
- 可视操作
v:按字符移动选择文本
V:按行移动
可视操作可配合yy,d,<<,>>命令执行已选文件的复制、删除、全部左移、右移等
- 查找,替换命令
/str:查找str的字符串,查找过程中输入n代表继续查找下一个,N代表继续查找上一个
:%s/old_str/new_str,将old_str替换成new_str。默认情况下会一次替换文本中所有匹配的字符,如果想在替换前依次确认,执行:%s/old_str/new_str/c
(注:查找命令会高亮字符,查找完毕输入:noh取消文本的高亮)
- 文件保存,vi退出
输入:w保存当前编辑,:wq保存并退出,:q!强制退出
- 编辑过程查看man page
编辑代码过程中,想查看一些要用到函数系统调用或者库函数的帮助说明,只需将光标移动到函数名位置,按shift和k便能进入man page该函数的介绍位置,当查看完毕按下q退出查看,此时shell中提示“Press ENTER or type command to continue”,再按ENTER键就能回到进入vi中执行man page命令之前位置。如在通过vi编写代码中想查看open函数解释,一般执行“2 shift k”命令,2代表man page的第几卷。
- 分屏操作
分屏操作一般使用较多,当书写.c和.h文件时或者同时参考查看多个文件时非常方便,如下所示:
vsp :左右分屏,后跟要打开文件名
sp:上下分屏,后跟要打开文件名
ctrl+w+w:在分屏的屏幕中进行切换