在本章中,我们将了解vi编辑器在Unix中的工作方式。在Unix中有许多编辑文件的方法。使用面向屏幕的文本编辑器vi编辑文件是最好的方法之一。使用此编辑器,您可以在上下文中与文件中的其他行一起编辑行。
现在还提供了称为VIM的vi编辑器的改进版本。在这里,VIM代表Vi Improved(改进版的VI)。
vi通常被认为是Unix编辑器中的事实上的标准,因为-
- 通常可以在所有Unix系统上使用。
- 它的实现非常相似。
- 它需要很少的资源。
- 它比ed或ex等其他编辑器更加用户友好。
您可以使用vi编辑器编辑现有文件或从头开始创建新文件。您也可以使用此编辑器来读取文本文件。
启动vi编辑器
下表列出了使用vi编辑器的基本命令-
序号 | 命令与说明 |
---|---|
1 | vi文件名 如果尚不存在,则创建一个新文件,否则打开一个现有文件。 |
2 | vi -R文件名 以只读模式打开现有文件。 |
3 | view文件名 以只读模式打开现有文件。 |
以下是创建新文件testfile的示例(如果当前工作目录中尚不存在该文件)-
$vi testfile
上面的命令将生成以下输出-
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
您会在光标之后的每一行上看到一个波浪号(〜)。代字号代表未使用的行。如果某行不是以波浪号开头并且看起来为空白,则表示存在空格,制表符,换行符或某些其他不可见的字符。
现在,您有一个打开的文件开始处理。在继续进行之前,让我们了解一些重要的概念。
操作模式
使用vi编辑器时,我们通常会遇到以下两种模式-
- 命令模式-此模式使您可以执行管理任务,例如保存文件,执行命令,移动光标,剪切(拉动)和粘贴行或单词以及查找和替换。在这种模式下,您键入的任何内容都将被解释为命令。
- 插入模式-使用此模式可以将文本插入文件。在此模式下键入的所有内容都将解释为输入并放置在文件中。
vi始终以命令模式启动。要输入文本,您必须处于插入模式,只需键入i即可。要退出插入模式,请按Esc键,这将使您返回命令模式。
提示-如果不确定所处的模式,请按两次Esc键;这将带您进入命令模式。使用vi编辑器打开文件。首先输入一些字符,然后进入命令模式以了解不同之处。
离开vi
退出vi的命令是:q。在命令模式下,键入冒号和’q’,然后返回。如果您的文件已经过任何修改,编辑器将警告您,并且不允许您退出。要忽略此消息,不保存而退出vi的命令是:q!。。这使您可以退出vi而无需保存任何更改。
保存编辑器内容的命令是:w。您可以将以上命令与quit命令结合使用,或使用:wq并返回。
保存更改并退出vi的最简单方法是使用ZZ(大写)命令。在命令模式下,输入ZZ。该ZZ命令的工作方式相同:WQ命令。
如果要指定/声明文件的任何特定名称,可以在:w之后指定它。例如,如果您想将正在处理的文件另存为另一个名为filename2的文件名,则可以输入:w filename2并返回。
在文件内移动
要在文件内四处移动而又不影响文本,您必须处于命令模式(两次按Esc键)。下表列出了一些可用于一次移动一个字符的命令-
序号 | 命令与说明 |
---|---|
1 | k将光标向上移动一行 |
2 | j将光标向下移动一行 |
3 | h将光标移动到左侧的一个字符位置 |
4 | l将光标移到右边的一个字符位置 |
在文件内移动时需要考虑以下几点-
- vi区分大小写。使用命令时需要注意大写。
- vi中的大多数命令都可以以您希望操作发生的次数为开头。例如,2j将光标向下移动光标两行。
在vi中的文件中还有许多其他移动方式。请记住,您必须处于命令模式(按两次Esc键)。下表列出了一些在文件中移动的命令-
以下是在文件中移动的命令列表。
序号 | 命令与说明 |
---|---|
1 | 0或| 将光标置于行首 |
2 | $ 将光标置于行尾 |
3 | w 将光标定位到下一个单词 |
4 | b 将光标定位到上一个单词 |
5 | ( 将光标定位到当前句子的开头 |
6 | ) 将光标定位到下一个句子的开头 |
7 | E 移至空白分隔字词的末尾 |
8 | { 向后移一段 |
9 | } 向前移动段落 |
10 | [[ 向后移动部分 |
11 | ]] 向前移动部分 |
12 | n | 移至当前行的第n列 |
13 | 1G 移到文件的第一行 |
14 | G 移到文件的最后一行 |
15 | nG 移至文件的第n行 |
16 | :n 移至文件的第n行 |
17 | fc 前进到c |
18 | Fc 移回c |
19 | H 移到屏幕顶部 |
20 | nH 从屏幕的顶部移动到第n行 |
21 | M 移到屏幕中间 |
22 | L 移至屏幕底部 |
23 | nL 屏幕的底部移动到第n行 |
24 | 😡 冒号后跟数字将光标定位在x表示的行号上 |
控制指令
以下命令可与Control Key一起使用以执行下表中给出的功能-
下面给出的是控制命令列表。
序号 | 命令与说明 |
---|---|
1 | Ctrl + d 向前移动1/2屏幕 |
2 | Ctrl + f 全屏前进一屏 |
3 | Ctrl + b 向后移动一整屏 |
4 | Ctrl + e 将屏幕上移一行 |
5 | Ctrl + y 将屏幕向下移动一行 |
6 | CTRL + u 将屏幕上移1/2页 |
7 | Ctrl + d 将屏幕下移1/2页 |
8 | Ctrl + b 将屏幕向上移动一页 |
9 | Ctrl + f 将屏幕向下移动一页 |
10 | CTRL + I 刷新屏幕 |
Unix / Linux-vi编辑器教程
在本章中,我们将了解vi编辑器在Unix中的工作方式。在Unix中有许多编辑文件的方法。使用面向屏幕的文本编辑器vi编辑文件是最好的方法之一。使用此编辑器,您可以在上下文中与文件中的其他行一起编辑行。
现在还提供了称为VIM的vi编辑器的改进版本。在这里,VIM代表Vi Improved(改进版的VI)。
vi通常被认为是Unix编辑器中的事实上的标准,因为-
- 通常可以在所有Unix系统上使用。
- 它的实现非常相似。
- 它需要很少的资源。
- 它比ed或ex等其他编辑器更加用户友好。
您可以使用vi编辑器编辑现有文件或从头开始创建新文件。您也可以使用此编辑器来读取文本文件。
启动vi编辑器
下表列出了使用vi编辑器的基本命令-
序号 | 命令与说明 |
---|---|
1 | vi文件名如果尚不存在,则创建一个新文件,否则打开一个现有文件。 |
2 | vi -R文件名以只读模式打开现有文件。 |
3 | view文件名以只读模式打开现有文件。 |
以下是创建新文件testfile的示例(如果当前工作目录中尚不存在该文件)-
$vi testfile
上面的命令将生成以下输出-
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
您会在光标之后的每一行上看到一个波浪号(〜)。代字号代表未使用的行。如果某行不是以波浪号开头并且看起来为空白,则表示存在空格,制表符,换行符或某些其他不可见的字符。
现在,您有一个打开的文件开始处理。在继续进行之前,让我们了解一些重要的概念。
操作模式
使用vi编辑器时,我们通常会遇到以下两种模式-
- 命令模式-此模式使您可以执行管理任务,例如保存文件,执行命令,移动光标,剪切(拉动)和粘贴行或单词以及查找和替换。在这种模式下,您键入的任何内容都将被解释为命令。
- 插入模式-使用此模式可以将文本插入文件。在此模式下键入的所有内容都将解释为输入并放置在文件中。
vi始终以命令模式启动。要输入文本,您必须处于插入模式,只需键入i即可。要退出插入模式,请按Esc键,这将使您返回命令模式。
提示-如果不确定所处的模式,请按两次Esc键;这将带您进入命令模式。使用vi编辑器打开文件。首先输入一些字符,然后进入命令模式以了解不同之处。
离开vi
退出vi的命令是:q。在命令模式下,键入冒号和’q’,然后返回。如果您的文件已经过任何修改,编辑器将警告您,并且不允许您退出。要忽略此消息,不保存而退出vi的命令是:q!。。这使您可以退出vi而无需保存任何更改。
保存编辑器内容的命令是:w。您可以将以上命令与quit命令结合使用,或使用:wq并返回。
保存更改并退出vi的最简单方法是使用ZZ(大写)命令。在命令模式下,输入ZZ。该ZZ命令的工作方式相同:WQ命令。
如果要指定/声明文件的任何特定名称,可以在:w之后指定它。例如,如果您想将正在处理的文件另存为另一个名为filename2的文件名,则可以输入:w filename2并返回。
在文件内移动
要在文件内四处移动而又不影响文本,您必须处于命令模式(两次按Esc键)。下表列出了一些可用于一次移动一个字符的命令-
序号 | 命令与说明 |
---|---|
1 | k将光标向上移动一行 |
2 | j将光标向下移动一行 |
3 | h将光标移动到左侧的一个字符位置 |
4 | l将光标移到右边的一个字符位置 |
在文件内移动时需要考虑以下几点-
- vi区分大小写。使用命令时需要注意大写。
- vi中的大多数命令都可以以您希望操作发生的次数为开头。例如,2j将光标向下移动光标两行。
在vi中的文件中还有许多其他移动方式。请记住,您必须处于命令模式(按两次Esc键)。下表列出了一些在文件中移动的命令-
以下是在文件中移动的命令列表。
序号 | 命令与说明 |
---|---|
1 | 0或| 将光标置于行首 |
2 | $ 将光标置于行尾 |
3 | w 将光标定位到下一个单词 |
4 | b 将光标定位到上一个单词 |
5 | ( 将光标定位到当前句子的开头 |
6 | ) 将光标定位到下一个句子的开头 |
7 | E 移至空白分隔字词的末尾 |
8 | { 向后移一段 |
9 | } 向前移动段落 |
10 | [[ 向后移动部分 |
11 | ]] 向前移动部分 |
12 | n | 移至当前行的第n列 |
13 | 1G 移到文件的第一行 |
14 | G 移到文件的最后一行 |
15 | nG 移至文件的第n行 |
16 | :n 移至文件的第n行 |
17 | fc 前进到c |
18 | Fc 移回c |
19 | H 移到屏幕顶部 |
20 | nH 从屏幕的顶部移动到第n行 |
21 | M 移到屏幕中间 |
22 | L 移至屏幕底部 |
23 | nL 屏幕的底部移动到第n行 |
24 | 😡 冒号后跟数字将光标定位在x表示的行号上 |
控制指令
以下命令可与Control Key一起使用以执行下表中给出的功能-
下面给出的是控制命令列表。
序号 | 命令与说明 |
---|---|
1 | Ctrl + d 向前移动1/2屏幕 |
2 | Ctrl + f 全屏前进一屏 |
3 | Ctrl + b 向后移动一整屏 |
4 | Ctrl + e 将屏幕上移一行 |
5 | Ctrl + y 将屏幕向下移动一行 |
6 | CTRL + u 将屏幕上移1/2页 |
7 | Ctrl + d 将屏幕下移1/2页 |
8 | Ctrl + b 将屏幕向上移动一页 |
9 | Ctrl + f 将屏幕向下移动一页 |
10 | CTRL + I 刷新屏幕 |
编辑档案
要编辑文件,您需要处于插入模式。有多种方法可以从命令模式进入插入模式-
序号 | 命令与说明 |
---|---|
1 | i 在当前光标位置之前插入文本 |
2 | I 在当前行的开头插入文本 |
3 | a 在当前光标位置之后插入文本 |
4 | A 在当前行的末尾插入文本 |
5 | o 在光标位置下方为文本输入创建新行 |
6 | O 在光标位置上方为文本输入创建新行 |
删除字符
这是重要命令列表,可用于删除打开文件中的字符和行-
序号 | 命令与说明 |
---|---|
1 | X 删除光标位置下的字符 |
2 | X 删除光标位置之前的字符 |
3 | dw 从当前光标位置删除到下一个单词 |
4 | d^ 从当前光标位置删除到行首 |
5 | d$ 从当前光标位置删除到行尾 |
6 | D 从光标位置删除到当前行的结尾 |
7 | dd 删除光标所在的行 |
如上所述,vi中的大多数命令都可以以您希望操作发生的次数为开头。例如,2x删除光标位置下的两个字符,2dd删除光标所在的两行。
建议先练习命令,然后再继续。
变更指令
您还可以更改vi中的字符,单词或行而不删除它们。这是相关的命令-
序号 | 命令与说明 |
---|---|
1 | cc 删除该行的内容,使您处于插入模式。 |
2 | CW 将光标所在的单词从光标更改为单词的小写字母w末端。 |
3 | r 替换光标下的字符。输入替换后,vi返回命令模式。 |
4 | R 从当前光标下方的字符开始覆盖多个字符。您必须使用Esc停止覆盖。 |
5 | s 用您键入的字符替换当前字符。之后,您将处于插入模式。 |
6 | S 删除光标所在的行,并将其替换为新文本。输入新文本后,vi保持在插入模式。 |
复制和粘贴命令
您可以从一个位置复制行或单词,然后可以使用以下命令将它们粘贴到另一位置:
序号 | 命令与说明 |
---|---|
1 | yy 复制当前行。 |
2 | yw 从小写字母w光标所在的字符中复制当前单词,直到该单词的末尾。 |
3 | p 将复制的文本放在光标之后。 |
4 | P 将选中的文本放在光标之前。 |
高级命令
有一些高级命令可以简化日常编辑,并可以更有效地使用vi-
下面列出了高级命令列表。
序号 | 命令与说明 |
---|---|
1 | J 将当前行与下一行连接。数量为j的命令连接了许多行。 |
2 | << 将当前行向左移动一个宽度。 |
3 | >> 将当前行向右移动一个移位宽度。 |
4 | 〜 在光标下切换字符的大小写。 |
5 | ^G 同时按Ctrl和G键以显示当前文件名和状态。 |
6 | U 将当前行恢复到光标进入该行之前的状态。 |
7 | u 这有助于撤消在文件中所做的最后更改。再次键入“ u”将重新进行更改。 |
8 | J 将当前行与下一行连接。计数连接那么多行。 |
9 | :f 以%(百分比)显示文件中的当前位置,并显示文件名(文件总数)。 |
10 | :f 文件名 将当前文件重命名为filename。 |
11 | :w 文件名 重命名名文件并写入文件。 |
12 | :e 文件名 用文件名打开另一个文件。 |
13 | :cd 目录名 将当前工作目录更改为dirname。 |
14 | :e#在两个打开的文件之间切换。 |
15 | :n 如果使用vi打开多个文件,请使用:n转到系列中的下一个文件。 |
16 | :p 如果使用vi打开多个文件,请使用:p转到系列中的上一个文件。 |
17 | :N 如果使用vi打开多个文件,请使用:N转到系列中的上一个文件。 |
18 | :r文件 读取文件并将其插入当前行之后。 |
19 | :nr文件 读取文件并将其插入第n行之后。 |
单词和字符搜索
vi编辑器有两种搜索:string和character。对于字符串搜索,/和?使用命令。当您启动这些命令时,刚键入的命令将显示在屏幕的最后一行,您在其中键入要查找的特定字符串。
这两个命令仅在搜索发生的方向上有所不同-
- /在文件中顺序(向下)搜索。
- ?在文件中逆向(向上)搜索。
使用n和N命令在相同或相反的方向上分别重复前面的搜索命令。若某些字符有特殊含义。这些字符前面必须带有反斜杠(**),才能作为搜索表达式的一部分包含在内。
序号 | 字符和描述 |
---|---|
1 | ^ 在行的开头进行搜索(在搜索表达式的开头使用)。 |
2 | . 匹配一个字符。 |
3 | * 匹配零个或多个前一个字符。 |
4 | $ 行尾(在搜索表达式的末尾使用)。 |
5 | [ 启动一组匹配或不匹配的表达式。 |
6 | < 将其放在以反斜杠转义的表达式中,以查找单词的结尾或开头。 |
7 | > 这有助于查看上面讨论的’ < ‘字符。 |
字符搜索在一行内搜索,以找到在命令后输入的字符。该f和F命令搜索仅在当前行的文字。f向前搜索,F向后搜索,光标移至找到的字符的位置。
所述t和T命令搜索仅在当前行的字符,但对于t,光标移动到字符之前的位置,且T搜索线向后的字符后的位置。
设定命令
您可以使用以下:set命令更改vi屏幕的外观。进入命令模式后,键入:set,然后键入以下任何命令。
序号 | 命令与说明 |
---|---|
1 | :set ic 搜索时忽略大小写 |
2 | :set ai 设置自动缩进 |
3 | :set noai 取消自动缩进 |
4 | :set nu 在左侧显示行号的行 |
5 | :set sw 设置软件制表符的宽度。例如,您可以使用以下命令将移位宽度设置为4 ::set sw = 4 |
6 | :set ws 如果设置了wrapscan,但在文件底部找不到该单词,它将尝试在开头搜索 |
7 | :set wm 如果此选项的值大于零,则编辑器将自动“自动换行”。例如,要将包装边距设置为两个字符,请输入::set wm = 2 |
8 | :set ro 将文件类型更改为“只读” |
9 | :set term 打印终端类型 |
10 | :set bf 丢弃输入中的控制字符 |
运行命令
vi可以从编辑器中运行命令。要运行命令,只需进入命令模式并输入:!。命令。
例如,如果要在尝试使用该文件名保存文件之前检查文件是否存在,可以键入:!ls,您将在屏幕上看到ls的输出。
您可以按任意键(或命令的转义序列)以返回到vi会话。
取代文字
替换命令(:s/)使您可以快速替换文件中的单词或单词组。以下是替换文本的语法-
:s/search/replace/g
该g代表全局。此命令的结果是更改了光标行上的所有匹配项。
注意事项
以下几点将帮助您成功使用vi-
- 您必须处于命令模式才能使用命令。(可随时按两次Esc以确保您处于命令模式。)
- 您必须小心使用这些命令。这些区分大小写。
- 您必须处于插入模式才能输入文本。