vi是Unix操作系统常用的文本编辑程序,其完整形式为“visual interface”。Linux系统中使用的是vi编辑器的加强版vim。vim完全兼容vi,可以执行输出、删除、查找、替换、块操作等文本操作。用户可以根据自己的需要进行个性化定制。这也是vi编辑器的一个特点。下面概要讲述Linux系统下vi编辑器的基本使用情况。
vi通常有三种模式,即命令行模式(Command mode)、插入模式(Insert mode)和底行模式(Command line mode or last line mode)。这三种模式分别在不同的情况下使用,如下所述。
q 命令行模式(Command mode):通常vi打开或创建一个文件时默认的模式,尤其打开已有的文件时可以用于光标的移动、字符以及行的删除,复制某段区域等。此时不能向文件插入数据,需要切换到插入模式。
q 插入模式(Insert mode):通常打开已有或者创建文件后,向其写入数据,需要切换至该模式。从命令行模式切换可以使用“i”(在光标当前位置插入数据)、“a”(在光标当前位置之后插入数据)、“A”(在光标当前行的末尾插入数据)、“o”(在光标当前位置的下面新开辟一行插入数据)以及“O”(在光标当前位置行之上新开辟一行插入数据)。“ESC”返回至命令行模式进行数据删减等操作。
q 底行模式(last line mode):一般用作保存文件,或者强制退出文件以及当前文件查找等操作。
以上了解vi基本模式之后,接下来讲述下vi编辑器的基本使用情况。由于vi编辑器是在命令行下的工具,所以熟悉其基本命令的使用,有助于快速的使用该工具完成所需要的编辑工作。在这里按照三种模式下将基本操作命令分类,进行基本讲解。
1.命令模式下的基本命令
命令模式下的命令主要包括打开已有文件或创建新文件、光标定位、字符以及行的删除等,主要有如下几个常用命令需要熟练使用,如表格2-3所示。
表格2-3 命令模式下基本命令
基本命令 |
使用说明 |
vi filename |
打开或创建新的文件,并将光标置于第一行首位置 |
vi +n filename |
打开文件,并将光标置于第n行首位置 |
vi + filename |
打开文件,并将光标置于最后一行首位置 |
vi + /pattern filename |
打开文件,并将光标置于第一个与pattern匹配的串位置 |
vi –r filename |
主要用于使用vi编辑时因系统崩溃,恢复文件 |
dd |
打开文件,删除当前光标位置所在一行数据 |
x或X |
删除单个字符,x删除光标后的,X删除光标前的 |
ctrl+u |
向文件首翻半屏 |
ctrl+d |
向文件尾翻半屏 |
ctrl+f |
向文件尾翻一屏 |
ctrl+b |
向文件首翻一屏 |
h |
光标位置左移一个字符 |
l |
光标位置右移一个字符 |
space空格键 |
光标位置右移一个字符 |
Backspace |
光标位置左移一个字符 |
ctrl+p或k |
光标上移一行 |
ctrl+n或j |
光标下移一行 |
Enter |
光标下移一行 |
W或w |
光标右移一个字至字首位置 |
B或b |
光标左移一个字至字首位置 |
E或e |
光标右移一个字至字尾位置 |
) |
光标移至行尾 |
( |
光标移至行首 |
} |
光标移至段落首位置 |
{ |
光标移至段落尾位置 |
2.插入模式下的基本命令
插入模式下的基本命令主要包括在该模式下定位以及数据插入等操作命令,如表格2-4所示。
表格2-4 插入模式基本命令
基本命令 |
使用说明 |
i |
定位在光标位置前插入 |
I |
定位在光标当前行首位置插入 |
a |
定位光标当前位置后插入 |
A |
定位光标当前行位置尾插入 |
o |
定位光标当前行之下新开一行插入 |
O |
定位光标当前行之上新开一行插入 |
r |
替换光标当前位置字符 |
R |
替换光标当前字符及其后的字符,直到ESC终止 |
3.底行模式下的基本命令
底行模式下基本命令主要包括保存退出文件以及基本查找命令功能,如表格2-5所示。
表格2-5 底行模式下基本命令
基本命令 |
使用说明 |
/pattern |
从光标开始处向文件尾搜索pattern串 |
?pattern |
从光标开始处向文件首搜索pattern串 |
n |
顺从上次搜索同一方向上,重复上次搜索命令 |
N |
逆上次搜索的方向,重复上次搜索命令 |
:s/p1/p2/g |
将当前行中所有p1都用p2替换 |
:n1,n2s/p1/p2/g |
将第n1至n2行中所有p1均使用p2替换 |
:g/p1/s//p2/g |
将文件中所有p1都使用p2替换 |
初学者使用vi编辑器,能够熟练掌握使用如上3类基本命令操作,已经基本能够满足日常开发需要的vi基本技能。该部分的命令使用需要初学者多在真实的环境下去实践体会,能够做到熟练使用,开发时候节省时间。