英语法语西班牙语

Ad


OnWorks 网站图标

exposix - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 exposix

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 exposix,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


ex — 文本编辑器

概要


ex [-rR] [-s|-v] [-c 命令] [-t 标签串] [-w 尺寸] [文件...]

商品描述


ex 实用程序是一个面向行的文本编辑器。 编辑器还有另外两种模式——
开放和可视化——其中可以进行面向屏幕的编辑。 这是更多的描述
完全由 ex 打开视觉 命令和在 vi.

如果一个操作数是 '-',结果未指定。

本节使用术语 编辑 缓冲 描述当前的工作文本。 没有具体的
该术语隐含了实施。 所有编辑更改都在编辑上执行
缓冲区,对它的任何更改都不会影响任何文件,直到编辑器命令写入
文件中。

某些终端不具备支持完整功能所需的所有功能 ex
定义,例如全屏编辑命令(视觉 模式 or 打开 模式)。 什么时候
此类终端不支持这些命令,这种情况不应产生
错误消息,例如“不是编辑器命令”或报告语法错误。 这
实现可以接受命令并在屏幕上产生结果
未能满足本卷要求的结果
POSIX.1-2008 或报告描述与终端相关的缺陷的错误。

配置


ex 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分 12.2,
公用事业 句法 指南, 除了未指定的用法 '-',而 '+' 也许
被识别为选项分隔符以及 '-'.

应支持以下选项:

-c 命令
指定要在从加载的第一个编辑缓冲区中执行的初始命令
现有文件(请参阅扩展描述部分)。 实现可能
支持多单 -c 选项。 在这样的实现中,指定的
命令应按照命令行中指定的顺序执行。

-r 恢复命名文件(请参阅扩展说明部分)。 恢复
文件的信息应在编辑器或系统崩溃期间保存(对于
例如,当编辑器被编辑器可以捕捉到的信号终止时),
或使用后 ex 保存 命令。

A 紧急 在这种情况下是系统或实用程序的意外故障
需要重新启动失败的系统或实用程序。 系统崩溃意味着
当时运行的任何实用程序也会崩溃。 如果是编辑器或系统
崩溃,对编辑缓冲区的更改次数(自最近 保存
命令)将被恢复是未指定的。

如果不 文件 给出操作数并且 -t 未指定选项,所有其他
选项, 退出 变量,以及任何 .exrc文件 文件将被忽略; 的列表
应写入调用用户可用的所有可恢复文件,并且
编辑器应正常退出,无需进一步操作。

-R只读 编辑选项。

-s Prepare ex 通过采取以下措施进行批量使用:

* 禁止书写提示和信息(但不是诊断)消息。

* 忽略值 学期 和任何实现默认终端类型和
假设终端是一种不支持开放或可视模式的类型;
看到 视觉 命令和描述 vi.

* 禁止使用 退出 环境变量和任何读取
.exrc文件 文件; 请参阅扩展说明部分。

* 抑制自动缩进,忽略值 自动缩进 编辑选项。

-t 标签串
编辑包含指定的文件 标签串; 看到 标签. 标签功能
表示为 -t 标签串行李牌 命令是可选的。 应该是
在任何系统上提供,该系统还提供了符合 标签;
否则,使用 -t 产生未定义的结果。 在任何系统上,它应该是
指定一个以上的错误 -t 选项。

-v 以可视模式开始(见 vi).

-w 尺寸 设置值 窗口 编辑器选项 尺寸.

操作数


应支持以下操作数:

文件 要编辑的文件的路径名。

标准输入


标准输入由一系列命令和输入文本组成,如
扩展说明部分。 实现可能会将每一行标准输入限制为
{LINE_MAX} 的长度。

如果标准输入不是终端设备,就好像 -s 选项是
指定的。

如果从标准输入读取返回错误,或者如果编辑器检测到结束 -
来自标准输入的文件条件,它应等效于 SIGHUP 异步
事件。

INPUT FILES


输入文件应为文本文件或将是文本文件的文件,但不完整的文件除外
最后一行的长度不超过 {LINE_MAX}−1 个字节并且不包含 NUL
人物。 默认情况下,任何不完整的最后一行都应被视为有尾随
. 可以选择允许编辑其他形式的文件 ex
实现。

.exrc文件 文件和源文件应为文本文件,包括 ex 命令; 见
扩展说明部分。

默认情况下,编辑器应从要编辑的文件中读取行而不解释
任何这些行作为任何形式的编辑器命令。

环境 变数


以下环境变量会影响执行 ex:

覆盖系统选择的水平屏幕尺寸。 查看基本定义
POSIX.1-2008 卷, 章节 8, 环境 变量 对于有效值和
未设置或为空时的结果。

退出 确定清单 ex 在编辑器启动时执行的命令。 见
有关初始化阶段的更多详细信息,请参阅扩展描述部分。

首页 确定应搜索编辑器开始的目录的路径名-
up 文件名为 .exrc文件; 请参阅扩展说明部分。

为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)

LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。

LC_COLLATE
确定范围、等价类和多变量行为的语言环境
正则表达式中的字符整理元素。

LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
参数和输入文件),常规中字符类的行为
表达式,字符分类为大写或小写字母,
字母的大小写转换,以及单词边界的检测。

LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息。

线数 覆盖系统选择的竖屏尺寸,用作行数
在视觉模式下的屏幕和垂直屏幕大小。 见基地
POSIX.1-2008 的定义卷, 章节 8, 环境 变量 为有效
未设置或为空时的值和结果。

路径 确定用于处理的消息目录的位置 LC_消息.

PATH 确定指定的 shell 命令的搜索路径 ex 编辑
命令 !, , , 以及打开和可视模式命令 !; 看到
命令搜索和执行的描述 部分 2.9.1.1, 命令
搜索 执行.

SHELL 确定用作默认值的首选命令行解释器
编辑选项。

学期 确定终端类型的名称。 如果此变量未设置或为空,则
应使用未指定的默认终端类型。

异步 新闻


在本节和以下各节中使用以下术语来指定命令和
异步事件操作:

完成
完整写入是将编辑缓冲区的全部内容写入文件
终端设备以外的类型,或编辑缓冲区的保存导致
由用户执行 ex 保存 命令。 编写编辑内容
缓冲到一个临时文件,该文件在编辑器退出时将不会被删除
被认为是一个完整的写。

收到信号后应采取以下措施:

SIGINT 如果标准输入不是终端设备, ex 不得写入文件或
返回命令或文本输入模式,并以非零退出退出
状态。

否则,如果执行打开或可视文本输入模式命令, ex 收到
SIGINT 的行为应与其收到的特点。

除此以外:

1. 如果执行一个 ex 文本输入模式命令,所有已被输入的行
完全输入应解析到编辑缓冲区,任何部分
输入的行将被丢弃。

2. 如果有当前正在执行的命令,它应该被中止并显示一条消息
显示。 除非另有规定 ex or vi 命令说明,
未指定是否出现执行命令修改的任何行
已修改,或在被执行命令修改之前的状态,在
缓冲区。

如果当前正在执行的命令是运动命令,则其关联的
命令将被丢弃。

3. 如果处于开放或可视命令模式,终端将被警告。

4. 然后编辑器将返回到命令模式。

SIGCONT 如果处于打开或可视模式,屏幕将被刷新。

SIGHUP 如果自上次完整写入以来编辑缓冲区已被修改, ex
尝试保存编辑缓冲区,以便以后可以使用 -r
选项还是 ex 恢复 命令。 编辑者不得写入文件或返回
命令或文本输入模式,并应以非零退出状态终止。

SIGTERM 参考SIGHUP。

未指定对所有其他信号采取的操作。

标准输出


标准输出应仅用于向用户写入提示,用于提供信息
消息,以及从文件中写入行。

斯特德


标准错误应仅用于诊断消息。

OUTPUT FILES


来自的输出 ex 应为文本文件。

EXTENDED 商品描述


只有 ex 本节描述了编辑器的模式。 看 vi 额外编辑
可用的功能 ex.

发生错误时, ex 将写一条消息。 如果终端支持突出模式
(如逆向视频),消息应以突出模式写入。 如果终端
不支持突出模式和编辑选项 错误铃 已设置,警报操作
应在错误消息之前。

默认情况下, ex 应以命令模式启动,该模式应由 : 迅速的; 看
提示 命令。 文本输入模式可以通过 附加, 更改
命令; 可以通过键入以下命令退出(并重新进入命令模式) ('。') 独自的
在一行的开头。

初始化 in ex vi
在本节和以下各节中使用以下符号来指定在
编辑缓冲区:

备用 当前 路径名
两个路径名,命名 当前备用, 由编辑器维护。 任何 ex
将文件名作为参数的命令应将它们设置如下:

1.如果 文件 参数被指定为 ex 编辑, ex恢复 命令,或者如果
an ex 行李牌 命令替换编辑缓冲区的内容。

一个。 如果该命令替换了编辑缓冲区的内容,则当前
路径名应设置为 文件 参数或标记指示的文件,
并且备用路径名应设置为当前的先前值
路径名。

湾否则,备用路径名应设置为 文件 论据。

2.如果 文件 参数被指定为 ex 下页 命令:

一个。 如果该命令替换了编辑缓冲区的内容,则当前
路径名应设置为第一个 文件 参数和备用路径名
应设置为当前路径名的前一个值。

3.如果 文件 参数被指定为 ex 文件 命令,当前路径名
应设置为 文件 参数,并且备用路径名应设置为
当前路径名的先前值。

4.如果 文件 参数被指定为 ex 命令(即,当
读取或写入文件,而不是写入由 编辑
选项),或 文件 参数被指定为 ex XIT 命令:

一个。 如果当前路径名没有值,则当前路径名应设置为
文件 论据。

湾否则,备用路径名应设置为 文件 论据。

如果备用路径名设置为当前路径名的前一个值,则
当前路径名没有以前的值,那么备用路径名应该有
结果没有任何价值。

当前 线
光标引用的编辑缓冲区的行。 各命令说明
指定命令执行后的当前行,作为 当前 线
折扣值. 当编辑缓冲区不包含任何行时,当前行应为零; 看
解决 in ex.

当前
当前显示的光标所在行列。 (列应为
从 1 开始编号。)每个命令描述指定当前列
命令执行后,作为 当前 价值。 这个专栏是
理想 在编辑器的生命周期中被记住的列。 实际显示
光标所在的行列可能与当前列不同;
见光标定位讨论 命令 描述 in vi.


当前列值的描述,意味着当前列应为
设置为最后一个显示行列,在该列上显示第一个的任何部分
非行的。 如果该行没有非非人物,
当前列应设置为最后一个显示行列
显示最后一个非行中的字符。 如果线路是
为空,当前列应设置为列位置 1。

编辑缓冲区中的行长度可能限制为 {LINE_MAX} 字节。 在开放和
可视模式,编辑缓冲区中的行长度可能被限制为
适合显示的字符。 如果在编辑期间超出任一限制,则会出现
应写入错误信息。 如果从文件中读入的行超过任一限制,
将写入错误消息并且可以终止编辑会话。

如果编辑器由于用户命令以外的任何原因停止运行,并且编辑
自上次完整写入以来缓冲区已被修改,它应等效于 SIGHUP
异步事件。 如果系统崩溃,则相当于一个 SIGHUP 异步
事件。

在初始化期间(在第一个文件被复制到编辑缓冲区之前或任何用户
来自终端的命令被处理)将发生以下情况:

1.如果环境变量 退出 设置后,编辑器将执行 ex 命令
包含在那个变量中。

2。 如果 退出 变量未设置,并且以下所有情况都为真:

一种。 这 首页 环境变量不为空且不为空。

湾文件 .exrc文件 在引用的目录中 首页 环境变量:

一世。 存在

ii. 由与进程的真实用户 ID 相同的用户 ID 拥有或
进程有适当的权限

三、 除了所有者之外的任何人都不可写

编辑器应执行 ex 该文件中包含的命令。

3. 当且仅当以下所有条件都为真:

一个。 当前目录没有被引用 首页 环境变量。

湾中的一个命令 退出 环境变量或命令 .exrc文件 文件中
引用的目录 首页 环境变量设置编辑器选项
导出.

C。 这 .exrc文件 当前目录下的文件:

一世。 存在

ii. 由与进程的真实用户 ID 相同的用户 ID 拥有,或由其中之一拥有
一组实现定义的用户 ID

三、 除了所有者之外的任何人都不可写

编辑器应尝试执行 ex 该文件中包含的命令。

任意行 .exrc文件 应忽略空行的文件。 如果有的话 .exrc文件 文件已存在,
但由于所有权或许可原因未读取,则应为错误。

之后 退出 变量和任何 .exrc文件 文件被处理,由指定的第一个文件
应编辑用户,如下所示:

1. 如果用户指定 -t 选项,效果如同 ex 行李牌 命令是
使用指定的参数输入,但如果标记处理执行
不会导致文件被编辑,效果应如下面的第 3 步所述。

2. 否则,如果用户指定了任何命令行 文件 论据,效果应为
好像 ex 编辑 命令以这些参数中的第一个作为其输入 文件
论据。

3. 否则,效果如同 ex 编辑 命令是输入的
不存在的文件名作为其 文件 争论。 未明确此项行动是否应
设置当前路径名。 在此操作未设置
当前路径名,任何使用当前路径名的编辑器命令都将失败,直到
editor 命令设置当前路径名。

如果 -r 选项被指定,第一次在初始参数列表中的文件或
指定的文件 -t 选项被编辑,如果恢复信息以前已经
保存有关它的信息,该信息将被恢复,编辑器将表现得好像
编辑缓冲区的内容已被修改。 如果有多个实例
要恢复的文件,应恢复最近保存的文件,并在
有可以恢复的文件的先前版本的信息性消息
将被写入。 如果没有有关文件的恢复信息可用,则会显示信息
应写出这方面的消息,并照常进行编辑。

如果 -c 选项被指定,第一次一个已经存在的文件(包括一个
可能不存在但恢复信息可用的文件,当 -r
选项被指定)替换或初始化编辑缓冲区的内容,当前
line 应设置为编辑缓冲区的最后一行,当前列应设置为
非,以及 ex 指定的命令 -c 选项将被执行。 在这
情况下,当前行和当前列不应按照命令的描述设置
与编辑缓冲区内容的替换或初始化相关联。 然而,如果
-t 选项或 行李牌 命令与此操作相关联, -c 选项命令
应执行,然后应执行到标签的移动。

当前参数列表最初应设置为用户指定的文件名
命令行。 如果用户未指定文件名,则当前参数列表
将是空的。 如果 -t 选项已指定,未指定是否有任何文件名
标签处理产生的结果应放在当前参数列表之前。 在这种情况下
其中文件名作为前缀添加到当前参数列表中,当前参数
列表引用应设置为该文件名。 未添加文件名的情况
作为当前参数列表的前缀,当前参数列表引用应
逻辑上位于命令行上指定的第一个文件名之前(对于
例如,随后的 ex 下页 命令应编辑命令中的第一个文件名
线)。 如果 -t 未指定选项,当前参数列表引用应为
命令行上的第一个文件名。

解决 in ex
寻址 ex 与当前行和当前列相关; 一行的地址
是它的从 1 开始的行号,列的地址是它从 1 开始的计数
行的开头。 通常,当前行是受命令影响的最后一行。
当前行号是当前行的地址。 在每个命令描述中,
描述了该命令对当前行号和当前列的影响。

地址构造如下:

1.性格 '。' (句号) 应寻址当前行。

2.性格 '$' 应寻址编辑缓冲区的最后一行。

3. 正十进制数 n 应解决 n编辑缓冲区的第 th 行。

4. 地址 “'X” 指用标记名称字符标记的行 'x',这
应是可移植字符集中的小写字母,反引号字符,
或单引号字符。 如果标记的行不是,则为错误
当前存在于编辑缓冲区中或尚未设置标记。 可以标记线条
ex 标记 or k 命令,或 vi m 命令。

