学科分类
目录
Linux编程

Vi编辑器

vi编辑器是Linux系统下最基本的编辑器,工作在字符模式下,由于不使用图形界面,vi的工作效率非常高,且它在系统和服务管理中的功能是带图形界面的编辑器无法比拟的。vi编辑器共有三种工作模式,分别是:命令模式(command mode)、插入模式(insert mode)和底行模式(last line mode),这三种模式间可进行转换,转换方式如图1所示。

图1 vi编辑器模式转换示意图

在学习这三种模式之前,我们先来学习使用Vi编辑器打开文件的方法。

案例:将目录etc下的passwd文件复制到itheima用户的家目录中,将副本命名为passwd,使用vi编辑器打开家目录下的passwd文件。

[itheima@localhost ~]$ cp /etc/passwd passwd
[itheima@localhost ~]$ vi passwd

执行这两条命令之后,就在Vi编辑器中打开了passwd文件的副本。

下面,我们来分别介绍Vi编辑器的三种模式和每种模式对应的常用操作与命令。

1、命令模式

使用Vi编辑器打开文件后,默认进入命令模式。在该模式下,可通过键盘控制光标的移动、文本内容的复制、粘贴、删除等。

(1)光标移动

在命令模式中,光标的移动可分为6个常用的级别,分别为:字符级、行级、单词级、段落级、屏幕级和文档级。各个级别中的相关按键及其含义如表1所示。

表1 光标移动操作

级别 操作符 说明
字符级 “左键”或字母“h” 使光标向字符的左边移动
“右键”或字母“l” 使光标向字符的右边移动
行级 “上键”或字母“k” 使光标移动到上一行
“下键”或字母“j” 使光标移动到下一行
符号“$” 使光标移动到当前行尾
数字“0” 使光标移动到当前行首
单词级 字母“w” 使光标移动到下一个单词的首字母
字母“e” 使光标移动到本单词的尾字母
字母“b” 使光标移动到本单词的首字母
段落级 符号“}” 使光标移至段落结尾
符号“{” 使光标移至段落开头
屏幕级 字母“H” 使光标移至屏幕首部
字母“L” 使光标移至屏幕尾部
文档级 字母“G” 使光标移至文档尾行
n+G 使光标移至文档的第n行

(2)删除

若需要对文档中的内容进行删除操作,可以通过字母“x”、“dd”等来实现,相关按键及对应含义如表2所示。

表2 删除操作

操作符 说明
字母“x” 删除光标所在的单个字符
字母“dd” 删除光标所在的当前行
n+dd 删除包括光标所在行的后边n行内容
d+$ 删除光标位置到行尾的所有内容

(3)复制和粘贴

对文档进行复制、粘贴操作的相关按键及对应含义如表3所示。

表3 复制与粘贴操作

操作符 说明
字母“yy” 复制光标当前所在行
n+yy 复制包括光标所在行后的n行内容
y+e 从光标所在位置开始复制直到当前单词结尾
y+$ 从光标所在位置开始复制直到当前行结尾
y+{ 从当前段落开始的位置复制到光标所在位置
p 将复制的内容粘贴到光标所在位置

在命令模式下,还有如下几种常见的操作:

● 字母“u”:撤销命令

● 符号“.”:重复执行上一次命令

● 字母“J”:合并两行内容

● r+字符:快速替换光标所在字符

熟练掌握以上按键,是提高使用使用vi编辑器编辑文档的效率,读者应尽量掌握以上按键,并将其应用到实际操作中。

上文已经提到,vi编辑器有三种工作模式,下面分别介绍在vi编辑器中如何从命令模式切换到另外两种模式。

(1)命令模式与插入模式间的切换

一般情况下,用户可以使用按键“i”,直接进入编辑模式,此时内容与光标的位置和命令模式相同。另外还有其余多种按键,可以不同的形式切换到编辑模式,下面通过表4对其余按键逐一进行讲解。

表4 切换至编辑模式

操作符 说明
字母“a” 光标向后移动一位进入编辑模式
字母“s” 删除光标所在字母进入编辑模式
字母“o” 在当前行之下新起一行进入编辑模式
字母“A” 光标移动到当前行末尾进入编辑模式
字母“I” 光标移动到当前行行首进入编辑模式
字母“S” 删除光标所在行进入编辑模式
字母“O” 在当前行之上新起一行进入编辑模式

另使用“ESC”键可从插入模式返回命令模式。

(2)命令模式与底行模式间的切换

在命令模式下使用输入“:”或“/”按键,可进入底行模式。若想从底行模式返回到命令模式,可以使用“ESC”键。若底行不为空,可以连按两次“ESC”键,清空底行,并返回命令模式。

2、 插入模式

只有在插入模式下,才能对文件内容进行修改操作,此模式下的操作与Windows操作系统中记事本的操作类似。插入模式与底行模式之间不能直接转换。

3、 底行模式

底行模式可以对文件进行保存,也可进行查找、退出编辑器等操作。下面将对底行模式中常用的一些操作进行讲解。

(1):set nu。设置行号,仅对本次操作有效,当重新打开文本时,若需要行号,要重新设置。

(2):set nonu。取消行号,仅对本次操作有效。

(3):n。使光标移动到第n行。

(4):/xx。在文件中查找“xx”,若查找结果不为空,可以使用“n”查找下一个,使用“N”查找上一个。

(5)尾行模式下还可以进行内容替换,其操作符和功能如表5所示。

表5 内容替换

操作符 说明
:s/被替换内容/替换内容/ 替换光标所在行的第一个目标
:s/被替换内容/替换内容/g 替换光标所在行的全部目标
:%s/被替换内容/替换内容/g 替换整个文档中的全部目标
:%s/被替换内容/替换内容/gc 替换整个文档中的全部目标,且每替换一个内容都有相应的提示

(6)操作完毕后,如要保存文件或退出编辑器,可先使用“ESC”进入底行模式,再使用表6中的按键完成所需操作。

表6 保存与退出

操作符 说明
:q 退出vi编辑器
:w 保存编辑后的内容
:wq 保存并退出vi编辑器
:q! 强行退出vi编辑器,不保存对文件的修改
:w! 对于没有修改权限的用户强行保存对文件的修改,并且修改后文件的所有者和所属组都有相应的变化
:wq! 强行保存文件并退出vi编辑器

Vi编辑器的配置

讲解vi编辑器的常用操作时曾提到,在底行模式中对vi编辑器进行的设置,只对本次操作有效,若重新使用vi编辑器打开文件,会发现在上一次操作中所做的设置全部被情况。那么该如何长久有效的保存vi编辑器的设置呢?

vi编辑器的配置信息保存在用户家目录的.vimrc文件中,该文件是一个隐藏文件,使用“ls -al”命令可以看到。若想永久保存vi编辑器的设置,需要在该文件中进行定义。

首先使用vi编辑器打开此文件:

[itheima@localhost ~]$ vi .vimrc

之后在插入模式下,将要设置的信息写入该文件,再保存退出即可。

vi编辑器中较为常用的设置如表7所示。

表7 保存与退出

设置 说明
set number 设置行号
set autoindent 自动对齐
set smartindent 智能对齐
set showmatch 括号匹配
set tabstop=4 使用tab键时为4个空格
set mouse=a 鼠标支持
set cindent 使用C语言格式对齐
点击此处
隐藏目录