在本章中,我们将了解vi Editor如何在Unix中运行.在Unix中编辑文件有很多种方法.使用面向屏幕的文本编辑器 vi 编辑文件是最好的方法之一.使用此编辑器,您可以在文件中的其他行中编辑上下文中的行.
还创建了一个名为 VIM 的vi编辑器的改进版本现在有空.在这里,VIM代表 Vi IM 证明.
vi通常被认为是Unix编辑器中的事实标准,因为 :
它通常适用于Unix系统的所有版本.
它的实现非常全面相似.
它只需要很少的资源.
它更多用户友好,比其他编辑,如 ed 或前.
您可以使用 vi 编辑器编辑现有文件或从头开始创建新文件.您也可以使用此编辑器只读取文本文件.
下表列出了使用vi editor :
Sr.No . | 命令&描述 |
---|---|
1 | vi filename 如果新文件已经存在,则创建一个新文件,否则打开现有文件. |
2 | vi -R filename 以只读模式打开现有文件. |
3 | view filename 以只读模式打开现有文件. |
以下是创建新文件 testfile 的示例,如果它在当前工作目录中已经不存在 :
$ vi testfile
以上命令将生成以下输出 :
| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "testfile" [New File]
你会注意到代字号(〜)在光标后面的每一行.代字号表示未使用的行.如果一行不以波形符号开头并且看起来是空白的,则会出现空格,制表符,换行符或其他一些不可查看的字符.
您现在有一个打开的文件开始工作.在继续之前,让我们先了解一些重要概念.
使用vi编辑器时,我们通常会遇到以下两个模式 :
命令模式 : 此模式使您可以执行管理任务,例如保存文件,执行命令,移动光标,剪切(yanking)和粘贴行或单词,以及查找和替换.在此模式下,您输入的任何内容都将被解释为命令.
插入模式 : 使用此模式可以将文本插入文件.在此模式下键入的所有内容都被解释为输入并放在文件中.
vi始终以命令模式启动.要输入文本,您必须处于插入模式,只需键入 i 即可.要退出插入模式,请按 Esc 键,这将返回命令模式.
提示&减号;如果您不确定自己处于哪种模式,请按两次Esc键;这将带您进入命令模式.您使用vi编辑器打开文件.首先键入一些字符,然后进入命令模式以了解其中的区别.
退出vi的命令是:q .进入命令模式后,键入冒号和'q',然后返回.如果您的文件以任何方式被修改,编辑器将警告您,并且不要让您退出.要忽略此消息,退出vi而不保存的命令是:q!.这使您可以退出vi而不保存任何更改.
保存编辑器内容的命令是:w .您可以将上述命令与quit命令结合使用,或使用:wq 并返回.
保存更改并退出vi的最简单方法使用 ZZ 命令.处于命令模式时,键入 ZZ . ZZ 命令的工作方式与:wq 命令的工作方式相同.
如果要指定/声明任何特定名称您可以通过在:w 之后指定它来执行此操作.例如,如果您要将正在处理的文件另存为另一个名为 filename2 的文件名,则应键入:w filename2 并返回.
要在文件中移动而不影响文本,您必须处于命令模式(按Esc两次).下表列出了一些可用于一次移动一个字符的命令 :
Sr.No. | Command&描述 |
---|---|
1 | k 将光标向上移动一行 |
2 | j 将光标向下移动一行 |
3 | h 将光标移动到左侧一个字符位置 |
4 | l 将光标移动到右侧一个字符位置 |
以下几点需要考虑在文件中移动&减去;
vi区分大小写.使用命令时需要注意大小写.
vi中的大多数命令都可以以您希望操作发生的次数开头.例如, 2j 将光标向下移动光标位置两行.
还有很多其他方法可以在vi中的文件中移动.请记住,您必须处于命令模式(按两次Esc ).下表列出了一些在文件中移动的命令 :
Sr.不. | 命令&描述 |
---|---|
1 | 0或| 将光标定位在一行的开头 |
2 | $ 将光标定位在一行的末尾 |
3 | w 将光标定位到下一个字 |
4 | b 将光标定位到上一个单词 |
5 | ( 将光标定位到当前句子的开头 |
6 | ) 将光标定位到下一句的开头 |
7 | E 移至空白分隔词的末尾 |
8 | { 将一个段落移回 |
9 | } 向前移动一个段落 |
10 | [[ 将部分移回 |
11 | ]] 移动前进部分 |
12 | n | 移至当前行中的 n 列 |
13 | 1G 移至文件的第一行 |
14 | G 移动到fil的最后一行e |
15 | nG 移至 n th 行file |
16 | :n 移至 n th 行文件 |
17 | fc 前进至 c |
18 | Fc 回到 c |
19 | H 移至屏幕顶部 |
20 | nH 移至 n th 从屏幕顶部开始 |
21 | M 移至中间位置o f屏幕 |
22 | L 移至屏幕底部 |
23 | nL 从屏幕底部移至 n th 行 |
24 | :x 冒号后跟一个数字会将光标定位在由 x 表示的行号上 |
以下命令可与Control Key一起使用,以执行下表中给出的功能 :
Sr.No. | Command&描述 |
---|---|
1 | CTRL+ d 向前移动1/2屏幕 |
2 | CTRL+ f 向前移动一个全屏 |
3 | CTRL+ u 向后移动1/2屏幕 |
4 | CTRL+ b 向后移动一个全屏 |
5 | CTRL+ e 将屏幕向上移动一行 |
6 | CTRL+ y 将屏幕向下移动一个line |
7 | CTRL+ u 将屏幕向上移动1/2页 |
8 | CTRL+ d 将屏幕向下移动1/2页 |
9 | CTRL+ b 将屏幕向上移动一页 |
10 | CTRL+ f 将屏幕向下移动一页 |
11 | CTRL+我 重绘屏幕 |
要编辑文件,您需要在插入中模式.有许多方法可以从命令模式输入插入模式 :
Sr.No. | Command&描述 |
---|---|
1 | i 在当前光标位置之前插入文本 |
2 | I 在当前行的开头插入文本 |
3 | a 在当前光标位置后插入文字 |
4 | A 在当前行的末尾插入文字 |
5 | o 为光标位置下方的文本输入创建一个新行 |
6 | O 创建一个光标位置上方文本输入的新行 |
这是一个重要命令列表,可用于删除打开文件中的字符和行 :
Sr.No. | Command&描述 |
---|---|
1 | x 删除光标位置下的字符 |
2 | X 删除光标位置前的字符 |
3 | dw 从当前光标位置删除到下一个单词 |
4 | d ^ 从当前光标位置删除到行首 |
5 | d $ 从当前光标位置删除到行尾 |
6 | D 从光标位置删除到当前行的末尾 |
7 | dd 删除光标所在的行 |
如上所述,大多数vi中的命令可以以您希望操作发生的次数开头.例如, 2x 删除光标位置下的两个字符, 2dd 删除光标所在的两行.
建议在我们继续进行之前,我们会执行这些命令.
您还可以在不删除的情况下更改vi中的字符,单词或行他们.以下是相关命令 :
Sr.No. | Command&描述 |
---|---|
1 | cc 删除该行的内容,使您处于插入模式. |
2 | cw 将光标所在的单词从光标更改为单词的小写 w . |
3 | r 替换光标下的字符.输入替换后,vi返回命令模式. |
4 | R 覆盖以光标当前字符开头的多个字符.您必须使用 Esc 来停止覆盖. |
5 | s 用字符替换当前字符你输入.之后,您将处于插入模式. |
6 | S 删除光标所在的行并将其替换为新行文本.输入新文本后,vi仍处于插入模式. |
您可以从一个地方复制行或单词,然后使用以下命令将它们粘贴到另一个地方 :
Sr.No. | Command&描述 |
---|---|
1 | yy 复制当前行. |
2 | yw 复制小写w光标所在字符的当前单词,直到单词结尾. |
3 | p 将复制的文本放在光标后面. |
4 | P 在光标前面放置被拉动的文本. |
有一些高级命令可以简化日期 - 今天编辑并允许更有效地使用vi :
Sr.No. | Command&描述 |
---|---|
1 | J 将当前行与下一行连接起来. j个命令的计数加入多行. |
2 | << 将当前行向左移动一个班次宽度. |
3 | >> 将当前行向右移动一个班次宽度. |
4 | 〜 切换光标下字符的大小写. |
5 | ^ G 同时按Ctrl和G键显示当前文件名和状态. |
6 | U 将当前行恢复到光标进入行之前的状态. |
7 | u 这有助于撤消在文件中完成的最后一次更改.再次输入'u'将重新进行更改. |
8 | J 将当前行与下一行连接起来.计数连接多行. |
9 | :f 以%显示文件中的当前位置和文件名,文件总数. |
10 | :f filename 将当前文件重命名为filename. |
11 | :w filename 写入文件文件名. |
12 | :e filename 打开另一个带文件名的文件. |
13 | :cd dirname 将当前工作目录更改为dirname. |
14 | :e# 在两个打开的文件之间切换. |
15 | :n 如果您使用vi打开多个文件,请使用:n 转到该系列中的下一个文件. |
16 | :p 如果您使用vi打开多个文件,请使用:p 转到该系列中的上一个文件. |
17 | :N 如果您使用vi打开多个文件,请使用:N 转到该系列中的上一个文件. |
18 | :r file 读取文件并将其插入当前行之后. |
19 | :nr file 读取文件并在 n 行之后插入. |
Th e vi编辑器有两种搜索:字符串和字符.对于字符串搜索,使用/和?命令.当您启动这些命令时,刚刚输入的命令将显示在屏幕的最后一行,您可以在其中键入要查找的特定字符串.
这两个命令仅在方向上有所不同搜索发生和减去的地方;
/命令向前搜索(向下)文件.
?命令在文件中向后搜索(向上).
n 和 N 命令分别以相同或相反的方向重复上一个搜索命令.有些人物有特殊的含义.这些字符前面必须加一个反斜杠( \ )作为搜索表达式的一部分.
Sr.No. | Character&描述 |
---|---|
1 | ^ 在行的开头搜索(在搜索表达式的开头使用). |
2 | . 匹配单个字符. |
3 | * 匹配零或更多的前一个字符. |
4 | $ 行尾(在搜索表达式末尾使用). |
5 | [ 启动一组匹配或不匹配的表达式. |
6 | < 这是用反斜杠转义的表达式找到单词的结尾或开头. |
7 | > 这有助于查看'< '上面的字符描述. |
字符搜索在一行内搜索找到命令后输入的字符. f 和 F 命令仅搜索当前行上的字符. f 向前搜索, F 向后搜索,光标移动到找到的字符的位置.
t 和 T 命令仅搜索当前行上的字符,但对于 t ,光标移动到字符前面的位置, T 向后搜索该行后面的位置.
您可以使用更改vi屏幕的外观以下:set 命令.进入命令模式后,键入:set ,然后输入以下任何命令.
Sr.No. | Command&描述 |
---|---|
1 | :set ic 忽略搜索时的情况 |
2 | :set ai 设置autoindent |
3 | :set noai Unset autoindent |
4 | :set nu 在左侧显示行号的行 |
5 | :set sw 设置软件tabstop的宽度.例如,您可以使用此命令将移位宽度设置为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/)使您可以快速替换单词或文件中的单词组.以下是替换text&minus的语法;
:s/search/replace/g
g 代表全球.此命令的结果是光标行上的所有出现都会发生变化.
以下几点将增加您的成功with vi :
您必须处于命令模式才能使用这些命令. (可以随时按两次Esc以确保您处于命令模式.)
您必须小心这些命令.这些区分大小写.
您必须处于插入模式才能输入文本.