5. 正则表达式人物 ('/') 应寻址第一行
通过从当前行后面的行向前搜索到末尾找到
编辑缓冲区并在第一行停止
终止匹配正则表达式。 如所述 原价 表达式
in ex, 一个由空正则表达式组成的地址,由
人物 (“//”) 应寻址下一行,该行不包括
终止匹配遇到的最后一个正则表达式。 此外,
第二可以在命令行的末尾省略。 如果 包裹扫描 编辑
选项被设置,搜索将环绕到编辑缓冲区的开头,并且
继续直到并包括当前行,以便整个编辑缓冲区
搜索。 在正则表达式中,序列 “\/” 应代表文字
而不是正则表达式分隔符。

6. 包含在的正则表达式人物 ('?) 须处理
通过从当前行之前的行向后搜索找到的第一行
朝向编辑缓冲区的开头并在第一行停止
行不包括终止匹配正则表达式。 一个地址
由空正则表达式组成,由人物 (“??”)
应寻址不包括终止行的前一行
匹配遇到的最后一个正则表达式。 此外,第二
mark> 可以在命令行的末尾省略。 如果 包裹扫描 设置了编辑选项,
搜索应从编辑缓冲区的开始到结束
编辑缓冲区并继续直到并包括当前行,以便整个编辑
缓冲区被搜索。 在正则表达式中,序列 “\?” 应代表一个
文字而不是 RE 分隔符。

7.A ('+') 或减号 ('-') 后跟一个十进制数应寻址
当前行加上或减去数字。 一个 '+' or '-' 后面没有小数
number 应寻址当前行的正负 1。

地址后可以跟零个或多个地址偏移量,可选-分开。
地址偏移的构造如下:

1。 “ '+' or '-' 紧随其后的十进制数应加(减)
指示到(来自)地址的行数。 一个 '+' or '-' 后面没有一个
十进制数应在地址上加(减)1。

2. 十进制数应将指示的行数添加到地址中。

中间地址值小于零或大于不应该是错误
比编辑缓冲区中的最后一行。 最终地址值应该是错误的
小于零或大于编辑缓冲区中的最后一行。

命令采用零、一或两个地址; 见描述 1地址2地址 in
命令 描述 in ex. 如果提供的地址数量超过所需数量
一个需要零地址的命令,它应该是一个错误。 否则,如果超过
向命令提供所需数量的地址,首先指定的地址
应评估,然后丢弃,直到剩余的最大有效地址数。

地址之间应由一个(',') 或(';').
如果在之前或之后没有指定地址或者分隔符,它应该是
就好像当前行的地址是在分隔符之前或之后指定的一样。 在里面
的情况分隔符,当前行('。') 应设置为第一个
地址,然后才会计算下一个地址。 此功能可用于
确定向前和向后搜索的起始线(参见规则 5. 和 6.)。

一个('%') 相当于输入两个地址 “1,$”.

任何定界地址、地址分隔符或地址之间的字符
应丢弃偏移量。

命令 Line 解析 in ex
在本节和以下各节中使用以下符号来描述解析行为:

逃生 如果一个字符被称为`` -转义''或`` -V-
转义'',表示该字符获得或失去了特殊含义
由于分别在前面或者-V
特点。 除非另有说明,转义字符将被丢弃
届时,不得出于任何目的进一步考虑。

命令行解析应按以下步骤进行。 对于每一步,字符
已经评估过的将被忽略; 也就是说,短语“主角”指的是
下一个尚未评估的字符。

1. 领先字符将被跳过。

2. 领先字符将被跳过。

3. 如果前导字符是双引号字符,则到和的字符
包括下一个非-逃脱将被丢弃,并且任何
后续字符应作为单独的命令进行解析。

4. 可解释为地址的前导字符应进行评估; 看
解决 in ex.

5. 领先字符将被跳过。

6. 如果下一个字符是字符或:

一个。 如果下一个字符是:

一世。 如果 ex 在打开或可视模式下,当前行应设置为最后
指定地址(如果有)。

ii. 否则,如果最后一个命令被一个特点,
不得采取任何行动; 例如,命令 "|| ”
执行两个隐含的命令,而不是三个。

三、 否则,请执行步骤 6.b。 适用。

湾否则,隐含的命令应为 打印 命令。 最后 #, pl
指定给任何的标志 ex 命令将被记住并适用于此
隐含的命令。 执行 ex , 打印名单 命令应设置
记住了标志 #,什么都没有,并且 l,分别加上任何其他标志
指定执行 , 打印名单 命令。

If ex 当前没有执行 全球化 or v 命令,没有地址或计数
指定时,当前行在命令执行前加 1
执行。 如果增加当前行会导致地址超过
编辑缓冲区中的最后一行,命令将失败,并且增量不应
发生。

C。 这或者字符将被丢弃,任何后续
字符应作为单独的命令进行解析。

7. 命令名必须由下一个字符组成(如果字符不是
字母),或下一个字符和任何后续的字母字符(如果
字符是字母),但以下情况除外:

一个。 由命令名称中字符的任何前缀组成的命令 删除,
紧随其后的是任何字符 '我', 'p', '+', '-''#' 应该
解释为 删除 命令,然后是, 后跟字符
不是前缀的一部分 删除 命令。 最大数量
字符应与命令名称匹配 删除; 例如, “德尔”
不被视为 “德” 其次是旗帜 l.

湾由字符组成的命令 'k', 后跟一个字符,可以是
用作标记的名称,应等同于后跟一个标记命令
, 后跟跟在 'k'.

C。 由字符组成的命令 's', 后跟可能是的字符
解释为有效选项 s 命令,应等同于 s
命令,没有任何模式或替换值,后跟一个,
跟在后面的字符 's'.

8. 命令名应与可能的命令名相匹配,一个命令
包含与用户指定的字符匹配的前缀的名称应为
执行的命令。 在用户指定字符的命令的情况下
可能有歧义,执行的命令如下:

┌───┬────────┬┬───┬─────────┬┬────┬────────┐
a附加n下页tt
c更改p打印u复原
ch更改pr打印un复原
e编辑rvv
m移动rew
ma标记ss │ │ │ │
└───┴────────┴┴───┴─────────┴┴────┴────────┘
不应检查名称导致类似歧义的实现扩展
进行匹配,直到 POSIX.1-2008 指定的命令的所有可能匹配都具有
被检查。

9. 如果命令是 ! 命令,或者如果命令是 命令后跟零
或者更多字符和一个 !,或者如果命令是 命令后跟
一个或多个字符和一个 !,命令的其余部分应包括所有
字符最多为非-逃脱. 这应该
丢弃,任何后续字符都应作为单独的 ex 命令。

10. 否则,如果命令是 编辑, ex下页 命令,或 视觉 命令 while
在打开或可视模式下,命令的下一部分应解析如下:

一个。 任何 '! 紧跟在命令后面的字符应被跳过并成为一部分
命令的。

湾任何领先字符应被跳过并成为命令的一部分。

C。 如果下一个字符是 '+', 字符直到第一个非-逃脱
或非-逃脱应被跳过并成为
命令。

d. 命令的其余部分应由段落中指定的步骤确定
12.

11. 否则,如果命令是 全球化, 打开, sv 命令,下一部分
命令应解析如下:

一个。 任何领先字符应被跳过并成为命令的一部分。

湾如果下一个字符不是字母数字双引号, ,
, 或者特点:

一世。 下一个字符将用作命令分隔符。

ii. 如果命令是 全球化, 打开v 命令,字符直到第一个
非-逃脱,或第一个非- 转义分隔符
字符,应被跳过并成为命令的一部分。

三、 如果命令是 s 命令,字符直到第一个
非-逃脱, 或第二个非-逃脱
分隔符,应被跳过并成为命令的一部分。

C。 如果命令是 全球化 or v 命令,字符直到第一个
非-逃脱应被跳过并成为命令的一部分。

d. 否则,命令的其余部分应由中指定的步骤确定
第12段。

12. 否则:

一个。 如果命令是 地图, 取消映射, 简写非缩写 命令,字符
直到第一个非-V-转义, , 或双
引号字符应被跳过并成为命令的一部分。

湾否则,字符直到第一个非-逃脱,
, 或双引号字符应被跳过并成为
命令。

C。 如果命令是 附加, 更改 命令,以及步骤 12.b。 结束
在一个字符,任何后续字符,直到下一个
非-逃脱应用作命令的输入文本。

d. 如果命令以双引号字符结束,则所有后续字符,
直到下一个非-逃脱,应弃用。

e. 终止或者字符将被丢弃,任何
后续字符应被解析为单独的 ex 命令。

命令参数应按照每个的概要和描述中的描述进行解析
个人 ex 命令。 这种解析不应- 敏感,除了 !
参数,它必须跟在命令名称之后,而不进行干预字符,和
否则它会模棱两可。 例如, 参数不必是
-分开是因为 “d22p” 没有歧义,但是 文件 的论据 ex 下页
命令必须由一个或多个分隔人物。 任何在指挥
的论据 简写, 非缩写, 地图取消映射 命令可以是-V-
逃脱了,在这种情况下不得用作参数分隔符。 任何
在任何其他命令的命令参数中可以是- 转义,在这种情况下
那不得用作参数分隔符。

在命令参数中 简写, 非缩写, 地图取消映射 命令,任何
性格可以-V-逃脱。 所有这些转义字符都应被处理
字面意思,并无特殊含义。 在所有其他命令参数中 ex
不是正则表达式或替换字符串的命令,任何字符
否则有特殊意义可以- 逃脱了。 转义字符应为
字面处理,没有特殊意义,作为 shell 扩展字符或 '!, '%'
'#' 扩展字符。 看 原价 表达式 in ex更换 琴弦 in ex
命令参数的描述是正则表达式或替换字符串。

非- -逃脱 '%' 出现在的字符 文件 论据任何 ex 命令应
替换为当前路径名; 未逃脱的 '#' 字符应替换为
备用路径名。 如果它是一个错误 '%' or '#' 字符显示为未转义
未设置参数及其相应的值。

非- -逃脱 '! 参数中的字符 ex ! 命令或
开放和视觉模式 ! 命令,或在参数中 ex 命令,其中
第一个非在命令名称之后是 '! 字符,或在参数中
ex 命令,其中命令名称后跟一个或多个字符和
第一个非在命令名称之后是 '! 字符,应替换为
在所有未转义之后出现时,这三个命令中最后一个的参数
'%', '#''! 字符被替换。 如果它是一个错误 '! 字符
在这些命令之一中出现未转义,并且以前没有执行过
这些命令。

如果在解析或执行一个错误 ex 命令:

* 应写出与此相关的信息性消息。 执行 ex 命令
应停止,光标(例如当前行和列)不应
进一步修改。

* 如果 ex 命令由地图扩展产生,该地图中的所有字符
扩展应被丢弃,除非另有规定 地图 命令。

* 否则,如果 ex 命令产生于处理一个 退出 环境
变量,一个 .exrc文件 文件,一个 :来源 命令,一个 -c 选项,或 +命令 指定给
ex 编辑, ex, 下页视觉 命令,没有来自源的进一步命令
命令将被执行。

* 否则,如果 ex 命令由执行缓冲区或 全球化 or v
命令,没有进一步的命令由缓冲区的执行或 全球化 or v
命令将被执行。

* 否则,如果 ex 命令没有被终止, 所有字符最多
并包括下一个非-逃脱将被丢弃。

输入 编辑 in ex
在本节和以下各节中使用以下符号来指定命令
动作:

在 POSIX 语言环境中,一个单词由字母、数字、
和下划线,两端用字母以外的字符分隔,
数字、下划线、行首或行尾或编辑缓冲区。

当接受来自用户的输入字符时, ex 命令模式或 ex 文字输入
模式, ex 应启用规范模式输入处理,如系统接口中所定义
POSIX.1-2008 卷。

如果在 ex 文字输入方式:

1。 如果 设置了编辑选项, ex 应使用行号提示输入
如果输入,将被分配给该行,以指定的格式 ex
命令。

2。 如果 自动缩进 设置了编辑选项, ex 应提示输入使用 自动缩进
字符,如所描述的 自动缩进 编辑选项。 自动缩进 字须
跟随行号,如果有的话。

如果在 ex 命令模式:

1。 如果 提示 设置编辑选项,输入将提示使用单个 ':'
特点; 否则不会有提示。

以下各节中的输入字符对本机的影响如下:
输入线。

滑动
简介:
EOF

见说明 姿势 EOF 字符 姿势.

如果在 ex 命令模式:

如果 EOF 字符是该行输入的第一个字符,该行应为
被评估为好像它包含两个字符:a -D 和.

否则, EOF 字符没有特殊含义。

如果在 ex 文字输入方式:

如果光标跟随一个 自动缩进 性格, 自动缩进 中的字符
应修改行,以便将下一个文本输入字符的一部分
显示在前一行的第一列 移位宽度 编辑选项
列边界,将再次提示用户输入同一行。

否则,如果光标跟随一个 '0',之后是 自动缩进 角色,以及
'0' 是前一个文本输入字符, '0' 和所有 自动缩进
该行中的字符将被丢弃,并再次提示用户
同一行的输入。

否则,如果光标跟随一个 '^',之后是 自动缩进 角色,以及
'^' 是前一个文本输入字符, '^' 和所有 自动缩进
该行中的字符将被丢弃,并再次提示用户
同一行的输入。 除此之外 自动缩进 下一个输入行的电平
应从同一行派生 自动缩进 目前的水平
输入行被导出。

否则,如果没有 自动缩进 或文本输入字符在行中, EOF
字符将被丢弃。

否则, EOF 字符没有特殊含义。


简介:

-J

如果在 ex 命令模式:

导致命令行被解析; -J 应映射到
为了这个。

如果在 ex 文字输入方式:

终止当前行。 如果没有其他字符 自动缩进
行上的所有字符都将被丢弃。

提示在当前行之后的新行输入文本。 如果 自动缩进 编辑
选项被设置,适当数量的 自动缩进 字符应添加为
行的前缀,如 ex 自动缩进 编辑选项。


简介:


允许进入后续或者‐J 作为文字字符,删除
在文本输入模式下它对编辑器可能具有的任何特殊含义。 这
解析命令行时应保留和评估字符,或保留和
当输入文本成为编辑缓冲区的一部分时包括在内。

-V
简介:
-V

允许将任何后续字符作为文字字符输入,删除任何特殊字符
这意味着在文本输入模式下它可能需要编辑器。 这-V 字符
在解析命令行或输入文本成为命令行的一部分之前应丢弃
编辑缓冲区。

如果底层系统执行“literal next”功能,它是
实现定义的字符是否不是-V 执行此功能。

-W
简介:
-W

丢弃‐W,以及输入行中它前面的单词,包括任何
在单词之后和之前的字符-W。 如果``词
擦除功能由底层系统执行,它是实现定义的
是否一个字符以外的-W 执行此功能。

命令 描述 in ex
本节中使用以下符号来表示命令修饰符。 一些
这些修饰符可以省略,在这种情况下,应使用指定的默认值。

1地址 单行地址,以 中描述的任何形式给出 解决 in ex;
默认应为当前行('。'), 除非另有规定。

如果行地址为零,则应为错误,除非另有说明
以下命令说明。

如果编辑缓冲区为空,并且地址是用其他命令指定的
=, 附加, , 打开, , 视觉,或者地址不为零,
这将是一个错误。

2地址 指定包含范围的行的两个地址。 如果没有地址
指定,默认为 2地址 应仅为当前行(“.,。”), 除非
否则在以下命令描述中指定。 如果一个地址是
指定的, 2地址 应仅指定该行,除非另有说明
以下命令说明。

如果第一个地址大于第二个地址,则为错误。

如果编辑缓冲区为空,并且用命令指定了两个地址
除了 !, , wqXIT 命令,或者地址不为零,它
将是一个错误。

一个正十进制数。 如果 被指定,它应等同于
指定命令的附加地址,除非另有说明
以下命令说明。 附加地址应等于
为命令指定的最后一个地址(明确或默认)加上
-1。

如果这会导致地址大于编辑的最后一行
缓冲区,应更正为等于编辑缓冲区的最后一行。

标志 一个或多个字符 '+', '-', '#', 'p''我' (嗯)。 旗帜
字符可以是- 分开,并以任何顺序或组合。 这
字符 '#', 'p''我' 应使行以格式写入
由指定 打印 指定的命令 标志.

要写的行如下:

1. 执行期间写入的所有编辑缓冲区行 ex &, ~, 名单,
, 打开, 打印, s, 视觉z 命令应按规定编写
by 标志.

2.完成后 ex 以标志为参数的命令,
当前行应按照指定的方式写入 标志, 除非当前行
是命令写入的最后一行。

那些角色 '+''-' 导致当前行的值
执行 ex 由偏移地址调整的命令,如中所述
解决 in ex. 此调整应在当前行之前发生
按照上面 2. 中的描述编写。

默认为 标志 将没有。

缓冲 用于保存文本的多个命名区域之一。 指定的命名缓冲区
通过 POSIX 语言环境的字母数字字符。 还会有一个
“未命名”缓冲区。 当没有为使用 a 的编辑器命令指定缓冲区时
缓冲区,应使用未命名的缓冲区。 将文本存储到缓冲区的命令
应存储命令生效前的文本,并应存储
文件中较早出现的文本,然后是文件中较晚出现的文本,
不管文本区域是如何指定的。 将文本存储到的命令
缓冲区应将文本存储到未命名的缓冲区以及任何指定的缓冲区中
缓冲。

In ex 命令,缓冲区名称本身指定为名称。 在开放或
可视模式命令名称前面有双引号 ('"') 字符。

如果指定的缓冲区名称是大写字符,并且缓冲区内容
要修改,缓冲区应附加到而不是
覆盖。 如果缓冲区未被修改,则指定缓冲区名称
小写和大写应具有相同的结果。

还应有以数字 1 到 9 命名的缓冲区。
模式,如果包含多于一行字符的文本区域是
正在被修改 vi c or d 命令,与相关的运动字符
c or d 命令指定缓冲区文本应处于行模式,或
命令 %, `, /, ?, (, ), N, n, {} 用于定义文本区域
c or d 命令,缓冲区 1 到 8 的内容应移动到
由下一个数值更大的值命名的缓冲区,缓冲区 9 的内容
应丢弃,并将文本区域复制到缓冲区 1。这
除了将文本复制到用户指定的缓冲区或未命名的
缓冲区,或两者兼而有之。 可以将数字缓冲区指定为打开的源缓冲区
和视觉模式命令; 但是,指定一个数字缓冲区作为写入
打开或可视模式命令的目标应具有未指定的结果。

每个缓冲区的文本应具有在任一行或
字符模式。 将文本附加到非空缓冲区应将模式设置为匹配
被附加的文本的特征。 将文本附加到缓冲区应
导致在缓冲区中创建至少一个额外的行。 所有文字
存储到缓冲区中 ex 命令应处于行模式。 这 ex 命令
使用缓冲区作为文本源分别指定不同的缓冲区如何
模式处理。 每个使用缓冲区的打开或可视模式命令
目的分别指定存储在缓冲区中的文本的模式和
如何处理不同模式的缓冲区。

文件 用于派生路径名的命令文本。 默认为当前
路径名,如前所述,在这种情况下,如果没有当前路径名
被确定为错误,除非特别说明
各个命令说明如下。 如果命令文本包含任何
的字符 '~', '{', '[', '*', '?, '$', '"', 反引号, 单引号,
和, 它应经受“壳扩展”的过程,
如下所述; 如果结果和命令不止一个路径名
期望只有一个,它应该是一个错误。

编辑器中shell扩展的过程如下。 这 ex
实用程序应将两个参数传递给由 shell 编辑选项命名的程序;
第一个是 -c,第二个应该是字符串 “回声” 和命令
text 作为单个参数。 其标准输出和标准误差
命令应替换命令文本。

! 可以附加到命令名称以修改其操作的字符,如
在单独的命令描述中详细说明。 除了 ex
, ! 命令, '! 字符只能在以下情况下充当修饰符
没有它和命令名称之间的字符。

记得 搜索、 方向
vi 命令 Nn 开始向前或向后搜索
基于记住的搜索方向的编辑缓冲区,最初是
未设置,并由 ex 全球化, v, s行李牌 命令,以及 vi /?
命令。

简称
简介:
AB[简化][h RHS]

If hRHS 没有指定,写下当前的缩写列表,什么都不做
更多。

实现可能会限制接受的字符集 h or RHS,除了
可打印的字符和字符不受限制。 额外的
限制应由实现定义。

同时 hRHS, 任何字符都可以用-V,在这种情况下
字符不得用于分隔 hRHS,以及逃跑-V 应为
丢弃。

在开放和可视化文本输入模式下,如果一个非单词或未转义的字符
由一个-V 字符输入在单词字符后,应检查
匹配的字符集 h, 在此命令期间输入的文本输入中。 如果是
找到了,效果就好像 RHS 被输入而不是 h.

检查的字符集定义如下:

1.如果单词和非单词之前没有插入字符或人物
触发检查的字符集应由单词字符组成。

2.如果在单词前插入的字符和非单词或字符
触发检查的是一个单词字符,字符集应包括
在触发字符之前插入的字符是单词
字符,加上触发字字符。

3.如果在单词前插入的字符和非单词或字符
触发的检查不是单词字符,字符集应包括
在触发字符之前插入的字符既不是
字符或单词字符,加上触发单词字符。

未指明是否 h 输入的参数 ex 简写非缩写
命令以这种方式被替换。 不管更换与否,
该命令的效果应如同未发生替换一样。

电流 线: 不变。

电流 : 不变。

附加
简介:
[1地址] a[挂起][!]

输入 ex 文本输入模式; 输入文本应放在指定行之后。 如果行
零被指定,文本应放置在编辑缓冲区的开头。

该命令受 自动缩进 编辑选项; 继
命令名称与 '! 将导致 自动缩进 要切换的编辑选项设置
仅此命令的持续时间。

电流 线: 设置为最后输入行; 如果没有输入行,则设置为指定的
行,或者到编辑缓冲区的第一行,如果指定了零行,或者零,如果
编辑缓冲区为空。

电流 : 设置为非.

参数
简介:
阿尔[gs]

使用当前参数列表条目(如果有)写入当前参数列表 '['
']' 字符。

电流 线: 不变。

电流 : 不变。

更改
简介:
[2地址] c[焊割][!][]

输入 ex 文本输入模式; 输入文本应替换指定的行。 指定的
行将被复制到未命名的缓冲区中,该缓冲区将成为行模式缓冲区。

该命令受 自动缩进 编辑选项; 继
命令名称与 '! 将导致 自动缩进 要切换的编辑选项设置
仅此命令的持续时间。

电流 线: 设置为最后输入行; 如果没有输入行,则设置为之前的行
第一个地址,如果前面没有行,则到编辑缓冲区的第一行
第一个地址,如果编辑缓冲区为空,则为零。

电流 : 设置为非.

更改 目录
简介:
CHD[ir][!][目录]
cd[!][目录]

将当前工作目录更改为 目录.

如果不 目录 参数被指定,并且 首页 环境变量设置为非
空值和非空值, 目录 应默认为指定的值 首页
环境变量。 如果 首页 环境变量为空或未定义,
默认值 目录 是实现定义的。

如果不 '! 附加到命令名称,并且编辑缓冲区已被修改
最后一次完整写入,并且当前路径名不以 a 开头 '/',应该是
一个错误。

电流 线: 不变。

电流 : 不变。

复制
简介:
[2地址] co[py] 1地址 [标志]
[2地址] t 1地址 [标志]

复制指定目标行后的指定行; 第零行指定
这些行应放置在编辑缓冲区的开头。

电流 线: 设置为复制的最后一行。

电流 : 设置为非.

删除
简介:
[2地址] d[删除][缓冲][][标志]

将指定的行删除到缓冲区中(默认为未命名的缓冲区),该缓冲区应
成为行模式缓冲区。

标志可以紧跟在命令名称之后; 看 命令 Line 解析 in ex.

电流 线: 设置为删除行之后的行,或编辑中的最后一行
buffer 如果该行超过编辑缓冲区的末尾,或者如果编辑缓冲区是零
空的。

电流 : 设置为非.

编辑
简介:
e[DIT][!][+命令][文件]
ex[!][+命令][文件]

如果不 '! 附加到命令名称,并且编辑缓冲区已被修改
最后一次完整的写入,应该是一个错误。

If 文件 指定时,将编辑缓冲区的当前内容替换为当前
的内容 文件, 并将当前路径名设置为 文件。 如果 文件 未指定,替换
编辑缓冲区的当前内容与文件的当前内容由
当前路径名。 如果由于任何原因无法访问文件的当前内容,
编辑缓冲区应为空。

+命令 选项应为- 分隔; 里面的字符 +命令 能够
可以通过在它们前面加上特点。 这 +命令 应该
解释为 ex 命令在编辑缓冲区的内容已经被
已替换并设置当前行和列。

如果编辑缓冲区为空:

电流 线: 设为 0。

电流 : 设为 1。

否则,如果在 ex 命令模式或如果 +命令 参数指定:

电流 线: 设置为编辑缓冲区的最后一行。

电流 : 设置为非.

否则,如果 文件 被省略或导致当前路径名:

电流 线: 设置为编辑缓冲区的第一行。

电流 : 设置为非.

否则,如果 文件 与上次编辑的文件相同,行和列要设置
如下; 如果文件之前被编辑过,则行和列可以设置如下:

电流 线: 设置为上次编辑该文件时保留的最后一个值。 如果这个值是
不是新编辑缓冲区中的有效行,设置为编辑缓冲区的第一行。

电流 : 如果当前行被设置为文件最后保存时的最后一个值
编辑,设置为上次编辑文件时保存的最后一个值。 否则,或者如果
最后一个值不是新编辑缓冲区中的有效列,设置为非.

除此以外:

电流 线: 设置为编辑缓冲区的第一行。

电流 : 设置为非.

文件
简介:
f[小号][文件]

如果一个 文件 指定参数,备用路径名应设置为当前
路径名,当前路径名应设置为 文件.

写一条信息性消息。 如果文件具有当前路径名,则应包括在内
在此消息中; 否则,该消息将指示当前没有路径名。
如果编辑缓冲区包含行,则当前行号和行中的行数
该消息中应包含编辑缓冲区; 否则,消息应表明
编辑缓冲区为空。 如果编辑缓冲区自上次完成以来已被修改
写,这个事实应包含在此消息中。 如果 只读 设置了编辑选项,
这一事实应包含在此消息中。 该消息可能包含其他未指定的
信息。

电流 线: 不变。

电流 : 不变。

全球
简介:
[2地址] g[叶形] /模式/ [命令]
[2地址] v/模式/ [命令]

可选的 '! 之后的字符 全球化 命令应与执行相同 v
命令。

If 模式 为空(例如, “//”) 或未指定,最后使用的正则表达式
在编辑器命令中应用作 模式。 该 模式 可以由
字符(显示在概要中),以及任何非字母数字或非
以外, , , 或双引号。

如果未指定行,则行将默认为整个文件。

全球化v 命令在逻辑上是两遍操作。 首先,标记内的行
不包括终止行的指定行火柴
(全球化) 或不匹配 (v or 全球的!) 指定的模式。 其次,执行 ex
命令由 命令, 与当前行 ('。') 设置为每个标记的行。 如果
在此过程中发生错误,或者编辑缓冲区的内容被替换(对于
例如,由 ex 编辑: 命令)应写入错误消息,不再有命令
执行此命令所产生的结果将被处理。

ex 命令可以通过在一行上输入多个命令来指定
一个分隔它们,或每行一个,通过转义每个与
.

如果没有指定命令:

1.如果在 ex 命令模式,就好像 打印 命令被指定。

2. 否则不执行任何命令。

如报名参加 附加, 更改 命令,输入文本应包含在
命令和终止如果命令结束列表,则可以省略
命令。 这 打开视觉 命令可以指定为命令之一,其中
如果每个标记的行都会使编辑器进入打开或可视模式。 如果打开或
使用 vi Q 命令,当前行应设置为下一个
标记线,并重新进入打开或可视模式,直到标记线列表
累。

全球化, v复原 命令不能用于 命令. 标记的行可能会被删除
通过为文件中比标记行更早出现的行执行的命令。 在
在这种情况下,将不会对已删除的行执行任何命令。

如果未设置记住的搜索方向,则 全球化v 命令应将其设置为
前锋。

自动打印自动缩进 编辑选项应在持续时间内被禁止 g or
v 命令。

电流 线: 如果没有执行任何命令,则设置为最后标记的行。 否则,作为
指定执行 ex 命令。

电流 : 如果没有执行命令,设置为非; 否则,按照规定
对于个人 ex 命令。

插页
简介:
[1地址] i[插入][!]

输入 ex 文本输入模式; 输入文本应放在指定行之前。 如果
line 为零或 1,文本应放置在编辑缓冲区的开头。

该命令受 自动缩进 编辑选项; 继
命令名称与 '! 将导致 自动缩进 要切换的编辑选项设置
仅此命令的持续时间。

电流 线: 设置为最后输入行; 如果没有输入行,则设置为之前的行
指定的行,如果没有行,则到编辑缓冲区的第一行
在指定行之前,如果编辑缓冲区为空,则为零。

电流 : 设置为非.

加入
简介:
[2地址] j[OIN][!][][标志]

If 指定:

如果没有指定地址,则 加入 命令应表现得好像 2地址 是的
当前行和当前行加上 (.,.+ ).

如果指定了一个地址,则 加入 命令应表现得好像 2地址 是的
指定地址和指定地址加 (地址,地址 + ).

如果指定了两个地址,则 加入 命令的行为就像一个额外的
地址,等于最后一个地址加上 -1 (地址1,地址2,地址2 + −1)、
被指定。

如果这会导致第二个地址大于编辑的最后一行
缓冲区,应更正为等于编辑缓冲区的最后一行。

如果不 指定:

如果没有指定地址,则 加入 命令应表现得好像 2地址 是的
当前行和下一行 (.,.+1)。

如果指定了一个地址,则 加入 命令应表现得好像 2地址 是的
指定地址和下一行(地址,地址 + 1)。

将指定行中的文本合并为一行,该行将替换
指定的行。

如果一个 '! 字符附加到命令名称后, 加入 将没有
任何行的修改,与当前语言环境无关。

否则,在 POSIX 语言环境中,将当前行设置为指定行的第一行,
然后,对于每个后续行,执行以下操作:

1.丢弃领先要加入的行中的字符。

2. 如果要连接的行现在是空的,请将其删除,然后跳过步骤 3 到 5。

3.如果当前行以a结尾, 或要连接的行的第一个字符
是一个 ')' 字符,无需进一步修改即可加入行。

4. 如果当前行的最后一个字符是 '。', 加入两条线
他们之间的人物。

5. 否则,用单个连接线它们之间。

电流 线: 设置为指定的第一行。

电流 : 设置为非.

清单
简介:
[2地址] l[][][标志]

该命令等效于 ex 命令:

[2地址] p[RINT][] l[标志]

我们 打印.

地图位置
简介:
地图[!][h RHS]

If hRHS 未指定:

1。 如果 '! 指定,写入当前的文本输入模式映射列表。

2. 否则,写入当前的命令模式映射列表。

3. 什么都不做。

实现可能会限制接受的字符集 h or RHS,除了
可打印的字符和字符不受限制。 额外的
限制应由实现定义。 同时 hRHS, 任何字符都可以
逃脱了-V,在这种情况下,字符不得用于分隔 h
RHS,以及逃跑-V 应丢弃。

如果性格 '! 附加到 地图 命令名,映射生效
在打开或可视文本输入模式而不是 打开 or 视觉 命令模式。 这允许
h 有两个不同的 地图 同时定义:一种用于命令模式,一种用于
用于文本输入模式。

对于命令模式映射:

当。。。的时候 h 作为 a 的任何部分输入 vi 在打开或可视模式下的命令(但不是
作为命令参数的一部分),动作应如同
相应 RHS 已经进入。

如果命令中除第一个字符之外的任何字符使用
-V 字符,该字符不应成为匹配的一部分 h.

未指定实现是否应支持 地图 命令在哪里 h
长度超过单个字符,其中第一个字符 h is
可打印。

If h 包含多个字符,第一个字符是 '#',其次是
与编号功能键对应的数字序列,然后当这个
功能键被输入,它应该被映射到 RHS. 数字以外的字符
跟着 '#' 字符也代表以字符命名的功能键
,在 h'#' 并且可以映射到 RHS. 未指定如何
功能键已命名或支持哪些功能键。

对于文本输入模式映射:

当。。。的时候 h 作为在开放或可视文本输入中输入的文本的任何部分输入
模式,动作应如同相应的 RHS 已经进入。

如果输入文本中的任何字符使用‐V 字符,即
字符不应是匹配的一部分 h.

未指明是否 h 为后续输入的文本 地图 or 取消映射 命令
被替换为 RHS 用于屏幕显示的文本; 不管
显示是否显示为相应的 RHS 输入了文字,
命令的效果如同 h 文本已输入。

如果只是一部分 h 已输入,未指定编辑器将等待多长时间
在将已输入的字符视为之前的其他可能匹配的字符
不匹配 h.

RHS 字符本身应重新映射,除非另有规定
重映射 编辑选项,但如果字符在 h 作为前缀字符出现
RHS,这些字符不得重新映射。

在块模式终端上,映射不需要立即发生(例如,它可能发生
终端向系统发送一组字符后),但应实现
结果与立即发生一样。

电流 线: 不变。

电流 : 不变。

纪念
简介:
[1地址] ma[rk] 字符
[1地址] k 字符

实现应支持 字符 POSIX 的单个小写字母的值
语言环境和反引号和单引号字符; 其他字符的支持是
实现定义。

如果执行 vi m 命令,将指定标记设置为当前行并从 1 开始
当前列引用的编号字符(如果有); 否则,列位置 1。

否则,将指定标记设置为指定行并从 1 开始编号
非非在行中,如果有的话; 否则,最后一个非在里面
线,如果有的话; 否则,列位置 1。

该标记应保持与该行相关联,直到该标记被重置或该行被
删除。 如果删除的行被后续的 复原 命令,之前的任何标记
与未复位的线路相关联的,也应恢复。 任何使用
与编辑缓冲区中的当前行无关的标记应为错误。

标记 `' 应如前所述设置,紧接在以下
事件发生在编辑器中:

1。 指某东西的用途 '$' 作为 ex 地址

2. 使用正十进制数作为 ex 地址

3. 使用搜索命令作为 ex 地址

4. 使用标记引用作为 ex 地址

5.以下打开和可视模式命令的使用: -], %, (, ), [, ], {,
}

6.以下打开和可视模式命令的使用: ', G, H, L, M, z 如果
当前行将因命令而改变

7. open和visual模式命令的使用: /, ?, N, `, n 如果当前行或
列将因命令而改变

8. 使用 ex 模式命令: z, 复原, 全球化, v

对于规则 1.、2.、3. 和 4., `' 如果出现以下情况,则不得设置标记 ex 命令是
按照规则 6.a 的规定进行解析。 在 命令 Line 解析 in ex.

对于规则 5.、6. 和 7., `' 如果命令用作
打开和可视模式下的运动命令。

对于规则 1.、2.、3.、4.、5.、6.、7. 和 8., `' 如果出现以下情况,则不得设置标记
命令失败。

`' 标记应如前所述设置,每次编辑的内容
缓冲区被替换(包括初始缓冲区的编辑),如果在 open 或visual
模式,或者如果在 ex 模式和编辑缓冲区不为空,在任何命令或移动之前
(包括命令或动作指定的 -c or -t 选项或 +命令
参数)在编辑缓冲区上执行。 如果在开放或可视模式下,标记应为
设置为好像执行 vi m 命令; 否则,就像执行 ex 标记 命令。

当从 ex 模式打开或可视模式,如果 `' 标记还没有
设置 `' 标记应如前所述设置。

电流 线: 不变。

电流 : 不变。

移动
简介:
[2地址] m[奥雅纳] 1地址 [标志]

在指定的目标行之后移动指定的行。 零线目的地
指定行应放置在编辑缓冲区的开头。 应该是
如果目标行在要移动的行范围内,则出错。

电流 线: 设置为最后移动的行。

电流 : 设置为非.

下一页
简介:
n[分机][!][+命令][文件 ...]

如果不 '! 附加到命令名称,并且编辑缓冲区已被修改
最后一次完整的写入,应该是错误的,除非文件成功写入为
由指定 自动写入 选项。

如果指定了一个或多个文件:

1. 将参数列表设置为指定的文件名。

2. 将当前参数列表引用设置为参数列表中的第一个条目。

3. 将当前路径名设置为指定的第一个文件名。

除此以外:

1.如果参数列表中没有更多的文件名,则为错误
当前引用的文件名。

2.设置当前路径名和当前参数列表引用后的文件名
参数列表中当前引用的文件名。

将编辑缓冲区的内容替换为当前命名的文件的内容
路径名。 如果由于某种原因无法访问文件的内容,则编辑缓冲区
将是空的。

该命令受 自动写入写任何 编辑选项。

+命令 选项应为- 分隔; 字符可以被转义
在他们前面加上特点。 这 +命令 应被解释为 ex
命令在编辑缓冲区的内容被替换后立即执行,并且
当前行和列已设置。

电流 线: 设置为 编辑 命令。

电流 : 设置为 编辑 命令。

联系电话
简介:
[2地址] nu[MBER][][标志]
[2地址] #[][标志]

这些命令应等同于 ex 命令:

[2地址] p[RINT][] #[标志]

我们 打印.

可选
简介:
[1地址] o[] /模式/ [标志]

该命令不需要在块模式终端或不足的终端上支持
能力。 如果标准输入、标准输出或标准错误不是终端
设备,结果未指定。

进入开放模式。

尾随定界符可以省略 模式 在命令行的末尾。 如果
模式 为空(例如, “//”) 或未指定,中使用的最后一个正则表达式
编辑器应用作模式。 模式可以由
字符(显示在概要中),以及任何字母数字或非以外
, , , 或双引号。

电流 线: 设置到指定行。

电流 : 设置为非.

保存
简介:
预[服务]

将编辑缓冲区保存为以后可以通过使用 -r 选项或通过
使用 ex 恢复 命令。 文件保存后,应发送邮件消息
发送给用户。 该消息应通过调用 mailx的 公用事业。 这
消息应包含文件名、保存时间和 ex 命令
可用于恢复文件。 邮件中可能包含其他信息
信息。

电流 线: 不变。

电流 : 不变。

打印
简介:
[2地址] p[RINT][][标志]

写出地址行。 如果列数在
display 少于在其中写入任何单个字符所需的列数
正在写的行。

不可打印的字符,除了, 应写为实现定义
多字符序列。

如果 # 标志被指定或 设置编辑选项,每行应在前面
按以下格式的行号:

"%6d ", <线 >

如果 l 标志被指定或 名单 编辑选项设置:

1. POSIX.1-2008 Base Definitions卷中列出的字符, 5-1,
逃生 序列 关联的 行动 应写为相应的转义
序列。

2. 不在 POSIX.1-2008 基本定义卷中的不可打印字符,
5-1, 逃生 序列 关联的 行动 应写成一个三位数的八进制
数字(带有前面的) 对于字符中的每个字节(最重要的
字节优先)。

3. 每行末尾应标有 '$', 和字面意思 '$' 里面的字符
行应在前面写.

长线要折叠; 折叠发生的长度未指定,但应该
考虑到终端的列数,适合输出终端。

如果一条线被折叠,并且 l 未指定标志并且 名单 未设置编辑选项,
未指定折叠位置的多列字符是否分开;
它不会被丢弃。

电流 线: 设置为最后写入的行。

电流 : 当前行不变则不变; 否则,设置为非.


简介:
[1地址] pu[t][缓冲]

将指定缓冲区(默认情况下,未命名缓冲区)中的文本附加到指定的
线; 第零行指定文本应放在编辑的开头
缓冲。 缓冲区中一行的每一部分都将成为编辑缓冲区中的一个新行,
无论缓冲区的模式如何。

电流 线: 设置为进入编辑缓冲区的最后一行。

电流 : 设置为非.

退出
简介:
q[UIT][!]

如果不 '! 附加到命令名称:

1. 如果编辑缓冲区自上次完整写入以来已被修改,则应为
错误。

2. 如果参数列表中当前引用的文件名后面有文件名,
并且最后一个命令不是 退出, wq, XITZZ (见 Exit 退出) 命令,它应该是一个
错误。

否则,终止编辑会话。

阅读
简介:
[1地址] r[EAD][!][文件]

If '! 不是第一个非跟随命令名,指定的副本
文件应附加到指定行之后的编辑缓冲区中; 零行指定
副本应放置在编辑缓冲区的开头。 行数和
应写入读取的字节。 如果不 文件 被命名,当前路径名应为
默认。 如果没有当前路径名,则 文件 应成为当前路径名。 如果
没有当前路径名或 文件 操作数,它应该是一个错误。 指定一个 文件
不是常规类型应有未指定的结果。

否则,如果 文件 在前面 '!, 行之后的其余部分 '! 应该有 '%',
'#''! 字符扩展如中所述 命令 Line 解析 in ex.

ex 实用程序然后将两个参数传递给由 shell 编辑命名的程序
选项; 第一个是 -c 第二个是扩展的参数
命令作为单个参数。 程序的标准输入应设置为
标准输入 ex 程序被调用时。 标准误和标准
程序的输出应附加到指定行之后的编辑缓冲区中。

复制的文件或程序输出中的每一行(由字符或
文件或输出的结尾,如果它前面没有紧跟), 应该
编辑缓冲区中的单独一行。 任何出现和
输出中的对应视为单个人物。

的特殊含义 '! 命令可以通过转义覆盖
它与特点。

电流 线: 如果没有行添加到编辑缓冲区,则不变。 否则,如果在打开
或可视模式,设置为进入编辑缓冲区的第一行。 否则,设置为
最后一行进入编辑缓冲区。

电流 : 设置为非.

恢复
简介:
记录[超过][!] 文件

如果不 '! 附加到命令名称,并且编辑缓冲区已被修改
最后一次完整的写入,应该是一个错误。

如果不 文件 指定操作数,则应使用当前路径名。 如果没有
当前路径名或 文件 操作数,它应该是一个错误。

如果之前没有保存任何恢复信息 文件是, 恢复 命令应
行为与 编辑 命令,以及有关此效果的信息性消息应
被写。

否则,将当前路径名设置为 文件, 并替换当前编辑内容
具有恢复内容的缓冲区 文件. 如果文件有多个实例
要恢复,应恢复最近保存的一个,并显示一个信息
有可以恢复的文件的先前版本的消息应为
书面。 编辑器的行为就像编辑缓冲区的内容已经被
修改的。

电流 文件: 设置为 编辑 命令。

电流 : 设置为 编辑 命令。

倒带
简介:
重新[工业][!]

如果不 '! 附加到命令名称,并且编辑缓冲区已被修改
最后一次完整的写入,应该是错误的,除非文件成功写入为
由指定 自动写入 选项。

如果参数列表为空,则为错误。

当前参数列表引用和当前路径名应设置为第一个
参数列表中的文件名。

将编辑缓冲区的内容替换为当前命名的文件的内容
路径名。 如果由于某种原因无法访问文件的内容,则编辑缓冲区
将是空的。

该命令受 自动写入写任何 编辑选项。

电流 线: 设置为 编辑 命令。

电流 : 设置为 编辑 命令。


简介:
瑟[t][选项[=[折扣值]] ...][没有选项 ...][选项? ...][所有]

当没有指定参数时,写入的值 术语 编辑选项和那些选项
其值已从默认设置更改; 当论证 所有 is
指定,写入所有选项值。

给出一个选项名称后跟字符 '? 将导致当前值
要写入的选项。 这 '? 可以通过零个或多个与选项名称分开
人物。 这 '? 仅对布尔值选项是必要的。 布尔值
选项可以通过表单给定值 选项 打开它们或 没有选项
他们关闭; 字符串和数字选项可以通过表单分配 选项=折扣值。 任何
字符串中的字符可以按原样包含在每个字符之前与
逃跑. 一个 set 命令可以设置或列出多个选项
通过指定多个参数,每个参数与下一个参数分隔一个或多个
字符。

我们 编辑 附加选项 in ex 有关特定选项的详细信息。

电流 线: 不变。

电流 : 不变。


简介:
嘘[ELL]

调用指定的程序 带有单个参数的编辑选项 -i (交互的
模式)。 程序退出时应恢复编辑。

电流 线: 不变。

电流 : 不变。

来源
简介:
所以[urcan到] 文件

读取并执行 ex 命令来自 文件. 文件中为空行的行应为
忽略了。

电流 线: 为个人指定 ex 命令。

电流 : 为个人指定 ex 命令。

替代
简介:
[2地址] s[优品][/模式/代表/[选项][][标志]]
[2地址] &[选项][][标志]]
[2地址] ~[选项][][标志]]

替换模式的第一个实例 模式 按字符串 代表 在每个指定的
线。 (看 原价 表达式 in ex更换 琴弦 in ex.) 任何非字母,
非分隔符除了, '|', , 或者可以使用双引号
而不是 '/'. 字符可用于转义分隔符,
字符和其他特殊字符。

尾随定界符可以省略 模式代表 在命令的末尾
线。 如果两者 模式代表 未指定或为空(例如, “//”),则
最后 s 命令将被重复。 要是 模式 未指定或为空,最后一个
编辑器中使用的正则表达式应用作模式。 要是 代表 是不是
指定或为空,模式将被替换为空。 如果整个
替换模式是 '%',最后一个替换模式到 s 应使用命令。

输入一个在 代表 (这需要转义在 ex 模式
和逃跑-V 开路或 vi 模式)应在该点分割线,
在编辑缓冲区中创建一个新行。 这将被丢弃。

If 选项 包括信 'G' (全球化),模式的所有非重叠实例
行中应更换。

If 选项 包括信 'c' (确认),然后在每次替换之前,该行应
被写入; 书面线应反映所有先前的替换。 在以下
线, 字符应写在行中的字符下方
模式 被替换,并且 '^' 写在字符下面的字符
包括在内 模式 将被替代。 这 ex 实用程序然后应等待来自
用户。 一个肯定的回应将导致进行替换,而任何其他
输入不得进行替换。 肯定的答复应包括一行
以肯定的响应(由当前语言环境定义)在开始
线。 此行应以与编辑相同的方式进行编辑 ex 命令行。

如果中断(请参阅异步事件部分),则由
中断后用户应保存在编辑缓冲区中。

如果未设置记住的搜索方向,则 s 命令应将其设置为转发。

在第二个概要中, & 命令将重复之前的替换,就好像 &
命令被替换为:

s/模式/代表/

哪里 模式代表 是在前面指定的 s, &~ 命令。

在第三个概要中, ~ 命令将重复之前的替换,就好像 '~'
被替换为:

s/模式/代表/

哪里 模式 应是指定给编辑器的最后一个正则表达式,并且 代表
来自之前的替换(包括 &~) 命令。

这些命令应受 LC_消息 环境变量。

电流 线: 设置为发生替换的最后一行,如果没有,则保持不变
发生了替代。

电流 : 设置为非.

暂停
简介:
苏[][!]
st[op][!]

允许控制返回到调用过程; ex 应该暂停自己,好像它已经
收到 SIGTSTP 信号。 只有在启用作业控制时才会发生暂停
调用外壳(见描述 -m).

这些命令应受 自动写入写任何 编辑选项。

目前的 停赛 字符(见 姿势) 应等价于 暂停 命令。

标签
简介:
塔[g][!] 标签串

如果标签文件的格式不是由 标签
实用程序(见 标签) 描述。

行李牌 命令应搜索 标签串 在引用的标签文件中 行李牌 编辑
选项,按照它们指定的顺序,直到引用 标签串 被发现。 文件
应从头到尾进行搜索。 如果没有找到引用,应该是一个错误
并应写入与此相关的错误消息。 如果未找到引用,或者
处理中引用的文件时发生错误 行李牌 编辑选项,它应该是一个
错误,并应在第一次出现此类错误时写入错误消息。

否则,如果标签文件包含模式,则该模式应被视为常规
编辑器中使用的表达式; 例如,为了 s 命令。

如果 标签串 在与当前路径名不同的文件中,设置
当前路径名到该文件的名称,并替换编辑缓冲区的内容
与该文件的内容。 在这种情况下,如果没有 '! 附加到命令名称,
并且自上次完整写入以来编辑缓冲区已被修改,则应为错误,
除非文件按照指定的方式成功写入 自动写入 选项。

该命令受 自动写入, 行李牌, 标签长度写任何 编辑
选项​​。

电流 线: 如果标签文件包含行号,则设置为该行号。 如果
行号大于编辑缓冲区中的最后一行,将出现错误消息
写入,当前行应设置为指定的 编辑 命令。

如果标签文件包含模式,则设置为该模式在
文件。 如果找不到匹配的模式,则应写入错误消息并显示当前
线应按规定设置 编辑 命令。

电流 : 如果标签文件包含行号引用和该行号
不大于编辑缓冲区中的最后一行,或者如果标签文件包含
模式并找到该模式,设置为非. 否则,设置为指定
编辑 命令。

非缩写
简介:
没有[缩写] h

If h 不是当前缩写列表中的条目(请参阅 简称),应为
一个错误。 否则,删除 h 从缩写列表中。

电流 线: 不变。

电流 : 不变。

解开
简介:
u[n可]

撤消上一个修改编辑内容的命令所做的更改
缓冲,包括 复原。 为此, 全球化, v, 打开视觉 命令,和
由缓冲区执行和映射字符扩展产生的命令被考虑
单个命令。

如果在此之前没有可以撤消的操作 复原 命令,它应该是一个错误。

如果 复原 命令恢复被标记的行,标记也应被恢复
除非它在删除行之后被重置。

电流 线:

1. 如果在文件中添加或更改了行,则设置为添加或更改的第一行。

2. 设置为删除的第一行之前的行(如果存在)。

3. 如果编辑缓冲区不为空,则设置为 1。

4. 设置为零。

电流 : 设置为非.

取消映射
简介:
联合国[ap][!] h

If '! 附加到命令名称,如果 h 不是文本列表中的条目
输入模式映射定义,它应该是一个错误。 否则,删除 h 从清单中
文本输入模式映射定义。

如果不 '! 附加到命令名称,如果 h 不是列表中的条目
命令模式映射定义,它应该是一个错误。 否则,删除 h 从清单中
命令模式映射定义。

电流 线: 不变。

电流 : 不变。

版本
简介:
我[扭转]

编写包含编辑器版本信息的消息。 消息的格式
未指定。

电流 线: 不变。

电流 : 不变。

视觉
简介:
[1地址] vi[同性][类型][][标志]

If ex 当前处于打开或可视模式,可视命令的概要和行为
应与 编辑 命令,由指定的 编辑.

否则,该命令不需要在块模式终端或带有
能力不足。 如果标准输入、标准输出或标准错误不是
终端设备,结果未指定。

If 被指定,值 窗口 编辑选项应设置为 (如
描述于 窗口)。 如果 '^' 还指定了类型字符, 窗口 编辑
选项应在被类型字符使用之前设置。

进入视觉模式。 如果 类型 没有指定,就好像一个 类型 of '+'
指定的。 这 类型 会造成以下影响:

+ 将指定行的开头放置在显示的顶部。

- 将指定行的末尾放置在显示的底部。

. 将指定行的开头放置在显示的中间。

^ 如果指定行小于或等于 窗口 编辑选项,
将行设置为 1; 否则,将行减少 窗口 编辑
选项减 1. 将此行的开头放置在靠近底部的位置
尽可能显示行,同时仍然显示 窗口 编辑
选项行数。

电流 线: 设置到指定行。

电流 : 设置为非.

填写
简介:
[2地址] w[仪式][!][>>][文件]
[2地址] w[仪式][!][文件]
[2地址] wq[!][>>][文件]

如果未指定行,则行将默认为整个文件。

命令 wq 应相当于 命令后跟 退出 命令; 哇!
应等于 写! 其次是 退出. 在这两种情况下,如果 命令
失败了 退出 不得尝试。

如果命令名后面没有一个或多个字符,或 文件 是不是
前面有一个 '! 性格, 应该是一个文件。

1。 如果 >> 参数被指定,并且文件已经存在,行应该是
附加到文件而不是替换其内容。 如果 >> 论点是
指定,且文件不存在,未指定是否写入
将继续进行,好像 >> 未指定参数或写入失败。

2。 如果 只读 已设置编辑选项(请参阅 只读),则 将失败。

3。 如果 文件 被指定,并且不是当前路径名,并且文件存在,
将失败。

4。 如果 文件 未指定,应使用当前路径名。 如果没有电流
路径名 命令将失败。

5. 如果使用当前路径名,并且当前路径名已被修改 文件
or 命令,并且文件存在, 将失败。 如果 is
成功,后续 s 不应因此而失败(除非当前
路径名再次更改)。

6. 如果整个编辑缓冲区没有被写入,并且要写入的文件存在,则
将失败。

对于规则 1.、2.、3. 和 5., 可以通过附加字符来强制 '!
命令名称。

对于规则 2.、3. 和 5., 可以通过设置强制 写任何 编辑选项。

另外,实现定义的测试可能会导致 失败。

如果编辑缓冲区为空,则写入一个没有任何内容的文件。

应写入信息性消息,注明写入的行数和字节数。

否则,如果命令后跟一个或多个字符,文件是
之前 '!, 行之后的其余部分 '! 应该有 '%', '#''!
字符扩展如中所述 命令 Line 解析 in ex.

ex 实用程序然后将两个参数传递给由 编辑
选项; 第一个是 -c 第二个是扩展的参数
命令作为单个参数。 指定的行应写入标准输入
命令的。 程序的标准错误和标准输出,如果有的话,应该是
如所描述的那样写 打印 命令。 如果该输出中的最后一个字符不是
, 一个应写在输出的末尾。

的特殊含义 '! 命令可以通过转义覆盖
它与特点。

电流 线: 不变。

电流 : 不变。

填写 Exit 退出
简介:
[2地址] x[it][!][文件]

如果编辑缓冲区自上次完成后没有被修改 , XIT 应该
相当于 退出 命令,或者如果 '! 附加到命令名称,以 退出!.

除此以外, XIT 应等于 wq 命令,或者如果 '! 附加到
命令名称,到 哇!.

电流 线: 不变。

电流 : 不变。

猛拉
简介:
[2地址] ya[nk][缓冲][]

将指定的行复制到指定的缓冲区(默认为未命名缓冲区),其中
应成为行模式缓冲区。

电流 线: 不变。

电流 : 不变。

调整 窗口
简介:
[1地址] z[!][类型 ...][][标志]

如果没有指定行,则当前行为默认行; 如果 类型 省略为
那么,当前行值应首先增加 1。如果增加当前行
行会导致它大于编辑缓冲区中的最后一行,它应该是一个
错误。

如果有之间的字符 类型 论点和前面的 z 命令名
或可选 '! 字符,它应该是一个错误。

If 被指定,值 窗口 编辑选项应设置为 (如
描述于 窗口)。 如果 省略,默认为 2 倍
滚动 编辑选项,或者如果 ! 指定时,显示中的行数减 1。

If 类型 被省略,那么 应写入以指定行开头的行。
除此以外, 从指定的行开始的行 类型 论点应为
书面。

类型 参数应更改要写入的行。 可能的值 类型 就像
如下:

- 指定的行应减少以下值:

(((数字 of ``-'' 字符) x ) -1)

如果计算结果小于 1,则为错误。 写
编辑缓冲区中的行,从行的新值开始,直到 线或
编辑缓冲区中的最后一行已写入。

+ 指定的行应增加以下值:

(((数字 of ``+'' 字符) −1) x )+1

如果计算会导致数字大于编辑中的最后一行
缓冲区,它应该是一个错误。 从编辑缓冲区写入行,从新的开始
线的值,直到 行或编辑缓冲区中的最后一行已
书面。

=,。 如果不止一个 '。' or '=' 被指定,它应该是一个错误。 下列
应采取以下步骤:

1。 如果 为零,则不应写入任何内容。

2. 尽量多写 N 编辑缓冲区中当前行之前的行作为
存在。 如果 or '! 被指定, N 应该:

( −1) /2

除此以外, N 应该:

( −3) /2

If N 是一个小于 3 的数字,不应该写任何行。

3。 如果 '=' 被指定为类型字符,写一行由
显示中列数除以 40 或 XNUMX 中的较小者 '-'
字符。

4. 写入当前行。

5. 重复步骤 3。

6. 尽量多写 N 编辑缓冲区中当前行之后的行作为存在。
N 应在步骤 2 中定义。如果 N 是一个小于 3 的数字,不应有任何行
书面。 如果 小于3,不写行。

^ 指定行应递减以下值:

(((数字 of ``^'' 字符) + 1) x ) -1

如果计算结果小于 1,则为错误。 写
编辑缓冲区中的行,从行的新值开始,直到 线或
编辑缓冲区中的最后一行已写入。

电流 线: 设置为最后一行写入,除非类型为 =,在这种情况下,设置为
指定的行。

电流 : 设置为非.

逃生
简介:
! 命令
[地址]! 命令

行后的内容 '! 应该有 '%', '#''! 字符扩展
如中所述 命令 Line 解析 in ex. 如果扩展导致行的文本
改变,它应重新显示,前面是一个 '! 字符。

ex 实用程序应执行由 编辑选项。 它将通过两个
程序的参数; 第一个是 -c,第二个应该是扩展的
的论据 ! 命令作为单个参数。

如果没有指定行,则标准输入、标准输出和标准错误
程序应设置为标准输入、标准输出和标准错误 ex
程序被调用时。 此外,如果编辑,应写入警告消息
自上次完整写入以来缓冲区已被修改,并且 警告 编辑选项已设置。

如果指定了行,它们应作为标准输入传递给程序,并且
程序的标准输出和标准错误应替换编辑中的那些行
缓冲。 程序输出中的每一行(由字符或结尾
如果没有紧跟在输出的前面), 应为单独的一行
在编辑缓冲区中。 任何出现和输出中的对
应视为单身人物。 指定的行应复制到
替换之前的未命名缓冲区,并且未命名缓冲区应成为行-
模式缓冲区。

如果在 ex 模式,单 '! 程序完成时写入字符。

该命令受 警告 编辑选项。 如果没有线
指定,此命令应受 自动写入写任何 编辑选项。 如果
指定行,此命令应受 自动打印 编辑选项。

电流 线:

1. 如果没有指定行,则不变。

2. 否则,如果有任何行被读入,则设置为读入的最后一行。

3. 否则,设置为指定行的第一行之前的行,如果该行
存在。

4. 否则,如果编辑缓冲区不为空,则设置为编辑缓冲区的第一行。

5. 否则,设置为零。

电流 : 如果没有指定行,则不变。 否则,设置为非.

转移
简介:
[2地址] <[<...][][标志]

将指定的行移到行首; 要设置的列位置数
shift 应为命令字符数乘以 移位宽度 编辑
选项。 只有领先字符应删除或更改为其他
字符在移动; 其他字符不受影响。

要移动的行应复制到未命名的缓冲区中,该缓冲区应成为行-
模式缓冲区。

该命令受 自动打印 编辑选项。

电流 线: 设置为指定行中的最后一行。

电流 : 设置为非.

转移
简介:
[2地址] >[> ......][][标志]

将指定的行从行首移开; 列位置数
要移位的命令字符数乘以 移位宽度
编辑选项。 转移应通过添加来完成字符作为前缀
线或改变领先字符变成其他人物。 空行
不得更改。

要移动的行应复制到未命名的缓冲区中,该缓冲区应成为行-
模式缓冲区。

该命令受 自动打印 编辑选项。

电流 线: 设置为指定行中的最后一行。

电流 : 设置为非.

-D
简介:
-D

写下 n 线,其中 n 是最小值的 滚动 编辑选项和
编辑缓冲区中当前行之后的行数。 如果当前行是
编辑缓冲区的最后一行应该是一个错误。

电流 线: 设置为最后一行写入。

电流 : 设置为非.

填写 Line 联系电话
简介:
[1地址] = [标志]

If 线 未指定,默认为编辑缓冲区的最后一行。 写下
指定行的行号。

电流 线: 不变。

电流 : 不变。

执行
简介:
[2地址] @ 缓冲
[2地址] * 缓冲

如果没有指定缓冲区或指定为 '@' or '*',最后执行的缓冲区应为
用过的。 如果之前的缓冲区没有被执行过,它应该是一个错误。

对于地址指定的每一行,设置当前行('。') 到指定的
行,并执行命名的内容 缓冲 (因为他们当时 @ 命令
被执行)作为 ex 命令。 对于行模式缓冲区的每一行,以及除最后一行之外的所有行
字符模式缓冲区的行, ex 命令解析器的行为就像该行是
终止于.

如果在此过程中发生错误,或者地址指定的行没有
当当前行设置为它时存在,或者指定了多于一行
由地址,并且编辑缓冲区的内容被替换(例如,由 ex
编辑: 命令) 应写入错误消息,并且不会产生更多命令
应处理该命令的执行。

电流 线: 为个人指定 ex 命令。

电流 : 为个人指定 ex 命令。

原价 表达式 in ex
ex 实用程序应支持作为基本正则超集的正则表达式
POSIX.1-2008 的基本定义卷中描述的表达式, 部分 9.3, 基础
原价 表达式. 空正则表达式 (“//”) 应等于最后一个
遇到正则表达式。

可以在地址中使用正则表达式来指定行,并且在某些命令中(例如
例如, 替代 命令),指定要替换的行的部分。

以下构造可用于增强基本正则表达式:

\< 匹配a的开头 . (见定义 在开始
命令 描述 in ex.)

\> 匹配a的结尾 .

~ 匹配上一个的替换部分 替代 命令。 这('~')
字符可以在正则表达式中转义为普通字符
没有特别的意义。 这将被丢弃。

当编辑器选项 魔法 未设置,只有具有特殊含义的字符
be '^' 在模式的开头, '$' 在模式的末尾,以及. 这
字符 '。', '*', '[''~' 应被视为普通字符,除非在前面
由一个; 当前面有一个他们将重新获得特殊的意义,
或者在这种情况下, 作为单个处理. 人物
用于转义其他字符的应丢弃。

更换 琴弦 in ex
性格 '&' ('\&' 如果编辑器选项 魔法 未设置)在替换字符串中
应代表与要替换的模式匹配的文本。 人物 '~' ('\~' if
魔法 未设置)应替换为之前的替换部分 替代
命令。 序列 '\n',其中 n 是一个整数,应替换为匹配的文本
通过相应的反向引用表达式。 如果对应的反向引用
表达式不匹配,则字符 '\n' 应替换为空字符串。

字符串 '\l', '\u', '\L''\U' 可用于修改元素的大小写
替换字符串(使用 '\&' or “\”数字)符号。 字符串 '\l' ('\u') 将
导致后面的字符被转换为小写(大写)。 字符串 '\L'
('\U') 将导致其后的所有字符转换为小写
(大写)因为它们被替换插入直到字符串 '\e' or '\E',或
遇到替换字符串的结尾。

否则,后面的任何字符应被视为文字
性格和逃跑将被丢弃。

大小写转换的示例 s 命令如下:

:p
周六 on 垫。
:s/\<.at\>/\u&/gp
周六 on 垫。
:s/S\(.*\)M/S\U\1\eM/p
SAT ON 垫。

编辑 附加选项 in ex
ex 实用程序有许多修改其行为的选项。 这些选项有
默认设置,可以使用 命令。

除非另有说明,否则选项都是布尔值。

自动缩进, ai
[默认 未设定]

If 自动缩进 设置后,输入模式下的每一行都应缩进(使用第一个尽可能多的
尽可能多的字符,由编辑器选项决定 制表位,然后使用
字符)以与另一行对齐,如下所示:

1. 如果处于打开或可视模式并且文本输入是面向行的命令的一部分(请参阅
中的扩展描述 vi),对齐到第一列。

2. 否则,如果在打开或可视模式下,每行的缩进应设置为
如下:

一个。 如果先前作为此命令的一部分插入了一行,则应将其设置为
默认情况下最后插入的行的缩进,或以其他方式指定
这-D 字符在 输入 时尚 命令 in vi.

湾否则,应设置为前一行的缩进,如果
任何; 否则,到第一列。

3。 为了 ex a, ic 命令,每行的缩进应设置如下:

一个。 如果先前作为此命令的一部分插入了一行,则应将其设置为
默认情况下最后插入的行的缩进,或以其他方式指定
EOF 字符 滑动.

湾否则,如果命令是 ex a 命令,它应设置为行
附加在之后,如果有的话; 否则到第一列。

C。 否则,如果命令是 ex i 命令,它应设置为行
之前插入,如果有的话; 否则到第一列。

d. 否则,如果命令是 ex c 命令,它应设置为缩进
行的替换。

自动打印, ap
[默认 ]

If 自动打印 设置,当前行应写在每个 ex 修改命令
当前编辑缓冲区的内容,以及每个 行李牌 标签的命令
找到搜索模式或标记行号有效,除非:

1. 命令是在打开或可视模式下执行的。

2. 该命令是作为 a 的一部分执行的 全球化 or v 命令或 @ 缓冲执行。

3.命令的形式 将文件读入编辑缓冲区的命令。

4. 命令是 附加, 更改 命令。

5. 命令没有被终止.

6. 当前行应由命令指定的标志写入; 例如,
删除 # 应将标志修饰符指定的当前行写入 删除
命令,而不是由 自动打印 编辑选项。

自动写入, aw
[默认 未设定]

If 自动写入 已设置,并且编辑缓冲区自上次完全修改后已被修改
写入任何文件,编辑缓冲区的内容将被写入,就好像 ex
在受影响的每个命令之前,已不带参数指定命令
自动写入 执行编辑选项。 附加字符 '! 到任何命令名称
ex 命令除外 '! 应防止写入。 如果写入失败,它将是一个
错误,命令将不被执行。

美化, bf
[默认 未设定]

If 美化 设置,所有不可打印的字符,除了, , 和
feed> 字符,应从从文件读入的文本中丢弃。

目录, DIR
[默认 实现定义]

此选项的值指定编辑器缓冲区所在的目录
放置。 如果该目录不是用户可写的,编辑器将退出。

兼容, ed
[默认 未设定]

导致存在 gc 要记住的替代命令的后缀,以及
通过重复后缀来切换。

错误铃, eb
[默认 未设定]

如果编辑器在 ex 模式,且终端不支持突出模式(如
反视频),和 错误铃 设置,错误消息之前应警告
终奌站。

导出
[默认 未设定]

If 导出 设置, ex 应访问任何 .exrc文件 当前目录中的文件,如
初始化 in ex vi。 如果 导出 没有设置, ex 应忽略任何 .exrc文件 文件中
初始化期间的当前目录,除非当前目录是由
首页 环境变量。

忽略大小写, ic
[默认 未设定]

If 忽略大小写 设置,具有大写和小写表示的字符应
出于正则表达式的目的,将这些表示视为等效
比较。

忽略大小写 编辑选项应影响所有记住的正则表达式; 例如,
取消设置 忽略大小写 编辑选项将导致后续 vi n 搜索命令
区分大小写的最后一个基本正则表达式。

名单
[默认 未设定]

If 名单 已设置,编辑写入时写入的缓冲区行 ex 命令模式应写为
指定为 打印 用命令 l 指定的标志。 在开放或可视模式下,每个
编辑缓冲行应按照指定的方式显示 ex 打印 用命令 l
指定的。 在打开或可视文本输入模式下,当光标不停留在任何
行中的字符,它应位于 '$' 标记行的结束。

魔法
[默认 ]

If 魔法 设置,修改正则表达式中字符的解释和
替换替换字符串(见 原价 表达式 in ex更换 琴弦 in
ex).

MESG
[默认 ]

If MESG 设置,允许其他人使用 or 要写入的命令
终端应在打开或可视模式下打开。 shell级命令 MESG
n 应优先于任何设置 ex MESG 选项; 也就是说,如果 MESG y
在编辑器启动之前(或在 shell 转义中)发出,例如:

:! 消息 y

MESG 选项 ex 应抑制传入的消息,但 MESG 选项不得
启用传入消息,如果 MESG n 发出。

数, nu
[默认 未设定]

If 已设置,编辑写入时写入的缓冲区行 ex 命令模式应写为
行号,以指定的格式 打印 用命令 # 指定的标志。 在
ex 文本输入模式,每一行前面都应该有它在文本中的行号
文件中。

在打开或可视模式下,每个编辑缓冲区行应显示前一行
编号,采用指定的格式 ex 打印 用命令 # 指定的标志。 这
出于评估目的,行号不应被视为行的一部分
当前列; 也就是说,列位置 1 应为后的第一个列位置
指定的格式 打印 命令。

段落,
[POSIX 语言环境中的默认值 IPLPPPQPP Lipplpipbp]

段落 编辑选项应为打开和
视觉模式命令。 这 段落 编辑选项可以设置为字符串
由零个或多个字符对组成。 将其设置为奇数应该是错误的
字符数。

提示
[默认 ]

If 提示 设置, ex 命令模式输入应提示(':'); 什么时候
未设置,不写提示。

只读
[默认 看到 文本]

如果 只读 设置了编辑选项,应启用只读模式(请参阅 填写)。 该
只读 如果满足以下任一条件,则应将编辑选项初始化为设置
真正:

* 指定了命令行选项 -R。

* 执行相当于 ACCESS() 函数调用如下
参数表明文件没有写权限:

1. 当前路径名用作 论据。

2. 常数 W_OK 用作 模式 论据。

只读 编辑选项可以被初始化为其他的,实现定义的
原因。 这 只读 不应基于任何特殊情况将编辑选项初始化为未设置
用户或进程的权限。 这 只读 编辑选项应重新初始化每个
编辑缓冲区的内容被替换的时间(例如,被一个 编辑 or 下页
命令)除非用户明确设置它,在这种情况下,它应保持设置直到
用户明确取消它。 一旦取消设置,每次都应重新初始化
编辑缓冲区的内容被替换。

重绘
[默认 未设定]

编辑器在哑终端上模拟智能终端。 (因为这很可能
需要大量输出到终端,只有在高传输时才有用
速度。)

重映射
[默认 ]

If 重映射 设置,地图翻译应允许根据其他地图定义的地图;
翻译应持续到获得最终产品为止。 如果未设置,只需一步
应进行翻译。

报告
[默认 5]

这个的价值 报告 编辑选项指定要添加、复制的行数,
在编辑缓冲区中删除或修改将导致写入信息性消息
给用户。 以下情况将导致信息性消息。 消息
应包含添加、复制、删除或修改的行数,但除此之外
未指定。

*一个 ex or vi 编辑器命令,除了 打开, 复原视觉, 至少修改
的价值 报告 编辑选项的行数,并且不属于 ex
全球化 or v 命令,或 ex or vi 缓冲区执行,将导致信息
要写的消息。

*一个 ex 猛拉 or vi y or Y 命令,它至少复制了 报告 编辑
选项加​​ 1 行,并且不属于 ex 全球化 or v 命令,或
ex or vi 缓冲区执行,将导致写入信息性消息。

*一个 ex 全球化, v, 打开, 复原视觉 命令或 ex or vi 缓冲区执行,这增加了
或删除总计至少 报告 编辑选项行数,
并且不属于 ex 全球化 or v 命令,或 ex or vi 缓冲执行,
将导致写入信息性消息。 (例如,如果 3 行是
添加并删除了 8 行 ex 视觉 命令,5 将是比较的数字
报告 命令完成后编辑选项。)

滚动, SCR
[默认(显示行数-1)/2]

的值 滚动 编辑选项应确定滚动的行数 ex
-D 和 z 命令。 为了 vi -D 和-U 命令,它应该是
没有前一个时滚动的初始行数-D 或-U 命令
已被处决。

部分
[POSIX 语言环境 NHSHH HUnhsh 中的默认值]

部分 编辑选项应为开放和
视觉模式命令。 这 部分 编辑选项可以设置为一个字符串组成
零个或多个字符对; 将其设置为奇数将是错误的
字符。

贝壳, sh
[默认来自环境变量 SHELL]

此选项的值应为字符串。 默认值取自 SHELL
环境变量。 如果 SHELL 环境变量为空或空, sh (见 sh)
实用程序应为默认值。

移位宽度, sw
[默认 8]

此选项的值应给出使用的缩进级别的列宽
在自动缩进期间和通过移位命令(<>).

表演赛, sm
[默认 未设定]

描述的功能 表演比赛 块上不需要支持编辑选项-
模式终端或能力不足的终端。

If 表演比赛 在打开或可视模式下设置,当 ')' or '}' 被输入,如果匹配
'(' or '{' 当前在显示屏上可见,匹配 '(' or '{' 将被标记
将光标移动到其位置一段未指定的时间。

表演模式
[默认 未设定]

If 表演模式 设置,在打开或可视模式下,编辑器所处的当前模式应
显示在显示屏的最后一行。 命令模式和文本输入模式应为
差异化; 其他未指定的模式和实现定义的信息可能是
显示。

慢开
[默认 未设定]

If 慢开 在打开和可视文本输入模式下设置,编辑器不应更新
显示字符的显示行列以外的部分
由用户输入(见 输入 时尚 命令 in vi).

制表位, ts
[默认 8]

此编辑选项的值应指定一个使用的列边界在里面
显示(见 自动打印, ap输入 时尚 命令 in vi).

标签长度, tl
[默认零]

此编辑选项的值应指定最大字符数
在用户指定的标签名称和来自标签的标签名称中被认为是重要的
文件。 如果该值为零,则两个标签名称中的所有字符都应有效。

标签
[默认 看到 文本]

此编辑选项的值应为一串- 分隔的文件路径名
行李牌 命令。 默认值未指定。

术语
[默认来自环境变量 学期]

此编辑选项的值应为字符串。 默认值取自 学期
环境中的变量。 如果 学期 环境变量为空或空,
默认未指定。 编辑器应使用此编辑选项的值来确定
显示设备的类型。

如果用户在之后更改术语编辑选项的值,则结果未指定
编辑器初始化。

简洁
[默认 未设定]

If 简洁 设置,错误消息可能不那么冗长。 然而,除了这个警告,
错误消息未指定。 此外,并非所有错误消息都需要更改
此选项的不同设置。

警告
[默认 ]

If 警告 已设置,并且编辑缓冲区的内容已被修改
最后完全写完,编辑在一定之前写警告信息 !
命令(见 逃生).

窗口
[默认 看到 文本]

在打开和可视模式下使用的值,由-乐队-F 命令,并且,在
视觉模式,指定重绘屏幕时显示的行数。

如果 -w 命令行选项未指定,默认值应设置为
的价值 线数 环境变量。 如果 线数 环境变量为空或
null,默认为显示行数减 1。

设置 窗口 编辑选项为零或大于行数的值
显示减 1(显式或基于 -w 选项还是 线数 环境
变量)将导致 窗口 编辑选项设置为行数
显示负 1。

终端线路的波特率可能会更改实现定义的默认值
方式。

包边, wm
[默认 0]

如果此编辑选项的值为零,则无效。

如果不在 POSIX 语言环境中,则此编辑选项的效果是实现定义的。

否则,它应指定从终端的结束边距开始的列数。

在开放和可视文本输入模式下,对于每个字符的任何部分
字符显示在小于 包边 结尾的列
显示行的边距,编辑器的行为如下:

1. 如果触发此事件的角色是,它,以及之前的所有
当前行的字符在执行当前行时输入
文本输入命令,应该被丢弃,并且编辑器应该表现得好像用户有
输入了一个反而。 此外,如果下一个用户输入的字符是
一个,它也应该被丢弃。

2. 否则,如果有一个或多个立即出现在当前行的字符
在最后一组插入的非期间输入的字符
当前文本输入命令的执行, 字符应为
替换为好像用户输入了一个反而。

如果 自动缩进 设置编辑选项,并执行 1. 或 2. 中描述的事件,
任何当前行中光标处或之后的字符将被丢弃。

结束余量应由系统确定或由用户覆盖,如
描述为 在环境变量部分和基本定义卷中
POSIX.1-2008, 章节 8, 环境 变量.

包裹扫描, ws
[默认 ]

If 包裹扫描 设置,搜索( ex / or ? 地址,或打开和可视化模式 /, ?, N,
n 命令)应环绕编辑缓冲区的开头或结尾; 未设置时,
搜索应在编辑缓冲区的开始或结束处停止。

写任何, wa
[默认 未设定]

If 写任何 设置,执行时执行的一些检查 ex 命令
应禁止,如编辑器选项中所述 自动写入.

退出 状态


应返回以下退出值:

0 成功完成。

>0 发生错误。

后果 OF 错误


当遇到任何错误并且标准输入不是终端设备文件时, ex
不得写入文件或返回命令或文本输入模式,并应终止
非零退出状态。

否则,当遇到不可恢复的错误时,应相当于一个 SIGHUP
异步事件。

否则,当遇到错误时,编辑器应按照 命令
Line 解析 in ex.

以下 部分 ,那恭喜你, 内容丰富。

申请须知 用法


如果在接收到 SIGSEGV 信号时 ex 正在保存文件,该文件可能不是
成功保存。

下页 命令可以接受多个文件,所以用法如:

下页 'ls [abc]*`

已验证; 它不适用于 编辑 or 命令,例如,因为它们
期望只有一个文件并且出现未指定的结果。

示例


没有。

基本原理


ex/vi 规范基于 4 BSD 和系统中的历史实践
V 的实现 exvi.

A 受限 编辑 (既是历史 红色 实用程序和修改 ex是的
考虑并拒绝纳入。 这两个选项都没有提供安全级别
用户可能会期待。

公认的是 ex 如果没有,视觉模式和相关功能将很难
不可能,在块模式终端或没有的终端上令人满意地实现
任何形式的游标寻址; 因此,这些功能不是强制性要求
应该适用于所有终端。 然而,其意图是,一个 ex 履行
应该在能够支持它们的所有终端上提供全套功能。

附加选项
-c 替代 +命令 受到了启发 -e 选项 口渴. 历史上,所有
这样的命令(见 编辑下页 以及)从编辑的最后一行执行
缓冲。 这意味着,例如, “+/模式” 将失败,除非 包裹扫描 选项
被设置。 POSIX.1-2008 要求符合历史惯例。 这 +命令 选项是
POSIX.1-2008 不再指定,但可能存在于某些实现中。
从历史上看,一些实现限制了 ex 可以作为一部分列出的命令
命令行参数。 为了一致性,POSIX.1-2008 不允许这些
限制。

在编辑器的历史实现中, -R 选项(和 只读 编辑选项)
仅防止覆盖文件; 仍然允许附加到文件,映射
松散地进入 长山壕 无声无息 多变的。 然而,一些实现并没有遵循
这个语义,和 只读 也不允许附加。 POSIX.1-2008 遵循
后一种做法,认为这是更明显和直观的含义 只读.

-s 选项抑制所有交互式用户反馈,对于编辑脚本很有用
在批处理作业中。 具体影响清单是历史实践。 终端类型
“无法支持开放和可视模式”在历史上被称为“愚蠢”。

-t 选项是必需的,因为 标签 实用程序出现在 POSIX.1-2008 和
选项在所有历史实现中可用 ex.

从历史上看,在 exvi 公用事业接受了 -x 选项,它基于
在历史中发现的算法 地穴 公用事业。 这 -x 加密选项,以及
相关 地穴 实用程序,被省略,因为使用的算法是不可指定的和
一些国家的出口管制法使出口加密货币变得困难
技术。 此外,它在历史上没有提供用户所需的安全级别
可能会期待。

普通 输入
文件结束条件不等同于文件结束字符。 一个共同的结束——
文件字符, ‐D,在历史上是一个 ex 命令。

在历史实现中没有最大行长度 ex. 具体来说,作为
分块解析,地址的最大长度与文件名不同。
此外,最大行缓冲区大小被声明为 BUFSIZ,这是不同的长度
在不同的系统上。 这个版本选择了 {LINE_MAX} 的值来强加一个合理的
限制便携式使用 ex 并帮助测试套件编写者开发
执行此限制的实际测试。

输入
这是标准开发人员的明确决定添加到任何
文件缺少一个。 人们认为,这一特点 exvi 被用户所依赖
为了使文本文件缺少尾随更便携。 公认的是
这将需要用户指定的选项或扩展来实现允许 ex
vi 编辑非文本类型的文件,如果此类文件未通过其他方式识别
系统。 一致认为编辑任意类型文件的能力是有用的,
但认为没有必要强制要求一个 ex or vi 需要执行
处理文本文件以外的文件。

INPUT FILES 部分中的段落“默认情况下,...”旨在关闭
长期存在的安全问题 exvi; “模式线”或“模式线”的
编辑选项。 此功能允许文件的前五行或后五行中的任何行
包含字符串 “前任:” or “六:” (而且,显然, “诶:” or “vx:”) 成为一条线
包含编辑器命令,以及 ex 解释所有文本直到下一个 ':' 或者
作为命令。 考虑后果,例如,毫无戒心的用户使用 ex or
vi 在回复邮件消息时作为编辑器,其中包含以下行:

前任:! rm -rf :

出现在签名行中。 标准开发人员坚信编辑器
默认情况下不应解释文件的任何行。 强烈要求卖家删除
这个功能来自他们的实现 exvi.

异步 展会活动
短语“完整写入”的意图是写入整个编辑缓冲区
到稳定存储。 有关临时文件的说明适用于以下实现
使用临时文件来支持编辑用户未命名的缓冲区。

从历史上看,SIGQUIT 被忽略了 ex,但相当于 Q 视觉命令
模式; 也就是说,它退出了视觉模式并进入了 ex 模式。 POSIX.1-2008 允许,但确实
不需要,这种行为。 历史上,SIGINT 经常被使用 vi 用户终止
文本输入模式( ‐C 通常比输入更容易)。 一些实现
of vi 就这一事件向终端发出警报,有些则没有。 POSIX.1-2008 要求
SIGINT 的行为与,并且不会提醒终端。

从历史上看,暂停 ex 文本输入模式下的编辑器类似于 SIGINT,因为
保留完成的行,但丢弃任何部分行,编辑器返回到
命令模式。 POSIX.1-2008 对这个问题保持沉默; 鼓励实施
在可能的情况下遵循历史惯例。

从历史上看,在 vi 编辑器没有将 SIGTSTP 视为异步事件,而是
因此不可能在可视文本输入模式下暂停编辑器。 主要有两个
原因。 首先是 SIGTSTP 是 UNIX 系统上的广播信号,而
事件链所在的外壳 EXEC是一个应用程序,然后 EXECs vi 通常引起
如果 SIGTSTP 被传送到进程组中的进程组,则终端状态的混淆
默认方式。 第二个是 UNIX 的大多数实现 诅咒 包做了
不安全地处理 SIGTSTP,在错误的时间收到 SIGTSTP 会导致他们
坠毁。 POSIX.1-2008 对这个问题保持沉默; 鼓励实现来对待
如果可能,暂停作为异步事件。

从历史上看,在 SIGINT 中断操作之前对编辑缓冲区所做的修改
被保留了; 也就是说,从零到所有要修改的行都可能有
SIGINT 到达时已修改。 这些变化并没有被
SIGINT 的到来。 POSIX.1-2008 允许这种行为,注意到 复原 命令是
需要能够撤消这些部分完成的命令。

对 SIGINT、SIGCONT、SIGHUP 和 SIGTERM 以外的信号采取的行动是
未指定,因为某些实现试图将编辑缓冲区保存在有用的状态
当接收到其他信号时。

普通 误差
针对 ex/vi, 诊断消息是由于尝试失败而报告的消息
调用 ex or vi,例如无效的选项或资源不足,或异常
终止条件。 不应将诊断消息与错误消息混淆
由不适当或非法的用户命令生成。

初始化 in ex vi
如果 ex 命令(除了 cd, 目录资源) 有一个文件名参数,一个或两个
将设置备用路径名和当前路径名。 非正式地,它们的设置如下:

1。 如果 ex 命令是一种替换编辑缓冲区内容的命令,它
成功,当前路径名将被设置为文件名参数(第一个
在这种情况下的文件名参数 下页 命令),备用路径名将是
设置为前一个当前路径名,如果有的话。

2.在文件读/写形式的情况下 命令,如果有
没有当前路径名,当前路径名将被设置为文件名参数。

3. 否则,备用路径名将设置为文件名参数。

例如, 编辑: FOO:恢复 FOO, 成功后,设置当前路径名,然后,
如果有以前的当前路径名,则为备用路径名。 命令 :写,
!命令编辑: 既不设置当前路径名,也不设置备用路径名。 如果 编辑: FOO
命令由于某种原因失败,将设置备用路径名。 这
命令将备用路径名设置为它们的 文件 参数,除非当前
未设置路径名,在这种情况下,他们将当前路径名设置为 文件 参数。
备用路径名历史上不是由 :来源 命令。 POSIX.1-2008
需要符合历史惯例。 添加命令的实现
鼓励将文件名作为参数设置备用路径名,如此处所述。

从历史上看, exvi 阅读 .exrc文件 文件中 $ HOME 目录两次,如果编辑器
被处决 $ HOME 目录。 POSIX.1-2008 禁止这种行为。

从历史上看,4 BSD exvi 阅读 $ HOME 和本地 .exrc文件 文件,如果它们是拥有的
通过用户的真实 ID,或 来源 选项已设置,无论其他
考虑。 这是一个安全问题,因为可以将普通的 UNIX
里面的系统命令 .exrc文件 文件。 POSIX.1-2008 没有指定 来源 选项,
鼓励历史实现删除它。

.exrc文件 文件必须由用户的真实 ID 拥有,并且不能被其他任何人写入
比楼主。 适当的特权例外旨在允许用户
获得特权,但继续使用 .exrc文件 文件在其主目录中。

System V 版本 3.2 及更高版本 vi 实现添加了选项 [没有]exrc. 行为
是当地的吗 .exrc文件 文件是只读的,如果 导出 选项已设置。 默认为
导出 选项已关闭,因此默认情况下,本地 .exrc文件 未读取文件。 这是问题
打算解决的是 System V 允许用户赠送文件,所以没有
可能的所有权或可写性测试以确保文件安全。 这仍然是一个
用户可以赠送文件但没有任何东西的系统上的安全问题
POSIX.1-2008 可以做的额外工作。 实现定义的异常旨在
允许团体拥有本地 .exrc文件 用户共享的文件,通过创建伪用户
拥有共享文件。

POSIX.1-2008 没有提到全系统 exvi 启动文件。 虽然它们存在于
的几种实现 exvi,它们不存在于任何实现中
POSIX.1-2008 考虑了历史实践。 具有此类文件的实现
仅当它们由真实用户 ID 或适当的用户拥有时才应使用它们(例如
例如,UNIX 系统上的 root)并且如果它们不能被除他们之外的任何用户写入
所有者。 系统范围的启动文件应该在 退出 变数 $HOME/.exrc,
或本地 .exrc文件 文件进行评估。

历史上,任何 ex 命令可以在 退出 变量或 .exrc文件 文件,
尽管通常要求编辑缓冲区已经包含文本行
导致编辑器的历史实现下降 核心. POSIX.1-2008 要求
任何 ex 命令被允许在 退出 变量和 .exrc文件 文件,为了简单起见
规范和一致性,尽管其中许多显然会在许多情况下失败
的情况。

编辑缓冲区内容的初始化使用短语“效果应”
be''关于各种 ex 命令。 这句话的意图是编辑缓冲区
初始化阶段加载的内容不会丢失; 也就是说,加载编辑
缓冲区应该失败,如果 .exrc文件 file 读入一个文件的内容并且没有
随后写入编辑缓冲区。 这个短语的另一个意图是指定
初始当前行和列设置为为个人指定的 ex 命令。

从历史上看,在 -t 选项表现得好像标签搜索是一个 +命令; 也就是说,它是
从标签指定的文件的最后一行开始执行。 这导致了搜索
如果模式是前向搜索模式并且 包裹扫描 编辑选项不是
放。 POSIX.1-2008 不允许这种行为,要求搜索标签
对整个文件执行模式,如果没有找到,则设置当前行
到文件中更合理的位置。

从历史上看,当文件未由
用户未命名。 这是 POSIX.1-2008 允许的; 然而,实现是
鼓励为用户提供此缓冲区的临时文件名,因为它允许他们
指某东西的用途 ex 在临时编辑会话期间使用当前路径名的命令。

从历史上看,使用指定的文件 -t 选项不是当前参数的一部分
列表。 POSIX.1-2008 允许这种做法; 但是,鼓励实施
将其名称包含在当前参数列表中以保持一致。

从历史上看,在 -c 命令通常不会执行,直到文件已经存在
被编辑。 POSIX.1-2008 要求符合这一历史惯例。 命令
可能导致 -c 要执行的命令包括 ex 命令 编辑, 下页, 恢复,
倒带行李牌,并 vi 命令-^ 和-]。 从历史上看,阅读
文件进入编辑缓冲区并没有导致 -c 要执行的命令(即使它可能
设置当前路径名),但它确实导致 -c 命令成为
在以下情况下执行:编辑器在 ex 模式,编辑缓冲区没有当前路径名,编辑
缓冲区为空,尚未尝试读取命令。 为了一致性和
规范的简单性,POSIX.1-2008 不允许这种行为。

从历史上看,在 -r 如果没有恢复,则选项与正常编辑会话相同
文件可用的信息。 这允许用户输入:

vi -r *。C

并恢复任何可恢复的文件。 在一些实现中,恢复是
仅在命名的第一个文件上尝试,并且该文件未输入到参数中
列表; 在其他情况下,对每个命名的文件都进行了恢复。 此外,一些历史
忽略的实现 -r if -t 被指定或不支持命令行 文件
-t 选项。 为了规范的一致性和简单性,
POSIX.1-2008 不允许这些特殊情况,并要求尝试恢复
第一次编辑每个文件。

从历史上看, vi 初始化 `' 标记,但是 ex 没有。 这意味着,如果
第一个命令 ex 模式是 视觉 或者如果 ex 命令首先被执行(例如,
vi +10 文件), vi 在没有初始化标记的情况下输入。 因为标准
开发人员认为这些标记通常是有用的,并且为了一致性和简单性
根据规范,POSIX.1-2008 要求它们在打开或
视觉模式,或者如果在 ex 模式并且编辑缓冲区不为空。 不初始化它 ex
编辑缓冲区为空时的模式是历史惯例; 然而,它一直是
可以在打开和可视模式编辑的空编辑缓冲区中设置(和使用)标记
会话。

解决
从历史上看, exvi 接受了额外的地址表格 '\/''\?'。 他们是
相当于 “//”“??”, 分别。 POSIX.1‐2008 不需要它们,主要是
因为没有人记得他们在历史上是否做过不同的事情。

从历史上看, exvi 允许多个命令的地址为零,并且允许
% 其他人的空文件中的地址。 为了一致性,POSIX.1-2008 需要支持
对于前者,在它有意义的几个命令中,否则不允许它。 在
另外,因为 POSIX.1-2008 要求 % 逻辑上等价于 “1,$”, 它是
在有意义的地方也支持,否则不允许。

从历史上看,在 % 地址后面不能跟更多地址。 为了一致性
和规范的简单性,POSIX.1-2008 要求附加地址
支持的。

以下所有内容均有效 地址:

+++ 当前行后三行。

/re/− 下一次出现的前一行 re.

−2 当前行前两行。

3 −−−− 2 第一行(注意中间负地址)。

1 2 3 第六行。

可以为获取地址的命令提供任意数量的地址; 例如,
“1,2,3,4,5p” 打印第 4 行和第 5 行,因为 XNUMX 是最大的有效地址数
被接受 打印 命令。 这与结合分隔符,
允许用户根据文件中的有序模式创建命令。 例如,
命令 3;/foo/;+2打印 将显示包含模式的第 3 行之后的第一行
FOO, 加上接下来的两行。 注意地址 3; 必须在被评估之前
丢弃,因为搜索原点 /富/ 命令取决于此。

从历史上看,值可以通过在一个或多个之后包含它们来添加到地址
人物; 例如, 3 - 5p 写了文件的第七行,并且 /富/ 5
是一样的 /富/+5. 但是,只能添加绝对值; 例如,
5 /富/ 是一个错误。 POSIX.1-2008 要求符合历史惯例。 地址
偏移量与地址分开指定,因为它们在历史上可能是
提供给可视模式搜索命令。

从历史上看,任何丢失的地址都默认为当前行。 这是真的
领先和落后- 分隔地址,用于尾随- 分隔
地址。 为保持一致性,POSIX.1-2008 要求它作为前导地址为
井。

从历史上看, exvi 接受了 '^' 字符既作为地址又作为标志偏移
对于命令。 在这两种情况下,它都与 '-' 特点。 POSIX.1-2008 没有
要求或禁止这种行为。

从历史上看,基本正则表达式的增强可用于寻址;
例如, '~', '\<''\>'. POSIX.1-2008 要求符合历史
实践; 也就是说,正则表达式的使用是一致的,并且正则
在任何使用正则表达式的地方都支持表达式增强。

命令 Line 解析 in ex
历史的 ex 命令解析比这里描述的还要复杂。 POSIX.1-2008
需要标准开发人员认为的命令解析的子集
记录在案,并且可以合理地期望用户以便携式方式使用,并且
这在历史上是一致的。 (丢弃的功能是
模糊,充其量。)历史实现将需要更改才能遵守
使用 POSIX.1-2008; 但是,预计用户不会注意到任何这些变化。 最多
的复杂性 ex 解析是处理三种特殊的终止情况:

1. !, 全球化, v,以及过滤器版本 命令是分隔的
经过字符(它们可以包含通常是字符
壳管)。

2. ex, 编辑, 下页视觉 在开放和视觉模式命令都采取 ex 命令,
可选地包含字符,作为他们的第一个参数。

3. s 命令将正则表达式作为其第一个参数,并使用
分隔字符来分隔命令。

从历史上看, 中的字符 +命令 的论点 ex, 编辑, 下页,
vi视觉 命令,并在 模式替代 的一部分 s 命令,做了
不分隔命令,并在过滤器情况下 ,并 !, 全球化,
v 命令,他们根本没有分隔命令。 例如,以下
命令都是有效的:

:编辑 +25 | s/abc/ABC/file.c
:s/ | /管道/
:阅读!拼写%| 柱状
:全局/模式/p | l
:s/a/b/ | s/c/d | 放

从历史上看,空的或填充线 .exrc文件 文件和 资源d 文件(以及
退出 变量和 ex 命令脚本)被视为默认命令; 那是, 打印
命令。 POSIX.1-2008 特别要求在遇到它们时忽略它们
.exrc文件资源d 文件以消除新用户错误的常见来源。

从历史上看, ex 具有多个相邻的命令(或-分隔)垂直线
执行时被奇怪地处理 ex 模式。 例如,命令 ||| <carriage-
return>,当光标在第 1 行时,显示文件的第 2、3 和 5 行。 在
另外,命令 | 只会在下一行之后显示该行,而不是
接下来的两行。 前者在执行时更合乎逻辑 vi 模式,并显示
第 2、3 和 4 行。POSIX.1-2008 要求 vi 行为; 也就是说,一个单一的默认值
每个命令分隔符的命令和行号增量,以及尾随
之后的字符分隔符被丢弃。

从历史上看, ex 允许一个额外的作为主要指挥人物; 为了
例, :g/模式/:p 是一个有效的命令。 POSIX.1-2008 将其概括为要求
任意数量的领先字符被剥离。

从历史上看,任何前缀 删除 可以在不干预的情况下执行命令
标志字符的字符,因为在命令中 d p, p 被解释为
缓冲 p. POSIX.1-2008 要求符合历史惯例。

从历史上看,在 k command 后面可以跟标记名称,无需干预
人物。 POSIX.1-2008 要求符合历史惯例。

从历史上看,在 s 命令可以紧跟标志和选项字符;
例如, s/e/E/|s|sgc3p 是一个有效的命令。 但是,标志字符无法忍受
独自的; 例如,命令 sps l 会失败,而命令 sgps gl
会成功。 (显然, '#' 标志字符被用作分隔符,如果它
遵循命令。)另一个问题是选项字符必须在标志之前
即使完全指定了命令,也可以使用字符; 例如,命令 s/e/E/pg
会失败,而命令 s/e/E/全科医生 会成功。 POSIX.1-2008 要求符合
历史实践。

从历史上看,第一个具有与用户输入匹配的前缀的命令名称
是执行的命令; 例如, ve, 版本 都执行了 版本 命令。
然而,命令是按特定顺序排列的,因此 a 匹配 附加,不 简写.
POSIX.1-2008 要求符合历史惯例。 命令的限制
搜索具有扩展名的实现的顺序是为了避免添加诸如
历史前缀将无法移植。

的历史实现 exvi 没有正确处理多个 ex 命令,
由字符,进入或退出可视模式或编辑器。
因为实现 vi 存在不表现出这种故障模式,POSIX.1-2008
不允许。

字母命令名称由以下所有字母组成的要求
直到下一个非字母字符的字符表示字母命令名称
必须用一个或多个非字母字符与它们的参数分开,通常
一个或者 '! 字符,除非为例外指定, 删除, ks
命令。

从历史上看,反复执行 ex 默认 打印 命令( -D, EOF,
, ) 删除任何提示字符并显示下一行
无需滚动终端; 也就是说,紧接在任何先前显示的行下方。
这为用户提供了文件中行的更清晰的表示。 POSIX.1-2008
不需要这种行为,因为在某些情况下它可能是不可能的; 然而,
如果可能,强烈鼓励实现提供这种语义。

从历史上看,可以在命令中间更改文件,并拥有
在新文件中执行的其余命令; 例如:

编辑: +25 文件.c | s/abc/ABC/ | 1

是一个有效的命令,并且在新编辑的文件中尝试了替换。
POSIX.1-2008 要求符合历史惯例。 以下命令是
锻炼的例子 ex 解析器:

回音 '富 | 酒吧' > 文件1; 回音 '富/酒吧' > 文件2;
vi
编辑: +1 | s/|/管道/ | w file1 | e file2 | 1 | s/\//斜线/ | wq

从历史上看,编辑器实现中没有任何保护措施可以避免 ex 全球化, v, @,
or * 在执行相关命令期间更改编辑缓冲区的命令。 因为
这几乎总是会导致编辑器的灾难性失败,并且
存在确实表现出这些问题的实现,POSIX.1-2008 要求改变
期间的编辑缓冲区 全球化 or v 命令,或在 @ or * 那里的命令
会不止一次执行,会报错。 支持多个实现
强烈建议同时编辑缓冲区将相同的语义应用于
缓冲区之间的切换也是如此。

ex POSIX.1-2008 要求的命令引用是历史中引用的超集
编辑器的实现。 例如,历史上不可能逃脱
在文件名中; 例如, 编辑: 富\\\ 酒吧 会报告文件名太多
已为编辑命令输入,并且没有转义的方法在
an 的第一个参数 编辑, ex, 下页视觉 完全命令。 POSIX.1-2008 扩展
历史实践,要求引用行为在所有方面保持一致 ex
命令,除了 地图, 取消映射, 简写非缩写 命令,其中
历史上使用-V 代替引用的字符。 对于那些
四个命令,POSIX.1-2008 要求符合历史惯例。

反斜杠引用 ex 是不直观的。 - 转义被忽略,除非他们
转义一个特殊字符; 例如,在执行时 文件 论据展开
绳子 "\\%" 相当于 '\%', 不是 ”\当前 路径名>"。这可能会让人感到困惑
用户因为通常是导致 shell 扩展的字符之一
执行,因此必须考虑 shell 引用规则。
通常,仅在转义特殊字符时才考虑引用字符,并且
必须为该字符所在的每一层解析提供一个引用字符
特别的。 再举一个例子,只有一个是必要的 '\l' 序列
在替代替换模式中,因为字符 '我' 对任何人都不特别
它上面的解析层。

-V 引用 ex 与反斜杠引用略有不同。 在四个
命令在哪里‐V 引用适用 (简写, 非缩写, 地图取消映射), 任何
字符可能会被转义‐V 是否有特殊含义。
POSIX.1-2008 要求符合历史惯例。

编辑器的历史实现不需要字符内的分隔符
要逃脱的课程; 例如,命令 :s/[/]// 在字符串上 “xxx/yyy”
删除 '/' 从字符串。 POSIX.1-2008 不允许这种历史做法
一致性,并且因为它通过要求
正则表达式的知识被内置到编辑器解析器中。

从历史上看,引用中的字符 ex 命令处理不一致。 在
大多数情况下, 字符总是终止命令,不管任何
前面的转义字符,因为字符没有逃脱
大多数字符 ex 命令。 然而,有些 ex 命令(例如, s, 地图
缩写) 允许要转义的字符(尽管在 地图
缩写, ‐V 字符转义它们而不是人物)。
这不仅适用于命令行,而且适用于 .exrc文件资源d 文件。 例如,
命令:

地图 = 富酒吧

会成功,尽管有时很难获得-V 和插入的
传递给 ex 解析器。 为了规范的一致性和简单性,
POSIX.1-2008 要求可以转义中的字符 ex 命令在
一直以来,使用大多数字符 ex 命令,并使用-V
字符为 地图缩写 命令。 例如,命令
打印名单 需要被解析为单个命令 打印名单.
虽然这与历史实践不同,但 POSIX.1-2008 开发人员认为这不太可能
任何脚本或用户都依赖于历史行为。

从历史上看,使用 -c 选项没有导致其余的
-c 要丢弃的命令。 POSIX.1-2008 不允许这样做以保持与
映射键, @, 全球化, 资源v 命令, 退出 环境变量,和
.exrc文件 文件。

输入 编辑 in ex
历史的常见用途之一 ex 编辑器的网络连接速度很慢。
以规范模式运行的编辑器需要的往返流量要少得多,而且要少得多
处理上,主机,以及更容易支持块模式终端。
由于这些原因,POSIX.1-2008 要求 ex 使用规范模式输入实现
处理,就像历史上所做的那样。

POSIX.1‐2008 不需要历史 4 BSD 输入编辑字符 ``word erase''
或“文字下一个”。 出于这个原因,未指定它们是如何处理的 ex,
尽管它们必须具有所需的效果。 之后解决它们的实现
行已结束使用或者‐M 字符和实现
依赖底层系统终端支持这个处理,都是符合的。
强烈敦促实现使用底层系统功能,如果有的话
可能,为了与其他系统文本输入界面兼容。

从历史上看,当 EOF 字符被用来减少 自动缩进 水平,
光标移动以显示新的结尾 自动缩进 字符,但没有移动
光标到新行,也没有删除‐D 字符从行。
POSIX.1-2008 未指定光标保持在同一行或其余部分
该行被擦除; 但是,强烈建议实施以提供最好的
可能的用户界面; 也就是说,光标应该保持在同一行,并且任何
‐D 字符应被删除。

POSIX.1-2008 不需要历史 4 BSD 输入编辑字符 ``reprint'',
传统上-R,重新显示用户的当前输入。 为了这
原因,并且因为该功能无法在行后实现
由用户终止,POSIX.1-2008 对此功能没有任何要求。
强烈敦促实现使这个历史功能可用,如果
可能。

从历史上看, ‐Q 在 ex,就像它在 vi.
POSIX.1‐2008 要求符合历史惯例以避免打破历史 ex
脚本和 .exrc文件 文件。

EOF
是否 EOF 字符立即修改 自动缩进 提示符中的字符是
未指定,以便实现可以在系统存在的情况下符合
不支持此功能。 鼓励实现修改行和
如果可能,请立即重新显示。

处理规范 EOF 性格不同于历史实践
只有在那 EOF 如果字符跟随文本中的正常字符,则不会丢弃字符
输入。 从历史上看,它们总是被丢弃。

命令 描述 in ex
从历史上看,有几个命令(例如, 全球化, v, 视觉, s, , wq, 猛拉, !, <,
>, &~) 在空文件中可执行(即,默认地址为 0),或
允许的显式地址为 0(例如,0 是有效地址,或者 0,0 是有效地址)
范围)。 地址 0 或空文件中的命令执行仅对
将新文本添加到编辑缓冲区或写入命令的命令(因为用户可能希望
写空文件)。 POSIX.1-2008 要求此类命令具有此行为并不允许它
否则,为了规范的一致性和简单性。

一个计数 ex command 在历史上已被更正为不大于上一个
文件中的一行; 例如,在一个五行文件中,命令 1,6print 会失败,但是
命令 1印300 会成功。 POSIX.1-2008 要求符合历史惯例。

历史上,旗帜的使用 ex 命令可能晦涩难懂。 一般历史
实践如 POSIX.1-2008 所述,但有一些特殊情况。 为了
例如, 名单, 打印 命令忽略尾随地址偏移; 为了
例, 3p +++# 将显示第 3 行,第 3 行将是执行后的当前行
的命令。 这 打开视觉 命令忽略了尾随偏移量和
尾随标志。 此外,指定给 打开视觉 命令交互不良
名单 编辑选项,并在打开/视觉期间设置然后取消设置
会话会导致 vi 停止以指定格式显示行。 为了一致性
和规范的简单性,POSIX.1-2008 不允许任何这些例外情况
一般规则。

POSIX.1‐2008 使用这个词 复制 在讨论缓冲区时在几个地方。 这不是
旨在暗示实施。

从历史上看, ex 用户无法指定数字缓冲区,因为这不明确
会导致; 例如,在命令中 3 删除 2,不清楚2是否是缓冲区
姓名或 . POSIX.1-2008 默认要求符合历史惯例,但是
不排除扩展。

从历史上看,未命名缓冲区的内容经常在命令后被丢弃
没有明确影响它; 例如,当使用 编辑 命令切换
文件。 为了规范的一致性和简单性,POSIX.1-2008 不允许这样做
行为。

ex 实用程序在历史上无法访问数字缓冲区,此外,
删除行 ex 没有修改他们的内容。 例如,如果在执行删除操作后
in vi,用户切换到 ex,再次删除,然后切换回 vi是,
数字缓冲区的内容不会改变。 POSIX.1-2008 要求符合
到历史实践。 数字缓冲区在 ex 实用程序,以便
将缓冲区的描述限制在 POSIX.1-2008 中的单个位置。

触发 shell 扩展的元字符 文件 参数匹配历史
练习,就像做shell扩展的方法一样。 希望提供的实现
鼓励灵活更改元字符集的用户提供
外壳元 字符串编辑选项。

从历史上看, ex 从执行的命令 vi 不严格时刷新屏幕
需要这样做; 例如, :!日期 > 的/ dev / null的 不需要屏幕刷新,因为
UNIX 的输出 日期 命令只需要屏幕的一行。
POSIX.1-2008 要求如果屏幕被覆盖,则刷新屏幕,但会使
没有关于实现应如何做出该决定的要求。
无论如何,实现可能会提示并刷新屏幕。

简称
历史惯例是作为缩写的一部分输入的字符
更换受到 地图 扩展, 表演比赛 编辑选项,进一步
缩写扩展等; 也就是说,它们在逻辑上被推到终端上
输入队列,而不是简单的替换。 POSIX.1-2008 要求符合
历史实践。 历史惯例是,每当一个非单词字符(具有
没有被一个‐V) 在单词字符后输入, vi 会检查
缩写。 检查是基于在单词之前输入的字符的类型
触发检查的单词/非单词对的字符。 单词字符
触发检查的单词/非单词对以及在触发器之前输入的所有字符
该类型的对被包括在检查中,除了
字符,始终分隔缩写。

这意味着,为了使缩写起作用, h 必须以单词字符结尾,
不能有从单词到非单词字符的转换(或 反之亦然) 以外
在最后一个和倒数第二个字符之间 h,并且不可能有
中的字符 h. 此外,由于历史的引用规则,它是
无法输入文字-V 在 h. POSIX.1-2008 要求符合
到历史实践。 历史实现在缩写时没有通知用户
输入了永远无法使用的; 强烈鼓励实施这样做。

例如,以下缩写将起作用:

:ab (p 更换
:ab p 更换
:ab ((p 更换

以下缩写将不起作用:

:ab ( 更换
:ab (页 更换

历史惯例是 vi 冒号命令行受制于
缩写扩展,包括参数 缩写 (更有趣的是)
不缩写 命令。 因为有些实现不做缩写展开
对于这些命令的第一个参数,这是允许的,但不是必需的,通过
POSIX.1-2008。 但是,以下顺序:

:ab FOO 酒吧
:ab FOO 巴兹

导致添加了一个缩写 “巴兹” 对于字符串 “酒吧” 在历史上
ex/vi, 和序列:

:ab 富1 酒吧
:ab 富2 酒吧
: 不缩写 富2

删除了缩写 “foo1”,不 “foo2”. 这些行为是不允许的
POSIX.1-2008,因为它们明显违背了用户的期望。

这是历史惯例-V,不, 字符被解释为
转义后面的字符 简写 命令。 POSIX.1-2008 要求
符合历史惯例; 但是,应该注意的是缩写
包含一个永远不会工作。

附加
从历史上看,任何跟在后的命令分隔符 附加,
更改 命令成为插入文本的一部分。 例如,在命令中:

:g/模式/追加|stuff1

包含文本的行 “东西1” 将附加到每个行匹配模式。 它
在历史上也可以输入:

:追加|东西1
东西2
.

和上面的文字 ex 命令行将与后面插入的文本一起附加
它。 但是,有一个历史错误,即用户必须输入两个终止符
行( '。' 行)在这种情况下终止文本输入模式。 POSIX.1-2008 要求
符合历史实践,但不允许历史需要多重
终止线路。

更改
请参阅基本原理 附加 命令。 后光标定位的历史实践
没有输入文本时的更改命令,如 POSIX.1-2008 中所述。 然而,一个
已知 System V 实现已被修改,使得光标定位
在指定的第一个地址上,而不是在第一个地址之前的行上。 POSIX.1-2008
不允许此修改以保持一致性。

从历史上看,在 更改 命令不支持缓冲区参数,尽管有些
实现允许指定可选缓冲区。 这种行为既不是
POSIX.1-2008 要求也不允许。

更改 目录
一个常见的扩展 ex 实现是使用一个元素 路径 编辑选项为
前缀目录 参数 目录 是相对路径名,而不是
已可以选用 '。' or “ ..” 作为他们的第一个组件。 中的元素 路径 编辑选项是
-分开。 的初始值 路径 编辑选项是shell的值
CDPATH 环境变量。 此功能未包含在 POSIX.1-2008 中,因为它确实
在任何被认为是历史实践的实现中都不存在。

复制
的历史实现 ex 允许复制到指定范围内的行;
例如, :2,5副本3 是一个有效的命令。 POSIX.1-2008 要求符合
历史实践。

删除
POSIX.1-2008 需要支持历史解析 删除 命令后跟
标志,没有任何干预人物。 例如:

1dp 删除第一行并打印第二行。

1deep 至于 1dp.

1d 删除第一行,将其保存在缓冲区中 p.

1d 1 (Pee-one-ell.) 删除第一行,将其保存在缓冲区中 p,并列出该行
那是第二个。

编辑
历史上,任何 ex 命令可以输入为 +命令 论证 编辑 命令,
尽管有些(例如, 附加) 已知会混淆历史
实施。 为了规范的一致性和简单性,POSIX.1-2008 要求
支持任何命令作为参数 编辑 命令。

从历史上看,命令参数是在当前行设置为最后一行的情况下执行的
的文件,无论是否 编辑 命令是否从可视模式执行。
POSIX.1-2008 要求符合历史惯例。

从历史上看,在 +命令 指定给 编辑下页 命令由
第一的,并且没有办法引用它们。 为了一致性,POSIX.1-2008 要求
那通常 ex 提供反斜杠引用。

从历史上看,指定 +命令 编辑命令的参数需要一个文件名
也被指定; 例如, 编辑: +100 总是会失败。 为了一致性和
规范的简单性,POSIX.1-2008 不允许这种用法因此而失败
原因。

从历史上看,只有最后编辑的文件的光标位置被
编辑。 POSIX.1-2008 要求支持; 然而,实现是
允许记住和恢复以前编辑的任何文件的光标位置。

文件
历史版本 ex 编辑 文件 命令显示当前行和数量
当文件为空时,编辑缓冲区中的行为 0,而 vi -G 命令
在相同的 1 中显示当前行和编辑缓冲区中的行数
情况。 POSIX.1-2008 不允许这种差异,而是要求一条消息
显示文件为空。

全球
两遍操作的 全球化v 命令并非意在暗示
执行,只需要操作的结果。

当前行和列设置为为个人指定 ex 命令。 这个
要求是累积的; 也就是说,当前行和列必须跨越所有
执行的命令 全球化 or v 命令。

插页
请参阅基本原理 附加 命令。

从历史上看, 不能与零地址一起使用; 也就是说,不是在编辑时
缓冲区为空。 POSIX.1-2008 要求此命令的行为与
附加 命令。

加入
的行动 加入 与特殊字符相关的命令仅定义为
POSIX 语言环境,因为一段时间后正确的空白数量会有所不同; 在
日文不需要,法文只有一个空格,依此类推。

清单
历史输出 名单 命令可能是模棱两可的。 标准
开发人员认为纠正这一点比坚持历史更重要
实践,而 POSIX.1-2008 需要明确的输出。

地图位置
从历史上看,命令模式映射仅适用于命令名称; 例如,如果
字符 'x' 被映射到 '你', 命令 fx 搜索了 'x' 性格,而不是
'你' 特点。 POSIX.1-2008 需要这种行为。 从历史上看,进入-V 为
a的第一个字符 vi 命令是一个错误。 几个实现已经扩展
的语义 vi 这样-V 表示后面的命令字符是
未映射。 POSIX.1-2008 允许但不要求这样做。 无论如何,使用
-V 转义字符序列中的第二个或后面的字符,这可能
匹配一个 地图 命令或文本输入模式中的任何字符是历史惯例,并且
阻止输入的键匹配地图。 POSIX.1-2008 要求符合
历史实践。

历史实现允许将数字用作 地图 命令 h, 但是之后
忽略了地图。 POSIX.1-2008 要求不忽略映射的数字。

历史上的实施 地图 命令不允许 地图 曾经的命令
如果第一个字符是可打印的,则长度超过一个字符。 这种行为
POSIX.1-2008 允许但不是必需的。

从历史上看,映射的字符会被重新映射,除非 重映射 未设置编辑选项,或
映射字符的前缀匹配映射字符; 例如,在
地图:

:地图 ab ABCD

那些角色 “ab” 按原样使用并且没有重新映射,但字符 “光盘”
适当时映射。 这可能会导致无限循环 vi 映射机制。
POSIX.1-2008 要求符合历史惯例,并且这样的循环是
可中断的。

文本输入映射在扩展 h 等加工。为 ex 地图!取消映射!
命令和 ex 简写非缩写 命令。 请参阅基本原理 ex
简写 命令。 POSIX.1-2008 需要对一些历史实践进行类似修改
等加工。为 地图取消映射 命令,如所述 简写非缩写 命令。

从历史上看, 地图s 是其他的子集 地图s 表现不同,具体取决于
它们被定义的顺序。 例如:

:地图! ab
:地图! ABC

总是会翻译字符 “ab”“短的”,无论多快
字符 “ABC” 被输入。 如果挂单反转:

:地图! ABC
:地图! ab

那些角色 “ab” 会导致编辑器暂停,等待完成 'c'
字符,并且字符可能永远不会映射到 “短的”. 为了一致性和
规范的简单性,POSIX.1-2008 要求使用最短匹配
倍。

编辑器等待字符完成的时间长度 h is
未指定,因为系统的计时能力通常不准确且可变,并且
它可能取决于其他因素,例如连接速度。 时间应该是
足够长的时间让用户能够完成序列,但不够长
用户必须等待。 的一些实现 vi 添加了一个 关键时间 选项,其中
允许用户设置编辑器等待完成的 0,1 秒数
人物。 因为映射的终端功能和光标键往往以
性格,和是关键的结局 vi 文本输入模式, 地图s 开头
字符通常不受此超时期限的限制,或者至少超时
不一样。

纪念
从历史上看,用户能够明确地设置“先前的上下文”标记。 在
此外,该 ex 命令 '''`vi 命令 '', ``, `''` 都提到
同一个标记。 此外,如果命令没有设置先前的上下文标记,
与设置标记的地址相关联,失败。 POSIX.1-2008 要求
符合历史惯例。 从历史上看,如果标记的行被删除,标记
也被删除,但如果撤消更改会重新出现。 POSIX.1-2008 要求
符合历史惯例。

设置特殊事件的描述 `' 标记匹配历史
实践。 例如,历史上的命令 /a/,/b/ 没有设置 `' 标记,但是
命令 /a/,/b/删除 做到了。

下一页
历史上,任何 ex 命令可以输入为 +命令 论证 下页 命令,
尽管有些(例如, 附加) 已知会混淆历史
实施。 POSIX.1-2008 要求允许任何命令并且它的行为与
指定的。 这 下页 命令可以接受多个文件,所以用法如:

下页 'ls [ABC] `

已验证; 它不需要对 编辑 or 命令,例如,因为它们
只期望一个文件名。

从历史上看,在 下页 命令的行为与 :倒带 命令在它
如果 自动写入 标志已设置。 为了一致性,POSIX.1-2008 确实
不允许这种行为。

从历史上看,在 下页 命令定位光标,就好像文件从未被编辑过一样
之前,不管。 POSIX.1-2008 不允许这种行为,为了与
编辑 命令。

希望提供对应的实现 下页 编辑的命令
以前的文件已经使用了命令 以前的], 这不需要 文件 争论。 POSIX.1-2008
不需要这个命令。

