给新用户提供一种简单的行编辑器。
edit [ -r ] [ File ... ]
edit 命令启动一个行编辑器,该编辑器是为初级用户设计的,是 ex 编辑器的简化版。edit 编辑器属于一系列包含了 ed 编辑器、ex 编辑器和 vi 编辑器的编辑器族。了解 edit 编辑器可以帮助您学习其它编辑器更高级的功能。要编辑文件的内容,请输入:
edit File
当 File 参数指定的是一个存在的文件时,edit 命令将该文件拷贝到缓冲区并显示文件中的行数和字符数。然后它显示 :(冒号)提示符来表明它准备从标准输入中读取子命令。
如果 File 参数中指定的文件尚未存在 edit 命令提示该信息并新建文件。您可以为 File 参数指定一个以上的文件名,在这种情况下 edit 命令将第一个文件拷入缓冲区,并将剩余的文件名储存在变量列表中以备将来使用。如果您不用 w 子命令做出改变的话,edit 编辑器不会改变编辑的文件。
edit 编辑器以下面的两种方式之一进行操作:
命令方式 | 识别并运行 edit 编辑器的子命令。当您启动 edit 编辑器时,它处于命令方式。要在其它时间进入命令方式,请仅在一行的开头输入 .(句点)。 |
文本输入方式 | 允许您往 edit 编辑器缓冲区中输入文本。请使用append (a)子命令、change (c)子命令,或者insert (i)子命令进入文本输入方式。要结束文本输入方式,请仅在一行的开头输入 .(句点)。 |
-r | 在编辑器或系统故障后恢复正在编辑的文件。 |
edit 编辑器使用下面的三种寻址类型:
行号寻址是利用行号或符号名称在文件找出某一行。这种方法是找到某一行或某些行的最简单方式。
要利用符号名称寻址第一行,请输入:
.
要利用符号名称寻址最后一行,请输入:
$
您也可以通过用逗号或分号将行号或符号地址分开,以此指定某个范围的行。第二个地址必须指向该范围第一个地址行后面的行。
示例:
1,5
寻址第一行到第五行。
.,$
寻址第一行到最后几行。
edit 编辑器可以通过某一行与当前行的相对位置找到该行的地址。以-Number或者+Number参数开头的地址分别指向当前行之前第某行或之后第某行。
示例:
+8
寻址当前行之后第 8 行。
您也可以利用符号名称结合 -Number或者 +Number的地址来找到相对于第一行或最后一行的某一行。
示例:
.+3
寻址第一行之后 3 行,以及:
$-10
寻址最后一行之前 10 行。
您可以通过在缓冲区中搜索某个特殊的模式来指定寻址行。edit 编辑器向前或向后搜索,并停止在第一次遇到的、含有与Pattern参数匹配内容的行的地方。如果必要的话,该搜索折回缓冲区的结束或起始位置,直到它找到匹配的对象或是返回到当前行。
要向前搜索,请输入:
/Pattern/
要向后搜索,请输入:
?Pattern?
您也可以将Pattern参数用逗号或者分号来分开,以此指定某个范围内的行。第二个地址必须指向该范围第一个地址行后面的行。
示例:
Pattern,Pattern
当被用作Pattern参数的一部分时,下面的字符具有特殊的意义:
^ | 作为Pattern参数的第一个字符时,与行的开始相匹配。 |
$ | 作为Pattern参数的最后一个字符时,与行的结尾相匹配。 |
edit 编辑器子命令影响 .(句点)所表示的当前行。当您启动 edit 编辑器时,当前行是缓冲区中的最后一行。随着缓冲区被编辑,当前行变为最近一次被子命令所作用的行。为了处理文件的不同部分,您必须知道如何找到当前行以及在文件中如何寻址不同行。
您可以利用 edit 编辑器的子命令执行下面的任务:
在下面的子命令中,参数Address是可选的。如果您指定了地址,请不要输入括弧。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
[Address]append (a) Text . |
如果您没有指定Address参数,请附上您在当前行后面键入的文本。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。
如果您指定了地址,子命令 a 就将文本附加在指定的行之后。如果您指定地址 0,子命令 a 就将文本放置在缓冲区的起始位置。 输入文本,并在每一行的末尾处按 Enter 键。当您输完所有文本时,在行的起始处输入单独的一个 .(句点),以结束文本输入方式并返回命令方式。您可以使用子命令 1,$p 来显示缓冲区中所有的内容。 注:
在安置文本时,子命令 a 和子命令 i 不同。 |
[Address]insert (i)Text. |
如果您不指定参数 Address,则在当前行之前插入文本。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。
如果您指定地址,子命令 i 就在指定的行之前插入文本。您不能指定地址 0。 输入您的文本,并在每一行的末尾按 Enter 键。当输入所有文本后,请仅在一行的开头输入 .(句点),以结束文本输入方式并返回命令方式。您可以使用子命令 1,$p 来显示缓冲区中所有的内容。 注:
在安置文本时,子命令 i 与子命令 a 不同。 |
fileFile | 将当前文件的文件名改为参数File所指定的文件名。edit 编辑器不会认为该文件要被编辑。 |
在下面的子命令中,参数Address是可选的。如果您指定了地址,请不要输入括弧。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
[Address1,Address2]change (c). Text |
如果您不指定参数Address,则用您输入的文本替换当前行。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。
如果您指定地址,子命令c将替换指定的某行或某几行。您可以通过用逗号将地址分开,以指定某个范围的行。 输入您的文本,并在每一行的末尾按 Enter 键。当您输完所有的文本时,在行的起始处输入单独的一个 .(句点),以结束文本输入方式并返回到命令方式。您可以使用子命令 1,$p 来显示缓冲区中的所有内容。最后输入的行成为当前行。 |
在下面的子命令中,参数Address和参数Buffer是可选的。如果您指定地址或缓冲区,请不要输入括弧。您可以使用完整的子命令,或是其缩写(在括弧中显示)。
[Address1,Address2] delete [Buffer] (d) | 如果您不指定参数Address,则删除当前行。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。
如果您指定地址,子命令 d 就删除指定的某行或某些行。您可以通过用逗号将地址分开,以指定某个范围的行。最后删除的行之后的行就成为当前行。 如果您用从 a 到 z 的一个小写字母来指定一个缓冲区 edit 编辑器就把指定的几行保存在该缓冲区中。如果您用大写字母指定该缓冲区 edit 编辑器就将这些行添加到该缓冲区中。您可以使用子命令 pu 来将已删除的行放回缓冲区。 |
在下面的子命令中,您可以使用完整的子命令,或是其缩写(如括弧中所示)。
file (f) | 显示当前文件名称以及下面的相关信息:
|
在下面的子命令中,参数Address是可选的。如果您指定了地址,请不要输入括弧。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
在下面的子命令中,您可以使用完整的子命令,或是其缩写(如括弧中所示)。
edit File (e) | 在参数File所指定的新文件上开始一个编辑会话。编辑器首先检查自最后一个write (w)子命令以来该缓冲区是否被编辑过。
如果自从最后一个w子命令以来该文件已被编辑,该 edit 编辑器就发出一个警告并取消子命令e。否则 edit 编辑器删除编辑器缓冲区的内容,让指定的文件成为当前文件,并显示新的文件名。 在确保该文件可以被编辑后 edit 编辑器将该文件读入编辑器的缓冲区。如果 edit 编辑器读取文件时未出错,它就显示它所读取的行数和字符数。最后读取的行成为新的当前行。 |
next (n) | 将命令行参数表中指定的下一个文件拷贝到缓冲区中进行编辑。 |
在下面的子命令中,您可以使用完整的子命令,或是其缩写(如括弧中所示)。
quit (q) | 在使用子命令write (w)后结束编辑回话。如果您修改了缓冲区并且未将更改写入磁盘,edit 编辑器就显示一条警告消息,并且不结束该编辑回话。 |
quit! (q!) | 结束编辑回话,废弃从最后一个w子命令以来对该缓冲区所做出的任何改变。 |
在下面的子命令中,参数Address是可选的。如果您指定了地址,请不要输入括弧。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
[Address1,Address2]global/Pattern/SubcommandList (g) | |
给与参数Pattern匹配的指定行做标记。然后 edit 编辑器对标记过的每一行都执行参数SubcommandList中指定的子命令列表。
如果您不指定参数Address,子命令g就作用于当前行。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。 如果您指定了地址,子命令g就作用于指定的某行或某几行。您可以通过用逗号将地址分开,以指定某个范围的行。 单独一条子命令或子命令列表中第一条子命令与子命令g出现在相同的行。剩下的子命令必须出现在不同的行,并且每一行都(除了最后一行)以\ (反斜杠) 结尾。缺省子命令为print (p)。 该子命令列表可能包括子命令append (a)、子命令insert (i)和子命令change (c),以及与它们有关的输入。在这种情况下,表示结束的句号如果位于该命令列表的最后一行,就可以省略。 注:
子命令undo (u)和子命令g不能出现在子命令列表中。 |
在下面的子命令中,参数Address1和参数Address2是可选的。如果您指定了地址,请不要输入括弧。您必须指定参数Address3。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
[Address1,Address2]move Address3 (m) | 如果您不指定地址或是地址范围,则将当前行移到参数Address3所指定的行之后。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。
如果您指定地址,子命令m就移动指定的一行或几行。您可以通过用逗号将地址分开,以指定某个范围的行。移动的行的第一行成为当前行。 |
[Address1,Address2]yank [Buffer] (ya) | 拷贝指定的一行或几行到 Buffer 中,后者是可选参数,用 a 到 z 间的一个希腊字母来指定。您可以使用子命令 pu 将这些行放置到另外的文件中。 |
[Address]put [Buffer] (pu) | 检索指定的参数 Buffer 的内容,如果您没有指定地址,则将其放置到当前行之后。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。
如果您指定地址,子命令 pu 检索指定缓冲区的内容,并将其放置到指定行之后。如果您没有指定参数 Buffer,子命令 pu 恢复最近一次删除或拷贝的文本。 您可以使用子命令 pu 加上子命令 delete (d) 在文件内部移动行,或者加上子命令 yank (ya) 在文件之间复制行。 在宏的内部,您不能使用子命令 pu 和子命令 ya。 |
保存 | 保存当前编辑器缓冲区,仿佛系统刚刚崩溃一样。当子命令 write (w) 产生错误并且您不知道如何保存您的工作时使用该子命令。请使用子命令 recover 来恢复该文件。 |
recover File | 从系统保存区域中恢复参数 File 所指定的文件。请在系统崩溃或者子命令 preserve 之后使用该子命令。 |
在下面的子命令中,参数Address是可选的。如果您指定了地址,请不要输入括弧。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
在下面的子命令中,参数Address是可选的。如果您指定了地址,请不要输入括弧。您可以使用完整的子命令,或是其缩写(如括弧中所示)。
[Address1,Address2] substitute/Pattern/Replacement/ (s) [Address1,Address2] substitute/Pattern/Replacement/g |
|
在每个指定的行上,替换指定的参数Pattern的第一个实例。您可以替换参数Pattern的每一个实例,只需将子命令global (g)添加到子命令s的结束位置。
如果您不指定地址,子命令s就作用于当前行。如果您在缓冲区中的位置不正确,您可能需要查找当前行或者指定地址。如果您指定了地址,子命令s就作用于指定的一行或几行。您可以通过用逗号将地址分开,以指定某个范围的行。 |
在下面的子命令中,您可以使用完整的子命令,或是其缩写(如括弧中所示)。
undo (u) | 撤销最近一个缓冲区编辑子命令对缓冲区的更改。您不能撤销子命令write (w)或子命令edit (e)。
注:
子命令global被认为是独立于子命令u的。 |