可选
从历史上看,在 打开 如果 打开 未设置编辑选项。
POSIX.1-2008 没有提到 打开 编辑选项并且不需要此行为。
一些历史实现不允许从开放或可视模式进入开放模式,
仅来自 ex 模式。 为了一致性,POSIX.1-2008 不允许这种行为。

从历史上看,从命令行进入打开模式(即 vi +打开) 导致
异常行为; 例如, ex 文件和 命令,以及 vi 命令
‐G 不起作用。 为了一致性,POSIX.1-2008 不允许这种行为。

从历史上看,在 打开 命令只允许 '/' 用作搜索的字符
模式分隔符。 为保持一致性,POSIX.1-2008 要求使用的搜索分隔符
s, 全球化v 命令也被接受。

保存
保存 命令在历史上不会导致文件被视为未修改
未来可能退出编辑器的命令的用途。 POSIX.1-2008 要求
符合历史惯例。

历史文件指出,当保存时邮件没有发送给用户
执行; 但是,在这种情况下,历史实现确实会发送邮件。 POSIX.1-2008
要求符合历史实现。

打印
NUL 由 打印 命令未指定为特殊情况,因为
标准开发人员不想要求 ex 支持 NUL 字符。 从历史上看,
使用 ARPA 标准映射显示字符,如下所示:

1. 留下可打印的字符。

2.小​​于\177的控制字符表示为 '^' 后跟字符
从偏移 '@' ASCII 映射中的字符; 例如,\007 表示为
'^G'.

3. \177 表示为 '^' 其次是 '?.

设置了第八位的字符的显示不太标准。 现存的
实现使用十六进制 (0x00)、八进制 (\000) 和元位显示。 (后者
显示将其第八位设置为两个字符的字节 “M-” 其次是
如上所述的七位显示。)后者可能是最好的声称
历史实践,因为它被用于 -v 4 个 BSD 和 4 个 BSD 衍生选项
版本的 自 1980 年以来的实用程序。

POSIX.1-2008 不需要特定的显示格式。

尽可能避免了对 ASCII 字符集的显式依赖,因此
使用短语“实现定义的多字符序列”进行显示
不可打印字符优先于历史用法,例如, “^我”
为了. 鼓励实施符合历史实践
没有任何强烈的分歧理由。

从历史上看,所有 ex 以字母开头的命令 'p' 可以使用
命令的大写版本; 例如, 打印], 保存]放]
有效的命令名称。 POSIX.1-2008 允许但不要求这种历史做法
因为某些实现将命令的大写形式用于其他目的。


从历史上看,一个 ex 从打开或可视模式执行的命令与
开放或可视模式 P 命令,如果缓冲区被命名并在字符模式下被剪切,并且
与...相同 p 如果缓冲区被命名并以行模式剪切,则命令。 如果无名
缓冲区是文本的来源,从中获取文本的整行是
平时 , 并且缓冲区的处理方式就像在行模式下一样,但是有可能得到
极其异常的行为。 此外,使用 Q 命令切换到 ex 模式,以及
然后做一个 通常也会导致错误,例如附加的文本
与缓冲区的(假定的)内容无关。 为了一致性和简单性
规范,POSIX.1-2008 不允许这些行为。 全部 ex 命令是
需要在行模式下操作,并且缓冲区的内容不会被改变
更改编辑器的模式。

阅读
从历史上看,一个 ex 从打开或可视模式执行的命令,在空执行
文件,留下一个空行作为文件的第一行。 为了一致性和简单性
规范,POSIX.1-2008 不允许这种行为。 从历史上看,一个 公开地
或程序的可视模式将光标留在读入的最后一行,而不是第一行。 为了
一致性,POSIX.1-2008 不允许这种行为。

的历史实现 ex 无法撤消 从读取的命令
程序的输出。 为了一致性,POSIX.1-2008 不允许这种行为。

从历史上看,在 exvi 成功后的消息 or 指定的命令
“字符”,而不是“字节”。 POSIX.1-2008 要求字节数为
显示,而不是字符数,因为多字节可能很难
实现来确定读取的字符数。 鼓励实施
澄清向用户显示的消息。

从历史上看,除了 FIFO 之外,不允许对常规类型以外的文件进行读取
可以读取文件(可能只是因为它们不存在时 exvi
原来写的)。 因为历史 ex 评估 读! ! 等效地,
没有可选的方法来强制读取。 POSIX.1-2008 允许,但不允许
要求,这种行为。

恢复
编辑器的一些历史实现允许用户恢复编辑缓冲区
上一个编辑会话中的内容,然后退出而不保存这些内容(或
明确地丢弃它们)。 POSIX.1-2008 的意图是要求编辑缓冲区
被视为已经修改是为了防止这个用户错误。

倒带
历史实现支持 倒带 用户编辑时的命令
列表中的第一个文件; 也就是说,该文件 倒带 命令将编辑。 POSIX.1-2008
要求符合历史惯例。

替代
从历史上看, ex 接受了 r 选项 s 命令。 的效果 r 选项是
使用任何命令中使用的最后一个正则表达式作为模式,与 ~
命令。 的 r POSIX.1-2008 不需要该选项。 从历史上看, cg 选项
被切换; 例如,命令 :s/abc/def/ 是一样的 s/abc/def/ccccgggg.
为简单起见,POSIX.1-2008 不允许这种行为。

波浪号命令通常用于替换最后一个搜索 RE。 例如,在
序列:

s/红/蓝/
/绿色
~

~ 命令等效于:

s/绿色/蓝色/

从历史上看, ex 接受以下所有表格:

s/abc/定义/
s/abc/def
s/abc/
年代/美国广播公司

POSIX.1-2008 要求符合这一历史惯例。

s 命令假定 '^' 字符只占一列
展示。 大部分 exvi 规范假定只占一个
显示中的单列。 没有已知的字符集不适用
真实的。

从历史上看,替代命令的最终列位置是基于先前的
列移动; 搜索后跟替换的模式将离开该列
位置不变,而 0 命令后跟替换将更改列
位置到第一个非. 为了规范的一致性和简单性,
POSIX.1-2008 要求最终列位置始终设置为第一个
非.


历史实现重新显示了每次出现的所有选项 所有
关键词。 POSIX.1-2008 允许但不要求这种行为。

标签
没有要求去哪里 exvi 应查找标签引用的文件
入口。 历史实践一直是寻找在 标签 文件,基于
当前目录。 在某些实现中发现的一个有用的扩展是基于外观
在包含包含该条目的标签文件的目录上。 没有要求是
关于使用标记文件中标记的哪个引用。 这是故意的,在
为了允许扩展,例如一个标签的标签文件中的多个条目。

因为用户经常指定许多不同的标签文件,其中一些不需要相关
或在任何特定时间存在,POSIX.1-2008 要求有关问题的错误消息
仅当未找到请求的标签时才显示标签文件,然后仅显示一次
每次 行李牌 编辑选项已更改。

当前编辑缓冲区未修改的要求仅在文件
标签条目所指示的与当前文件不同(由当前文件定义)
路径名)。 从历史上看,如果文件名发生更改,文件也会重新加载
好像文件名与当前路径名不同。 为了一致性和简单性
规范,POSIX.1-2008 不允许这种行为,要求名称是
决定的唯一因素。

从历史上看, vi 只搜索当前文件中从当前光标到
文件的结尾,因此,如果 包裹扫描 选项未设置,标​​签发生在之前
未找到当前光标。 POSIX.1-2008 认为这是一个错误,并且实现
无论如何,都需要搜索文件中的第一个匹配项。

解开
复原 描述故意使用“修改”这个词。 这 复原 命令不是
旨在撤消替换编辑缓冲区内容的命令,例如 编辑,
下页, 行李牌恢复.

光标定位后 复原 命令与历史不一致 vi,有时候
试图恢复原来的光标位置(全球化, 复原v 命令),和
有时,在存在地图的情况下,将光标放在添加或更改的最后一行
而不是第一个。 POSIX.1-2008 需要简化的行为以实现一致性和
规范的简单性。

版本
版本 由于没有广泛接受的命令,因此无法准确指定命令
定义版本信息应包含的内容。 鼓励实施
做一些相当聪明的事情。

填写
从历史上看,在 exvi 成功后的消息 or 指定的命令
“字符”,而不是“字节”。 POSIX.1-2008 要求字节数为
显示,而不是字符数,因为在多字节中可能很难
实现来确定写入的字符数。 实现是
鼓励澄清向用户显示的消息。

允许实现定义的测试,以便实现可以做出额外的
检查; 例如,对于锁或文件修改时间。

从历史上看,尝试追加到不存在的文件会导致错误。 它已被留下
在 POSIX.1-2008 中未指定以允许实现让 成功,所以
附加语义类似于历史 长山壕.

历史的 vi 允许写入空的编辑缓冲区。 然而,由于路 vi 得到了
处理“空”文件的方法是在编辑缓冲区中始终有一行,不
不管怎样,它把它们写成一个空行的文件。 POSIX.1-2008 不允许
这种行为。

从历史上看, ex 将标准输出和标准错误恢复到它们的值 ex
在写入程序之前被调用。 这可能会干扰终端
配置以及某些终端的安全问题。 POSIX.1-2008 没有
允许这一点,要求程序输出被捕获和显示,就好像由 ex
打印 命令。

调整 窗口
从历史上看,行数设置为 滚动 选项如果类型
字符是文件结尾。 这个特性在大多数历史实现中都被破坏了
但是,以前没有记录在任何地方。 为此,POSIX.1-2008 坚决
沉默的。

从历史上看,在 z 命令是-敏感和 z +z - 做了不同的事情
z+z− 因为无法将类型与标志区分开来。 (命令 z .
z = 在历史上是无效的。)POSIX.1-2008 要求符合这个历史
实践。

从历史上看,在 z 命令进一步- 敏感的,因为 不可能是
- 分隔; 例如,命令 z= 5z− 5 也无效。 因为
对于类型字符或标志都没有歧义,这不是
POSIX.1-2008 允许。

逃生
从历史上看, ex 过滤命令只读取命令的标准输出,让
标准错误像往常一样出现在终端上。 这 vi 然而,实用程序同时阅读
标准输出和标准错误。 POSIX.1-2008 需要后一种行为 ex
vi,为了一致性。

转移 转移
从历史上看,可以添加移位字符以增加
命令; 例如, << 突出的(或 >>> indented) 行 3 级缩进
而不是默认的 1. POSIX.1-2008 要求符合历史惯例。

-D
从历史上看, ‐D 命令删除提示,为用户提供
编辑缓冲区中行的完整呈现。 POSIX.1-2008 不要求这样做;
如果可能,鼓励实现提供它。 从历史上看, -D
命令采取,然后忽略,一个 . POSIX.1-2008 不允许这种行为。

填写 Line 联系电话
从历史上看,在 ex = 命令,在执行时 ex 空编辑缓冲区中的模式,报告
0,并从打开或可视模式,报告 1。为了一致性和简单性
规范,POSIX.1-2008 不允许这种行为。

执行
从历史上看, ex 没有正确处理包含文本输入命令(即
附加, 更改) 在执行的缓冲区中。 POSIX.1-2008 不允许这样做
排除一致性。

从历史上看,正在执行的缓冲区的逻辑内容不会改变,如果
缓冲区本身被正在执行的命令修改; 也就是说,缓冲区执行确实
不支持自修改代码。 POSIX.1-2008 要求符合历史惯例。

从历史上看,在 @ 命令占用了一系列行,并且 @ 缓冲区执行一次
行,与当前行 ('。') 设置为每个指定的行。 POSIX.1-2008 要求
符合历史惯例。

一些历史实现没有注意到缓冲区执行期间是否发生错误。
这一点,再加上能够为 ex @ 命令,使之
微不足道的导致他们下降 核心. POSIX.1-2008 要求实施停止
如果发生任何错误,如果指定的行不存在,或者如果
编辑缓冲区本身的内容被替换(例如,缓冲区执行 ex
编辑: 命令)。

原价 表达式 in ex
历史惯例是把字符中的替换部分放在最后 s 命令-
也就是说,那些通过输入 '~' 在正则表达式中——没有进一步
由正则表达式引擎扩展。 所以,如果字符包含字符串
“一个。,” 他们会匹配 '一种' 其次是 “。” 并不是 '一种' 后跟任何字符。
POSIX.1-2008 要求符合历史惯例。

编辑 附加选项 in ex
以下段落描述了一些编辑选项的历史行为
无论出于何种原因,不包含在 POSIX.1-2008 中。 执行力很强
鼓励仅在完全支持此处描述的功能时才使用这些名称。

扩展 扩展 在某些实现中使用了编辑选项 vi 提供
扩展正则表达式而不是基本正则表达式 此选项
从 POSIX.1-2008 中省略,因为它不是广泛的历史实践。

编辑选项历史上会导致屏幕闪烁而不是哔哔声
关于错误。 POSIX.1-2008 中省略了此选项,因为在
一些历史实现。

硬标签 硬标签 编辑选项历史上定义了之间的列数
硬件选项卡设置。 POSIX.1-2008 中省略了此选项,因为它是
认为不再普遍有用。

模式行 模式行 (有时称为 模式线) 历史上导致的编辑选项 ex or
vi 读取文件的第一行和最后五行以获取编辑器命令。 这
选项是一个安全问题,强烈建议供应商删除它
从历史实现。

打开 打开 编辑选项历史上不允许 ex 打开视觉 命令。
省略了此编辑选项,因为这些命令是必需的
POSIX.1-2008。

优化 优化 编辑选项过去通过设置
终端不做自动打印更多字符时
多于一条逻辑输出线。 POSIX.1-2008 中省略了此选项
因为它是为没有可寻址光标的终端设计的,它们是
很少,如果有的话,仍然使用。

统治者 统治者 在某些实现中使用了编辑选项 vi 提出一个
用户的当前行/列标尺。 POSIX.1-2008 中省略了此选项
因为它不是普遍的历史实践。

来源 来源 历史上导致的编辑选项 ex or vi 源启动文件
由运行编辑器的用户以外的用户拥有。 这个选项是
安全问题,强烈建议供应商将其从他们的
实现。

超时 超时 编辑选项历史上启用了(现在是标准的)功能仅
在返回可能是宏的一部分的键之前等待一小段时间。
POSIX.1-2008 中省略了此功能,因为它的行为现在是标准的,
它的用途并不广泛,而且很少被记录在案。

详细 详细 在某些实现中使用了编辑选项 vi 引起 vi
输出常见错误的错误消息; 例如,试图移动
光标越过行的开头或结尾,而不是只提醒
屏幕。 (历史的 vi 只提醒终端并且不显示任何消息
对于此类错误。 历史编辑器选项 简洁 没有选择何时
显示错误消息,它只会或多或少地产生现有的错误消息
详细。)POSIX.1-2008 中省略了此选项,因为它并不普遍
历史实践; 但是,如果他们愿意,鼓励实现者使用它
为天真的用户提供错误消息。

包装 包装 在某些实现中使用了编辑选项 vi 指定
从左边距而不是从右边距测量的自动边距
利润。 这在使用多种屏幕尺寸编辑
单个文件。 POSIX.1-2008 中省略了此选项,因为它不是
广泛的历史实践; 但是,鼓励实现者使用它
如果他们添加此功能。

自动缩进, ai
从历史上看,命令 0a 没有做任何自动缩进,不管当前
第 1 行的缩进。POSIX.1-2008 要求第 1 行中存在的任何缩进
用过的。

自动打印, ap
从历史上看,在 自动打印 编辑选项不完全一致或仅基于
修改编辑缓冲区。 例外是 命令(当从
文件,但不是来自过滤器), 附加, 更改, , 全球化v 命令,所有
没有受到影响 自动打印,并 行李牌 命令,它受
自动打印. POSIX.1-2008 要求符合历史惯例。

从历史上看,在 自动打印 选项仅适用于输入的多个命令中的最后一个
使用分隔符; 例如, 删除 受到影响 自动打印,
但是 删除|版本 不是。 POSIX.1-2008 要求符合历史
实践。

自动写入, aw
附加 '! 字符 ex 下页 命令以避免执行自动写入
在历史实现中不受支持。 POSIX.1-2008 要求行为
匹配另一个 ex 一致性的命令。

忽略大小写, ic
不区分大小写匹配的历史实现( 忽略大小写 编辑选项)铅
在范围表达式中使用大写字符时的反直觉情况。
从历史上看,过程如下:

1. 从编辑缓冲区中取出一行文本。

2. 在文本行中将大写转换为小写。

3. 正则表达式中大写转小写,字符类除外
规格。

4. 将正则表达式与文本匹配。

这意味着,与 忽略大小写 实际上,文本:

周六 on

将被匹配

/^该/

但不是:

/^[A−Z]他/

为了与实现正则表达式的其他命令保持一致,POSIX.1-2008 确实
不允许这种行为。

段落,
ISO POSIX-2:1993 标准为默认 段落部分 编辑选项
实现定义的,认为它们在历史上是面向 UNIX 系统的 的troff
文本格式化程序,“便携式用户”可以使用 {, }, [[, ]], () 命令在
打开或可视模式并让光标停在意想不到的地方。 POSIX.1-2008 规定
它们在 POSIX 语言环境中的值,因为不寻常的分组(它们仅在分组时起作用
一次变成两个字符)意味着它们不能用于通用目的
运动,不管。

只读
鼓励实现向用户提供尽可能好的信息
文件的只读状态,除了他们不应该考虑
当前进程的特权。 这为用户提供了一个安全网,因为
他们必须强制覆盖只读文件,即使在运行其他文件时也是如此
特权。

只读 编辑选项规范在很大程度上符合历史惯例。 唯一的
不同之处在于历史实现没有注意到用户已经设置了
只读 在文件由于某种原因已被标记为只读的情况下的编辑选项,
并因此重新初始化 只读 下次编辑选项的内容
编辑缓冲区被替换。 POSIX.1-2008 不允许这种行为。

报告
复制到缓冲区的行与删除行的交互方式不同的要求是
历史实践。 例如,如果 报告 编辑选项设置为3,删除3行
将导致编写报告,但在编写报告之前必须复制 4 行。

要求 ex 全球化, v, 打开, 复原视觉 命令呈现报告
基于在命令执行期间添加或删除的总行数,并且
执行的命令 全球化v 命令不存在报告,是历史的
实践。 POSIX.1-2008 通过要求缓冲区执行扩展了历史实践
同样对待。 造成这种情况的原因有两个。 从历史上看,只有
用户可以看到从缓冲区执行的最后一个命令,因为每个新报告都会
覆盖最后一个。 此外,标准开发者认为缓冲执行
有更多的共同点 全球化v 命令比其他命令 ex 命令,和
为了规范的一致性和简单性,应该表现相似。

表演赛, sm
光标在匹配字符上花费的时间长度未指定,因为
系统的计时能力通常是不准确的和可变的。 时间应该很长
足够让用户注意到,但不足以让用户生气。 一些
的实现 vi 添加了一个 比赛时间 允许用户设置数字的选项
0,1 秒的间隔,光标停在匹配的字符上。

表演模式
表演模式 选项已在一些历史实现中使用 exvi
在打开或可视模式下显示当前编辑模式。 编辑模式有
通常包括“命令”和“输入”,有时还有其他模式,例如
“替换”和“改变”。 该字符串通常显示在
屏幕在最右上角。 另外,前面的 '*' 经常表示的字符
编辑缓冲区的内容是否已被修改。 后一个显示器有
有时是其中的一部分 表演模式 选项,有时基于另一个选项。 这
选项在 4 BSD 历史实现中不可用 vi, 但被视为
通常有用,特别是对新手用户,并且是 POSIX.1-2008 所要求的。

SMD 速记 表演模式 选项并不存在于所有历史中
编辑器的实现。 POSIX.1-2008 需要它,以保持一致性。

并非所有编辑器的历史实现都显示命令模式的模式字符串,
通过缺少模式字符串来区分命令模式和文本输入模式。
POSIX.1-2008 允许这种行为与历史实践保持一致,但
鼓励实现为两种模式提供显示字符串。

慢开
从历史上看,在 慢开 如果终端波特率较低,则自动设置选项
超过 1200 波特,或者如果波特率为 1200 波特并且 重绘 选项未设置。 这
慢开 选项有两个效果。 首先,在一行中间插入字符时,
光标后的字符不会被向前推,但看起来会被覆盖。
二、新建一行文本时,当前行之后的行不会
向下滚动,但似乎被覆盖。 在这两种情况下,结束文本输入模式
会导致屏幕被刷新以匹配编辑缓冲区的实际内容。
最后,足够智能的终端导致编辑器忽略了
慢开 选项。 POSIX.1-2008 允许大多数历史行为,扩展历史
练习要求 慢开 如果编辑选项由用户设置,则行为。

标签
标签文件的默认路径未指定,因为实现可能有自己的
标签 与历史不符的实现。 默认 标签
选项值可能至少应该包含文件 ./标签.

术语
的历史实现 exvi 忽略更改 术语 之后的编辑选项
初始终端信息已加载。 这是 POSIX.1-2008 允许的; 然而,
鼓励实现允许用户在任何时候修改他们的终端类型
时间。

简洁
从历史上看,在 简洁 编辑选项可选地提供更短、更少描述性的错误
消息,用于一些错误消息。 POSIX.1-2008 允许但不要求这样做。
从历史上看,最常见的视觉模式错误(例如,试图将光标移过去
一行的结尾)没有导致错误消息,而只是警告终端。
希望为新手用户提供消息的实现被敦促这样做是基于
编辑 选项 详细, 并不是 简洁.

窗口
在历史实现中,默认为 窗口 编辑选项基于
波特率如下:

1. 如果波特率小于 1200,则 编辑 选项 w300 设置窗口值; 为了
例如,该行:

w300=12

如果波特率小于 12,则将窗口选项设置为 1200。

2. 如果波特率等于 1200,则 编辑 选项 w1200 设置窗口值。

3. 如果波特率大于 1200,则 编辑 选项 w9600 设置窗口值。

w300, w1200w9600 选项不会出现在 POSIX.1-2008 中,因为它们的
依赖于特定的波特率。

在历史实现中,各种命令显示的窗口大小是
相关但不一定相同 窗口 编辑选项。 例如,尺寸
窗口的设置是由 ex 命令 视觉 10,但它并没有改变
窗口 编辑选项。 然而,改变的价值 窗口 编辑选项确实改变了
重新绘制屏幕时显示的行数。 POSIX.1-2008 没有
为了规范的一致性和简单性,允许这种行为,并且
要求所有更改显示的行数的命令都通过
设置值 窗口 编辑选项。

包边, wm
从历史上看,在 包边 选项不影响地图插入的字符也有
相关 小号; 例如 :地图 K 5aABC DEF. 不幸的是,有广泛使用
依赖于这种行为的地图。 为了规范的一致性和简单性,
POSIX.1-2008 不允许这种行为。

从历史上看, 包边 使用所有字符的列显示宽度计算
屏幕上。 例如,使用 “^我” 代表人物
名单 设置了编辑选项,其中 '^''一世' 每个都占据了一个单独的列
屏幕,将计算 包边 基于每个值为 2 . 这
编辑选项同样改变了行的有效长度。 POSIX.1-2008
要求符合历史惯例。

该标准的早期版本允许使用八字节以外的字节实现
位,但这已在此版本中进行了修改。

未来 如何前往


没有。

使用 onworks.net 服务在线使用 exposix


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    移相器
    移相器
    Phaser 是一个快速、免费且有趣的开放式
    源 HTML5 游戏框架,提供
    WebGL 和 Canvas 渲染
    桌面和移动网络浏览器。 游戏
    可以共...
    下载移相器
  • 2
    附庸引擎
    附庸引擎
    VASSAL 是一个游戏引擎,用于创建
    电子版传统板
    和纸牌游戏。 它提供支持
    游戏块渲染和交互,
    和...
    下载 VASSAL 引擎
  • 3
    OpenPDF - iText 的分支
    OpenPDF - iText 的分支
    OpenPDF 是一个 Java 库,用于创建
    以及使用 LGPL 编辑 PDF 文件和
    MPL 开源许可证。 OpenPDF 是
    iText 的 LGPL/MPL 开源继承者,
    一个...
    下载 OpenPDF - iText 的分支
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - 自动化系统
    地球科学分析 - 是地理
    信息系统 (GIS) 软件
    地理数据的强大功能
    加工和分析...
    下载 SAGA GIS
  • 5
    Java/JTOpen 工具箱
    Java/JTOpen 工具箱
    IBM Toolbox for Java / JTOpen 是一个
    Java类库支持
    客户端/服务器和互联网编程
    模型到运行 OS/400 的系统,
    i5/OS, 哦...
    下载 Java/JTOpen 工具箱
  • 6
    D3.js
    D3.js
    D3.js(或数据驱动文档的 D3)
    是一个 JavaScript 库,它允许你
    生成动态的交互式数据
    Web 浏览器中的可视化。 与D3
    您...
    下载 D3.js
  • 更多 ”

Linux 命令

Ad