这是 viposix 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
vi — 面向屏幕的(视觉)显示编辑器
概要
vi [-rR] [-c 命令] [-t 标签串] [-w 尺寸] [文件...]
商品描述
此实用程序应在同时支持用户便携实用程序的系统上提供
选项并定义 POSIX2_CHAR_TERM 符号。 在其他系统上,它是可选的。
这款 vi (视觉)实用程序是一个面向屏幕的文本编辑器。 只有开放和视觉模式
POSIX.1-2008 中描述了编辑器; 见行编辑器 ex 额外编辑
使用的能力 vi. 用户可以来回切换 vi 和 ex 并执行
ex 来自内部的命令 vi.
此参考页面使用术语 编辑 缓冲 描述当前的工作文本。 不
这个术语暗示了具体的实现。 所有编辑更改都在
编辑缓冲区,并且对它的任何更改都不会影响任何文件,直到编辑器命令写入
文件中。
使用时 vi,终端屏幕充当进入编辑缓冲区的窗口。 所做的更改
到编辑缓冲区应反映在屏幕显示中; 光标的位置
屏幕上应指示编辑缓冲区内的位置。
某些终端不具备支持完整功能所需的所有功能 vi
定义。 当这些终端不能支持这些命令时,这种情况
不应产生诸如“not an editor command”之类的错误消息或报告语法
错误。 实现可以接受命令并在屏幕上产生结果
这是未能成功满足本卷要求的结果
POSIX.1-2008 或报告描述与终端相关的缺陷的错误。
配置
这款 vi 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分 12.2,
公用事业 句法 指南,除了 '+' 可以被认为是一个选项分隔符
以及 '-'.
应支持以下选项:
-c 命令
查看 ex 命令说明 -c 选项。
-r 查看 ex 命令说明 -r 选项。
-R 查看 ex 命令说明 -R 选项。
-t 标签串
查看 ex 命令说明 -t 选项。
-w 尺寸 查看 ex 命令说明 -w 选项。
操作数
请参阅操作数部分 ex 用于描述支持的操作数的命令
此 vi 命令。
标准输入
如果标准输入不是终端设备,则结果未定义。 标准输入
由一系列命令和输入文本组成,如扩展描述中所述
部分。
如果从标准输入读取返回错误,或者如果编辑器检测到结束 -
来自标准输入的文件条件,它应等效于 SIGHUP 异步
事件。
INPUT FILES
请参阅输入文件部分 ex 命令用于输入文件的描述
通过支持 vi 命令。
环境 变数
请参阅环境变量部分 ex 环境变量的命令
影响执行 vi 命令。
异步 新闻
请参阅 ASYNCHRONOUS EVENTS 部分 ex 对于影响
执行 vi 命令。
标准输出
如果标准输出不是终端设备,则会出现未定义的结果。
标准输出可用于向用户写提示、信息性消息、
并从文件中写入行。
斯特德
如果标准输出不是终端设备,则会出现未定义的结果。
标准错误应仅用于诊断消息。
OUTPUT FILES
请参阅输出文件部分 ex 用于输出文件描述的命令
通过支持 vi 命令。
EXTENDED 商品描述
如果终端不具备支持未指定部分所需的能力
的 vi 定义,实现应开始于 ex 模式或开放模式。
否则,初始化后, vi 应处于命令模式; 文本输入模式可以
由用于插入或更改文本的多个命令之一输入。 在文本输入模式下,
可用于返回命令模式; 的其他用途稍后将在
这个部分; 看 终止 命令 or 输入 时尚.
初始化 in ex 和 vi
参见 初始化 in ex 和 vi 的描述 ex 和 vi 初始化 vi
效用。
命令 描述 in vi
本参考页中使用以下符号来表示命令的参数。
缓冲 见说明 缓冲 在扩展描述部分 ex
公用事业; 看 命令 描述 in ex.
在打开和可视模式下,当命令概要同时显示 [缓冲]和[数]
在命令名称之前,它们可以按任一顺序指定。
数 用作大多数命令的可选参数的正整数,要么给出
重复计数或作为大小。 这个参数是可选的,默认为 1,除非
另有规定。
概要行 vi 命令-G, -L, -R,
-], %, &, ^, D, m, M, Q, u, U及 ZZ 没有 数 作为可选
争论。 无论如何,指定一个 数 对这些
命令,以及任何指定的 数 将被忽略。
运动 使用的可选尾随参数 !, <, >, c, d及 y 命令,即
用于指示应受命令影响的文本区域。 这
动作可以是重复的命令字符之一,也可以是多个命令字符之一
other vi 命令(在下表中列出)。 每个适用的命令
指定重复命令匹配的文本区域; 每个命令
可以用作运动命令,指定它影响的文本区域。
采取的命令 运动 参数对行或字符进行操作,
视情况而定。 在线路上运行时,所有落下的线路
部分或全部在为命令指定的文本区域内
做作的。 对字符进行操作时,仅对指定字符中的确切字符进行操作
文本区域将受到影响。 每个运动命令都单独指定了这一点。
当可能是运动命令的命令不用作运动命令时,它们
应将当前位置设置为指定的当前行和列。
以下命令应为有效的光标移动命令:
( - j H
) $ k L
[[ % l M
-H ]] _ n N
-N { ; t T
-P } ? w W
^ b B
+ e E
| f F
/ h G
不限 数 指定给具有关联运动命令的命令
应应用于运动命令。 如果一个 数 应用于两个命令
及其关联的运动命令,效果应该是相乘的。
本节使用以下符号来指定编辑缓冲区中的位置:
当前 字符
当前由光标指示的字符。
end of a 线
位于最后一个非(如果有)和终止
的一条线。 对于空行,此位置与开头重合
行的。
end of 此 编辑 缓冲
与编辑缓冲区中最后一行的结尾相对应的位置。
本节使用以下符号来指定命令操作:
大字 在 POSIX 语言环境中, vi 应承认四种 大词:
1. 最大序列非前面和后面的字符
字符或行的开头或结尾或编辑缓冲区
2. 一个或多个连续空行
3. 编辑缓冲区的第一个字符
4.最后一个非在编辑缓冲区中
字 在 POSIX 语言环境中, vi 应识别五种词:
1. 字母、数字和下划线的最大序列,两端分隔
方式:
-- 字母、数字或下划线以外的字符
-- 一行的开头或结尾
-- 编辑缓冲区的开始或结束
2. 字母、数字、下划线或下划线以外的最大字符序列
字符,在两端分隔:
-- 一个字母、数字、下划线
—— 人物
-- 一行的开头或结尾
-- 编辑缓冲区的开始或结束
3. 一个或多个连续空行
4. 编辑缓冲区的第一个字符
5.最后一个非在编辑缓冲区中
部分 边界
A 部分 边界 是以下之一:
1. 第一个字符是 a 的行
2. 第一个字符是左花括号 ('{')
3. 第一个字符是 a 的行和谁的第二个和第三个
字符匹配两个字符对 部分 编辑选项(见 ed)
4. 第一个字符是 a 的行和唯一的其他角色
匹配两个字符对中的第一个字符 部分 编辑
选项,其中双字符对的第二个字符是
5.编辑缓冲区的第一行
6.如果编辑缓冲区的最后一行为空,则编辑缓冲区的最后一行
或者如果它是一个 ]] or } 命令; 否则,最后一个非最后的
编辑缓冲区的行
第 边界
A 第 边界 是以下之一:
1. 一段边界
2. 第一个字符是 a 的行和谁的第二个和第三个
字符匹配两个字符对 段落 编辑选项(见 ed)
3. 第一个字符是 a 的行和唯一的其他角色
匹配两个字符对中的第一个字符 段落 编辑
选项,其中双字符对的第二个字符是
4. 一个或多个连续空行
记得 搜索、 方向
见说明 记得 搜索、 方向 in ed.
句子 边界
A 句子 边界 是以下之一:
1. 段落边界
2.第一个非发生在段落边界之后
3.第一个非发生在('。'),
('!), 或者('?),然后是两个字符或结尾
一条线; 任意数量的右括号(')'), 右括号 (']'),
双引号 ('"'),或单引号 ( ) 字符可以出现
在标点符号和两者之间字符或行尾
在描述的其余部分中 vi 实用程序,术语“缓冲线”是指
编辑缓冲区中的一行,术语“显示行”是指编辑缓冲区中的一行或多行
显示屏用于显示一条缓冲线。 术语“当前行”是指
特定的“缓冲线”。
如果屏幕上有显示行没有对应的缓冲行
因为它们对应于文件末尾之后的行,所以它们应该是
显示为单个('~') 字符,加上终止.
屏幕的最后一行应用于报告错误或显示信息
消息。 它还应用于显示“面向行的命令”的输入(/, ?,
:及 !)。 执行面向行的命令时,编辑器应输入文本输入
mode 在屏幕的最后一行,使用相应的命令字符作为提示
人物。 (在这种情况下 ! 命令,相关的动作应由
用户在编辑器进入文本输入模式之前。)用户输入的行应为
终止于,一个非-V-转义,或未转义
. 如果字符数超过需要显示宽度减去一列的字符数,则未指定
可以输入屏幕列数。
如果执行的任何命令覆盖了屏幕的一部分而不是最后一个
屏幕的行(例如, ex 暂停 or ! 命令),除了 ex 壳
命令,在屏幕刷新前会提示用户输入一个字符
编辑会话继续。
字符应占据屏幕上设置的列数 制表位 编辑
选项(见 ed),除非显示前的列数少于该列数
将导致显示线折叠的边距; 在这种情况下,他们只能采取
增加到该边界的列数。
光标应放置在当前行上并相对于当前列作为
由以下各节中描述的每个命令指定。
在打开模式下,如果当前行尚未显示,则应显示。
在可视模式下,如果当前行不显示,则显示的行
应展开、滚动或重绘以导致当前未指定的部分
要显示的行。 如果屏幕重绘,不超过显示行数
由值指定 窗口 应显示编辑选项(除非当前
行不能在指定的显示行数内完全显示 窗口
编辑选项),当前行应尽可能靠近中心
尽可能显示线(在线的距离所施加的限制内
从编辑缓冲区的开头或结尾)。 如果当前行在第一行之前
显示和屏幕滚动的行,当前行的未指定部分
应放在显示器的第一行。 如果当前行在最后一行之后
显示和屏幕滚动的行,当前行的未指定部分
应放在显示的最后一行。
在可视模式下,如果编辑缓冲区中的一行(当前行除外)没有
完全适合显示器底部的线条,可用于其
演示文稿,编辑器可以选择不显示该行的任何部分。 的线条
由于这个原因,不包含来自编辑缓冲区的文本的显示应该每个
由单个 '@' 字符。
在可视模式下,编辑器可能会出于未指明的原因选择不更新
显示对应于底层编辑缓冲区文本。 显示的线条
由于这个原因,不能正确对应于编辑缓冲区中的文本应包含一个
单 '@' 字符(加上终止),以及-R 命令应
使编辑器更新屏幕以正确表示编辑缓冲区。
设置当前列的打开和可视模式命令将其设置为
显示,而不是行中的字符位置。 但是,在这种情况下,列
应为无限宽度显示计算显示中的位置; 例如,
与作为已折叠行的一部分的字符相关的列
额外的屏幕行将从显示行列偏移缓冲行
开始,而不是从特定显示行的开头。
显示中的显示光标列是基于当前列的值,如
接下来,依次应用每个规则:
1. 如果当前列在被显示使用的最后一个显示行列之后
行,显示光标列应设置为最后占用的显示行列
通过最后一个非在当前行; 否则,显示光标列
应设置为当前列。
2.如果在显示行栏中显示部分字符
由显示光标指定的列需要多于一个显示行
柱:
一种。 如果在文本输入模式下,将显示光标列调整到第一个
显示行列,其中显示该字符的任何部分。
湾否则,将显示光标列调整到最后显示行
显示该字符的任何部分的列。
当前列不应因这些对显示光标列的调整而改变。
如果在解析或执行一个错误 vi 命令:
* 终端将收到警报。 执行 vi 命令应停止,光标
(例如,当前行和列)不得进一步修改。
* 除非以下命令部分另有说明,否则未指定
是否应显示信息性消息。
* 任何部分输入 vi 命令将被丢弃。
* 如果 vi 命令产生于 地图 扩展,所有字符 地图
扩展应被丢弃,除非另有规定 地图 命令(见
ed).
* 如果 vi 命令由缓冲区的执行产生,没有进一步的命令引起
通过执行缓冲区应被执行。
页 向后
简介:
[数] -B
如果处于开放模式,则-B 命令的行为应与 z 命令。
否则,如果当前行是编辑缓冲区的第一行,则为错误。
如果 窗口 编辑选项小于 3,显示最后一行的屏幕
显示部分应为:
(当前 第一 线) -1
否则,显示一个屏幕,其中显示的第一行应为:
(当前 第一 线) - 数 x ((窗口编辑选项) -2)
如果此计算将导致编辑的第一行之前的行
缓冲区,显示的第一行应显示第一行的某些部分
编辑缓冲区。
电流 线:如果屏幕上没有前一显示的行,则设置为最后一个
显示行; 否则,设置为(线 - 显示在此的新行数
屏幕)。
电流 栏: 设置为非.
滑动 向前
简介:
[数] -D
如果当前行是编辑缓冲区的最后一行,则为错误。
如果不 数 被指定, 数 将默认为 数 与上一个相关
-D 或-U 命令。 如果没有以前的-D 或-U
命令, 数 应默认为 滚动 编辑选项。
如果处于打开模式,则从当前行之后的行开始写入行,直到 数
行或文件的最后一行已写入。
电流 线: 如果当前行 + 数 超过编辑缓冲区的最后一行,设置为
编辑缓冲区的最后一行; 否则,设置为当前行 + 数.
电流 栏: 设置为非.
滑动 向前 by Line
简介:
[数] -E
显示当前显示的最后一行之后的行数行。
如果显示编辑缓冲区的最后一行,则为错误。 如果没有
线 数 当前显示的最后一行之后的行,显示的最后一行
应显示编辑缓冲区最后一行的某些部分。
电流 线: 如果显示前一个当前字符,则不变; 否则,设置为
显示的第一行。
电流 栏: 不变。
页 向前
简介:
[数] -F
如果处于开放模式,则-F 命令的行为应与 z 命令。
否则,如果当前行是编辑缓冲区的最后一行,则为错误。
如果 窗口 编辑选项小于 3,显示第一行的屏幕
显示部分应为:
(当前 最后 线)+1
否则,显示一个屏幕,其中显示的第一行应为:
(当前 第一 线)+ 数 x ((窗口编辑选项) -2)
如果此计算将导致编辑缓冲区最后一行之后的行,
显示的最后一行应显示编辑的最后一行的某些部分
缓冲。
电流 线:如果屏幕上没有保留来自前一个显示的行,则设置为第一个
显示行; 否则,设置为(线 + 显示在此的新行数
屏幕)。
电流 栏: 设置为非.
屏 显: 资讯
简介:
-G
该命令等效于 ex 文件 命令。
移动 光标 向后
简介:
[数] -H
[数] h
电流 抹去 字符(见stty)
如果当前行的当前字符之前没有字符,则为
一个错误。 如果少于 数 当前行的前一个字符, 数
应调整为该行前面的字符数。
如果用作运动命令:
1. 文本区域应从起始光标前的字符到和
包括 数起始光标前的第 th 个字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置 (栏 - 占用的列数 数 字符结尾
与上一个当前列)。
移动 Down
简介:
[数]
[数] -J
[数] -M
[数] -N
[数] j
[数]
[数] +
如果少于 数 编辑缓冲区中当前行之后的行,应为
一个错误。
如果用作运动命令:
1. 文本区域应包括起始行和下一行 数 − 1 行。
2. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
电流 线: 调成 当前 线+ 数.
电流 栏: 设置为非为了, -M,和 + 命令;
否则,不变。
清除 和 重新显示
简介:
-L
如果处于打开模式,则清屏并重新显示当前行。 否则,清除并
重新显示屏幕。
电流 线: 不变。
电流 栏: 不变。
移动 Up
简介:
[数] -P
[数] k
[数] -
如果少于 数 编辑缓冲区中当前行之前的行,应为
一个错误。
如果用作运动命令:
1. 文本区域应包括起始行和上一个 数 线。
2. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
电流 线: 调成 当前 线 - 数.
电流 栏: 设置为非为了 - 命令; 否则,不变。
重画 屏风
简介:
-R
如果任何行已从显示屏上删除并在屏幕上标记为已删除
终端使用 @ 约定(参见扩展描述部分的开头),
它们应重新显示以匹配编辑缓冲区的内容。
未指定行是否标记为 @ 因为它们不适合终端
显示会受到影响。
电流 线: 不变。
电流 栏: 不变。
滑动 落后
简介:
[数] -U
如果当前行是编辑缓冲区的第一行,则为错误。
如果不 数 被指定, 数 将默认为 数 与上一个相关
-D 或-U 命令。 如果没有以前的-D 或-U
命令, 数 应默认为 滚动 编辑选项。
电流 线:如果 数 大于当前行,设置为1; 否则,设置为
当前行 - 数.
电流 栏: 设置为非.
滑动 落后 by Line
简介:
[数] -Y
显示行 数 当前显示的第一行之前的行。
如果当前行是编辑缓冲区的第一行,则为错误。 如果这
计算将导致在编辑缓冲区的第一行之前的行,
显示器的第一行应显示编辑缓冲区第一行的某些部分。
电流 线: 如果显示前一个当前字符,则不变; 否则,设置为
显示的第一行。
电流 栏: 不变。
编辑 此 备用 文件
简介:
-^
该命令等效于 ex 编辑 命令,使用备用路径名作为
它的论点。
终止 命令 or 输入 时尚
简介:
如果部分 vi 命令(由至少一个定义,非数 字符)已经
输入,丢弃 数 和命令字符。
否则,如果没有输入命令字符,并且是一个结果
地图扩展,终端将收到警报, 性格将被丢弃,
但它不会是一个错误。
否则,它将是一个错误。
电流 线: 不变。
电流 栏: 不变。
搜索 标签串
简介:
-]
如果当前字符不是单词或,应该是错误。
该命令等效于 ex 行李牌 命令,带有该命令的参数
定义如下。
如果当前字符是:
1. 跳过所有光标后到行尾的字符。
2.如果到达行尾,则为错误。
然后,论证 ex 行李牌 命令应为当前字符和所有后续字符
字符,直到第一个非单词字符或行尾。
移动 光标 向前
简介:
[数]
[数] 我(嗯)
如果少于 数 非当前光标后的字符
线, 数 应调整为非光标后的字符
在线上。
如果用作运动命令:
1. 如果当前或 数光标后的第 th 个字符是最后一个非在里面
行,文本区域应由当前字符组成,包括
最后一个非在行中。 否则,文本区域应来自
当前字符直到但不包括 数光标后的第 th 个字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
如果没有非当前行当前字符后的字符,
这将是一个错误。
电流 线: 不变。
电流 栏: 设置为显示任何部分的最后一列 数第一个字符
在当前字符之后。
更换 文本 - 成果 在 外壳 命令
简介:
[数] ! 运动 shell 命令
如果运动命令是 ! 命令重复:
1.如果编辑缓冲区为空且没有 数 已提供,命令应为
相当于 ex :读 ! 命令,有文字输入,不得有文字
复制到任何缓冲区。
2. 否则:
一种。 如果少于 数 编辑缓冲区中当前行之后的 −1 行,
这将是一个错误。
湾文本区域应从当前行到并包括下一行 数
-1 行。
否则,文本区域应为文本区域的任何字符所在的行
指定的运动命令出现。
复制到缓冲区的任何文本都应处于行模式。
该命令等效于 ex ! 指定行的命令。
移动 光标 至 行结束
简介:
[数] $
如果少于(数 −1) 在当前行之后的行
编辑缓冲区。
如果用作运动命令:
1。 如果 数 是1:
一种。 如果该行为空,则应为错误。
湾否则,文本区域应包含从开始的所有字符
光标到最后一个非在行中,包括在内,以及复制到
缓冲区应处于字符模式。
2. 否则,如果起始光标位置在第一个非在
行,文本区域应包括当前和下一个 数 −1 行,
并且保存到缓冲区的任何文本都应处于行模式。
3. 否则,文本区域应包含从起始光标到
最后一个非在该行中 数 -1 行从当前向前
行,并且复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 设置为 当前 线 + 数-1。
电流 栏: 当前列设置为最后一个显示行列
非在行中,如果行为空,则为列位置 1。
当前列应调整到最后一个显示行列
非当前行随着后续命令更改当前行,直到
命令更改当前列。
移动 至 匹配 字符
简介:
%
如果当前位置的字符不是圆括号、方括号或花括号,
在行中向前搜索到这些字符中的第一个。 如果没有这样的字符
找到了,应该是报错。
匹配字符应该是括号、括号或花括号匹配
分别位于当前位置的括号、括号或花括号,或
这是在当前行上找到的。
对于左括号,匹配应如下确定:
1. 将计数器设置为 1。
2. 向前搜索直到找到括号或到达编辑缓冲区的末尾。
3. 如果到达编辑缓冲区的末尾,则为错误。
4. 如果找到左括号,则将计数器加 1。
5. 如果找到右括号,则将计数器减 1。
6. 如果计数器为零,则当前字符为匹配字符。
匹配一个右括号应该是等效的,除了搜索应该是
向后,从起始字符到缓冲区的开头,一个右括号
应将计数器加 1,左括号应将计数器减 XNUMX
1.
括号和花括号的匹配应该是等效的,除了搜索应该是
为打开和关闭括号或打开和关闭花括号完成。 它是实现-
定义是否也搜索和匹配其他字符。
如果用作运动命令:
1. 如果匹配的光标在编辑缓冲区中的起始光标之后,并且
起始光标位置在第一个非非在里面
起始行,并且匹配的光标位置在最后一个非
非在匹配行中,文本区域应由当前行组成
到匹配的行,包括在内,复制到缓冲区的任何文本都应在行中
模式。
2. 如果匹配的光标在编辑缓冲区中的起始光标之前,并且
起始光标位置在最后一个非非在里面
起始行,并且匹配的光标位置在第一个非
非在匹配行中,文本区域应由当前行组成
到匹配的行,包括在内,复制到缓冲区的任何文本都应在行中
模式。
3. 否则,文本区域应由匹配的起始字符组成
字符,包括,复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 设置为匹配字符所在的行。
电流 栏: 设置为匹配字符的任何部分所在的最后一列
显示。
重复新密码 换人
简介:
&
重复之前的替换命令。 该命令等效于 ex &
命令以当前行作为其地址,并且没有 选项, 数或 标志.
回程 至 上一页 语境 at 开始 of Line
简介:
' 字符
如果编辑缓冲区中没有标记为的行,则为错误 字符.
如果用作运动命令:
1. 如果起始光标在标记光标之后,则起始位置
光标和编辑缓冲区中标记的光标应逻辑交换。
2. 文本区域应由起始行组成,包括标记的
行,并且复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
电流 线: 设置为标记所引用的行。
电流 栏: 设置为非.
回程 至 上一页 语境
简介:
` 字符
如果标记的行不再在编辑缓冲区中,则应为错误。 如果标记
行在保存的编号字符位置不再包含字符,应为
好像标记的位置是第一个非.
如果用作运动命令:
1.如果标记的光标在编辑中引用了相同的字符,则报错
buffer 作为起始游标。
2. 如果起始光标在标记光标之后,则起始位置
光标和编辑缓冲区中标记的光标应逻辑交换。
3.如果起始行为空或起始光标在第一行或之前
非非的起始行,并且标记的光标行为空或
标记光标引用标记光标行的第一个字符,文本
区域应由包含从起始光标到的所有字符的行组成
标记的光标行之前的行,包括复制到缓冲区的任何文本
应处于行模式。
4. 否则,如果被标记的游标行为空或被标记的游标引用了一个
字符位于或之前的第一个非非标记的光标行,
文本区域应从起始光标到最后一个非的
标记光标行之前的行(包括)和复制到缓冲区的任何文本都应
处于字符模式。
5. 否则,文本区域应从起始光标(含)到
标记的光标(独占),复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 设置为标记所引用的行。
电流 栏: 设置为最后一列,其中引用的字符的任何部分
标记显示。
回程 至 上一页 部分
简介:
[数] [[
将光标向后移动通过编辑缓冲区到前一个字符的第一个字符
截面边界, 数 倍。
如果用作运动命令:
1. 如果起始光标在起始行的第一个字符或起始行
行为空,边界的第一个字符是
边界线,文本区域应由当前行组成,包括
所在的行 数下一个边界开始,复制到缓冲区的任何文本都应
处于行模式。
2. 如果边界是编辑缓冲区的最后一行或最后一个非的
编辑缓冲区的最后一行,文本区域应由最后一个字符组成
编辑缓冲区直到并包括起始字符,以及保存到
缓冲区应处于字符模式。
3. 否则,文本区域应由起始字符组成,但不包括
包括第一个字符 数th 下一个边界,任何文本复制到
缓冲区应处于字符模式。
如果不用作运动命令:
电流 线: 设置为 数编辑缓冲区中的下一个边界开始。
电流 栏: 设置为最后一列,其中第一个字符的任何部分
数显示下一个边界,如果行为空,则显示列位置 1。
移动 至 点击下一页 部分
简介:
[数] ]]
将光标向前移动通过编辑缓冲区到下一部分的第一个字符
边界, 数 倍。
如果用作运动命令:
1. 如果起始光标在起始行的第一个字符或起始行
行为空,边界的第一个字符是
边界线,文本区域应由当前行组成,包括
所在的行 数第一个边界开始,任何文本复制到缓冲区
应处于行模式。
2. 如果边界是编辑缓冲区的第一行,则文本区域应包括
编辑缓冲区中的第一个字符直到但不包括起始字符
字符,复制到缓冲区的任何文本都应处于字符模式。
3. 否则,文本区域应由文本中的第一个字符组成 数th
上一节的边界直到但不包括起始字符和任何文本
复制到缓冲区应为字符模式。
如果不用作运动命令:
电流 线: 设置为 数编辑缓冲区中的前一个边界
开始。
电流 栏: 设置为最后一列,其中第一个字符的任何部分
数显示前一个边界,如果行为空,则显示列位置 1。
移动 至 (名字) 非- 职务 on 电流 Line
简介:
^
如果用作运动命令:
1.如果线路没有非非字符,或者如果光标位于
第一个非非的行,它应该是一个错误。
2.如果光标在第一个非非行,文本
区域应由当前字符组成,最多但不包括
第一个非非行的。
3.如果光标在第一个非非行,文本
区域应从起始光标之前的字符开始,直到并包括
第一个非非行的。
4. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置为非.
电流 和 Line 以上
简介:
[数] _
如果少于 数 编辑缓冲区中当前行之后的 -1 行,它应该
是一个错误。
如果用作运动命令:
1。 如果 数 小于 2,文本区域应为当前行。
2. 否则,文本区域应包括起始行和下一行 数 - 1
线。
3. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
电流 线: 设置为当前行 + 数 -1。
电流 栏: 设置为非.
移动 返回 至 开始 of 句子
简介:
[数] (
向后移动到句子的开头。 该命令等效于 [[
命令,除了应使用句子边界而不是节
边界。
移动 向前 至 开始 of 句子
简介:
[数] )
向前移动到句子的开头。 该命令等效于 ]]
命令,除了应使用句子边界而不是节
边界。
移动 返回 至 前 段
简介:
[数] {
移回上一段的开头。 此命令应等效于
此 [[ 命令,除了应使用段落边界而不是
节边界。
移动 向前 至 点击下一页 段
简介:
[数] }
前进到下一段的开头。 此命令应等效于
此 ]] 命令,除了应使用段落边界而不是
节边界。
移动 至 获得每个 柱 职务
简介:
[数] |
出于此命令的目的,对于当前显示而言太长的行以及
已折叠的应视为具有单一的、基于 1 的列数。
如果少于 数 当前行中的字符所在的列
显示在屏幕上, 数 应调整为最后一列,其中任何
线的一部分显示在屏幕上。
如果用作运动命令:
1.如果该行为空,或者光标字符与上的字符相同
数行的第 th 列,它应该是一个错误。
2. 如果光标在 数行的第 th 列,文本区域应为
由当前字符组成,最多但不包括
数行的第 th 列。
3. 如果光标在 数行的第 th 列,文本区域应从
起始光标之前的字符直到并包括
数行的第 th 列。
4. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置为字符的任何部分的最后一列
显示在 数 显示行的列。
逆转 找到最适合您的地方 字符
简介:
[数] ,
如果最后 F, f, T或 t 命令是 F, f, T或 t, 该命令等效于
an f, F, t或 T 命令,分别与指定的 数 和同样的搜索
字符。
如果没有以前的 F, f, T或 t 命令,它应该是一个错误。
重复新密码
简介:
[数] .
重复最后 !, <, >, A, C, D, I, J, O, P, R, S, X, Y, a, c, d, i, o, p, r, s, x, y或
~ 命令。 如果这些命令都没有被执行,则应该是一个错误。 命令
(除了进入文本输入模式的命令)作为地图扩展的结果执行,
不得更改最后一个可重复命令的值。
具有相关运动命令的重复命令也应重复运动命令;
但是,任何指定的 数 将取代 数(s) 最初指定为
重复的命令或其关联的运动命令。
如果重复命令的运动分量为 f, F, t或 T, 重复命令
不得设置记住的搜索字符 ; 和 , 命令。
如果重复的命令是 p or P,并且与该命令关联的缓冲区是一个
以小于 9 的数字命名的数字缓冲区,该缓冲区与重复的
命令应设置为逻辑上由前一个缓冲区名称命名的缓冲区
增加 1。
如果重复字符是文本输入命令,则与该命令关联的输入文本
命令按字面重复:
* 输入字符既不是宏也不是缩写扩展。
* 输入字符不会以任何特殊方式解释,除了
, , 和-T 的行为如中所述 输入 时尚
命令 in vi.
电流 线:按照重复命令的说明进行设置。
电流 栏:按照重复命令的说明进行设置。
找到最适合您的地方 原价 口语
简介:
/
如果输入行不包含非字符,相当于一行
仅包含遇到的最后一个正则表达式。 增强的正则表达式
通过支持 vi 描述于 原价 表达式 in ex.
否则,该行将被解释为一个或多个正则表达式,可选
后跟地址偏移量或 vi z 命令。
如果正则表达式不是该行的最后一个正则表达式,或者如果某行
抵消或 z 命令被指定,正则表达式应以
未逃脱的 '/' 字符,不应用作正则表达式的一部分。 如果
正则表达式不是该行的第一个正则表达式,它应该是
前面有零个或多个字符,一个, 零个或多个
字符,和一个领先的 '/' 字符,不应被解释为
正则表达式。 在任何正则表达式之前添加任何内容都将是错误的
这些以外的字符。
每次搜索应从最后一次匹配的第一个字符之后的字符开始
(或者,如果是第一次搜索,则在光标之后)。 如果 包裹扫描 设置了编辑选项后,
搜索应继续到起始光标字符之前的字符; 否则,到
编辑缓冲区的结尾。 如果任何搜索未能找到匹配项,则应为错误,并且
应显示与此相关的信息性消息。
一个可选的地址偏移量(见 解决 in ex) 可以在最后一个正则之后指定
通过包含尾随表达 '/' 正则表达式后的字符和
指定地址偏移量。 此偏移量将来自包含匹配项的行
指定的最后一个正则表达式。 如果行偏移量将是错误的
指示小于 1 或大于编辑缓冲区中最后一行的行地址。 一个
应支持地址偏移为零。 跟随地址应该是错误的
与任何其他字符的偏移人物。
如果不用作运动命令,则可选 z 命令(见 重画 窗口) 可
通过包含尾随在最后一个正则表达式之后指定 '/' 字符后
正则表达式,零个或多个字符,一个 'z', 零个或多个
字符,一个可选的新 窗口 编辑选项值,零个或多个字符,和
位置字符。 效果如同 z 命令执行后 /
命令。 遵循以下规则是错误的 z 命令与任何其他字符
人物。
记住的搜索方向应设置为向前。
如果用作运动命令:
1. 如果最后一个匹配引用了编辑中的相同字符,则应为错误
buffer 作为起始游标。
2. 如果指定了任何地址偏移,则最后一个匹配将按指定的地址进行调整
偏移量如前所述。
3. 如果起始光标在最后一个匹配之后,则起始位置
光标和编辑缓冲区中的最后一个匹配项应逻辑交换。
4. 如果指定了任何地址偏移,则文本区域应由所有行组成
包含从起始光标到最后一个匹配行的字符,包括在内,以及
复制到缓冲区的任何文本都应处于行模式。
5. 否则,如果起始行为空或起始光标位于或之前
第一个非非起始行,最后匹配行为空
或者最后一个匹配从最后一个匹配行的第一个字符开始,文本
区域应由包含从起始光标到的所有字符的行组成
最后一个匹配行之前的行(包括)和复制到缓冲区的任何文本都应
处于行模式。
6. 否则,如果最后一个匹配行为空或最后一个匹配从一个字符开始
或在第一个非非最后一条比赛线的区域
文本应从当前光标到最后一个非之前的行
最后匹配行(包括在内)和复制到缓冲区的任何文本都应为字符
模式。
7. 否则,文本区域应从当前光标(包括),到
最后匹配的第一个字符(独占),以及复制到缓冲区的任何文本都应
处于字符模式。
如果不用作运动命令:
电流 线: 如果找到匹配,设置为最后匹配的行加上地址偏移量,
如果有的话; 否则,不变。
电流 栏: 设置为最后一列,其中第一个字符的任何部分
如果找到匹配项,则显示最后匹配的字符串; 否则,不变。
移动 至 (名字) 字符 in Line
简介:
0 (零)
移动到当前行的第一个字符。 人物 '0' 不得
如果它前面紧跟一个数字,则解释为命令。
如果用作运动命令:
1. 如果光标字符是该行的第一个字符,则为错误。
2. 文本区域应从光标字符之前的字符到和
包括行中的第一个字符。
3. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 行中第一个字符的任何部分所在的最后一列
显示,或者如果该行为空,则不变。
执行 an ex 命令
简介:
:
执行一项或多项 ex 命令。
如果屏幕的最后一行以外的任何部分被任何
ex 命令(除了 壳), vi 应显示一条消息,表明它正在等待
来自用户的输入,然后读取一个字符。 也可采取此措施
其他未指明的原因。
如果输入的下一个字符是 ':',另一 ex 命令应被接受并执行。
任何其他字符将导致屏幕刷新和 vi 将返回命令
模式。
电流 线: 如指定的 ex 命令。
电流 栏: 如指定的 ex 命令。
重复新密码 找到最适合您的地方
简介:
[数] ;
此命令应等同于最后一个 F, f, T或 t 命令,指定
数, 并使用与最后一个相同的搜索字符 F, f, T或 t 命令。 如果
没有以前的 F, f, T或 t 命令,它应该是一个错误。
转移 左
简介:
[数] < 运动
如果运动命令是 < 命令重复:
1.如果少于 数 编辑缓冲区中当前行之后的 −1 行,它
将是一个错误。
2. 文本区域应从当前行开始,直到并包括下一行 数 - 1
线。
移动指定的文本区域中的任何行 数 和运动命令一个 shiftwidth
(见 ex 移位宽度 选项)朝向行的开头,如 ex <
命令。 未移位的行应以行模式复制到未命名的缓冲区。
电流 线:如果运动是从当前光标位置到结束
编辑缓冲区,不变。 否则,设置为编辑缓冲区中的第一行,即部分
由运动命令指定的文本区域。
电流 栏: 设置为非.
转移 右
简介:
[数] > 运动
如果运动命令是 > 命令重复:
1.如果少于 数 编辑缓冲区中当前行之后的 −1 行,它
将是一个错误。
2. 文本区域应从当前行开始,直到并包括下一行 数 - 1
线。
在指定的文本区域中移动任何包含字符的行 数 和运动
命令一个 shiftwidth(见 ex 移位宽度 选项)远离行首,如
由...描述 ex > 命令。 未移位的行应复制到未命名的缓冲区中
在线模式。
电流 线:如果运动是从当前光标位置到结束
编辑缓冲区,不变。 否则,设置为编辑缓冲区中的第一行,即部分
由运动命令指定的文本区域。
电流 栏: 设置为非.
Scan 扫描 向后 原价 口语
简介:
?
向后扫描; 这 ? 命令应等同于 / 命令(见 找到最适合您的地方 原价
口语),但以下情况除外:
1.输入提示为 '?.
2. 每次搜索从最后一个字符的第一个字符之前的字符开始
匹配(或者,如果是第一次搜索,则为光标字符之前的字符)。
3. 搜索方向为从光标到编辑缓冲区的开头,
和 包裹扫描 编辑选项将影响搜索是否结束
编辑缓冲区并继续。
4. 记忆的搜索方向应设置为向后。
执行
简介:
@缓冲
如果 缓冲 被指定为 @,应使用最后执行的缓冲区。 如果没有以前的
缓冲区已被执行,它应该是一个错误。
表现得好像命名缓冲区的内容是作为标准输入输入的。 每次之后
行模式缓冲区的行,以及除字符模式缓冲区的最后一行之外的所有行,行为
好像一个作为标准输入输入。
如果在此过程中发生错误,则应写入错误信息,不再
执行此命令产生的字符将被处理。
如果一个 数 被指定,就好像该计数是在用户输入之前输入的一样
人物来自 @ 缓冲区被输入。
电流 线: 为个别命令指定。
电流 栏: 为个别命令指定。
逆转 案例
简介:
[数] ~
反转当前字符和下一个字符的大小写 数 −1 个字符,使得
具有大写对应项的小写字符应更改为大写
字符,并且有小写对应的大写字符应更改为
当前语言环境规定的小写字符。 不得有其他字符
受此命令影响。
如果少于 数 编辑缓冲区中光标后的 −1 个字符, 数
应调整为编辑缓冲区中光标后的字符数减1。
出于此命令的目的,最后一个非字符之后的下一个字符在
行应该是编辑缓冲区中的下一个字符。
电流 线: 设置为包括 (数−1) 光标后的第一个字符。
电流 栏: 设置为最后一列,其中 (数−1)th 个字符
显示光标后。
附加
简介:
[数] a
在当前光标位置后进入文本输入模式。 编辑中没有字符
缓冲区应受此命令影响。 一种 数 将导致输入文本
附加 数 -1 次到输入的末尾。
电流 行/列: 为文本输入命令指定(见 输入 时尚 命令 in
vi).
附加 at 行结束
简介:
[数] A
该命令等效于 vi 命令:
$ [ 数 ] a
(见 附加).
移动 落后 至 前 Word
简介:
[数] b
除了单词用作分隔符而不是 bigwords 外,此命令
应等于 B 命令。
移动 落后 至 前 大字号
简介:
[数] B
如果编辑缓冲区为空或光标在编辑缓冲区的第一个字符上,则
将是一个错误。 如果小于 数 bigwords 开始于光标和开始之间
编辑缓冲区, 数 应调整为之间的 bigword 开头的数量
光标和编辑缓冲区的开始。
如果用作运动命令:
1. 文本区域应从第一个字符开始 数上一个 bigword
开始到但不包括光标字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 设置为包含 当前 栏.
电流 栏: 设置为最后一列,其上的第一个字符的任何部分
数显示前一个 bigword。
更改
简介:
[缓冲][数] c 运动
如果运动命令是 c 命令重复:
1. 缓冲文本应为行模式。
2.如果少于 数 编辑缓冲区中当前行之后的 −1 行,它
将是一个错误。
3. 文本区域应从当前行到并包括下一行 数 - 1
线。
否则,缓冲区文本模式和文本区域应由动作指定
命令。
替换的文本应复制到 缓冲,如果指定,并进入未命名的缓冲区。
如果要替换的文本包含来自多行的字符,或者缓冲区
文本处于行模式,替换的文本也应复制到数字缓冲区中。
如果缓冲区文本处于行模式:
1. 删除区域内任何包含字符的行,编辑器将
在新行的开头进入文本输入模式,该模式将替换第一行
行删除。
2。 如果 自动缩进 设置了编辑选项, 自动缩进 字符等于 自动缩进
删除的第一行的字符应像用户输入一样插入。
否则,如果来自多行的字符在文本区域中:
1. 删除正文。
2. 文本区域最后一行剩余的任何文本应附加到第一行
行,删除该区域的最后一行。
3.编辑器在最后一个未删除的字符后进入文本输入模式
文本区域的第一行,如果有的话; 否则,在第一列的第一列
区域内的线路。
除此以外:
1.如果字形为 '$' 小于该区域,应标出该区域的末端
用 '$'.
2. 编辑器进入文本输入模式,覆盖文本区域。
电流 行/列: 为文本输入命令指定(见 输入 时尚 命令 in
vi).
更改 至 行结束
简介:
[缓冲][数] C
该命令等效于 vi 命令:
[缓冲][数] c$
查看 c 命令。
删除
简介:
[缓冲][数] d 运动
如果运动命令是 d 命令重复:
1. 缓冲文本应为行模式。
2.如果少于 数 编辑缓冲区中当前行之后的 −1 行,它
将是一个错误。
3. 文本区域应从当前行到并包括下一行 数 - 1
线。
否则,缓冲区文本模式和文本区域应由动作指定
命令。
如果在打开模式下,当前行被删除,并且该行保留在显示屏上,则会出现
'@' 字符应显示为该行的第一个字形。
删除文本区域到 缓冲,如果指定,并进入未命名的缓冲区。 如果
要删除的文本包含多于一行的字符,或者缓冲区文本是
在行模式下,删除的文本也应复制到数字缓冲区中。
电流 线: 设置为出现在编辑缓冲区中的第一个文本区域行,除非
该行已被删除,在这种情况下,应将其设置为编辑中的最后一行
缓冲区,如果编辑缓冲区为空,则为第 1 行。
电流 栏:
1. 如果该行为空,则设置为列位置 1。
2. 否则,如果缓冲区文本处于行模式或运动是从光标向
编辑缓冲区的结尾:
一种。 如果当前列中显示当前行中的字符,则设置为
显示该字符的任何部分的最后一列。
湾否则,设置为最后一列,其中任何字符的任何部分
行显示。
3. 否则,如果开始文本区域的列中显示字符,则设置
到显示该字符任何部分的最后一列。
4. 否则,设置为该行中任何字符的任何部分所在的最后一列
显示。
删除 至 行结束
简介:
[缓冲] D
删除从当前位置到当前行尾的文本; 相当于
此 vi 命令:
[缓冲] d$
移动 至 词尾
简介:
[数] e
除了使用单词代替 bigwords 作为分隔符外,此命令
应等于 E 命令。
移动 至 Bigword 结尾
简介:
[数] E
如果编辑缓冲区为空,它将是一个错误。 如果小于 数 bigwords 结束于
光标和编辑缓冲区的结尾, 数 应调整为数量
光标和编辑缓冲区末尾之间的 bigword 结尾。
如果用作运动命令:
1. 文本区域应从最后一个字符开始 数下一个 bigword 直到和
包括光标字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 设置为包含当前列的行。
电流 栏: 设置为最后一列,其上的最后一个字符的任何部分
数显示下一个 bigword。
找到最适合您的地方 字符 in 电流 Line (前锋)
简介:
[数] f 字符
如果它是一个错误 数 字符的出现不会出现在光标之后
在行中。
如果用作运动命令:
1. 文本范围应从光标字符到并包括 数th
光标后出现指定字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置为最后一列,其中任何部分 数第一次发生
光标后的指定字符出现在行中。
找到最适合您的地方 字符 in 电流 Line (逆转)
简介:
[数] F 字符
如果它是一个错误 数 字符的出现不会出现在光标之前
在行中。
如果用作运动命令:
1. 文本区域应来自 数指定字符之前的第 th 次出现
光标,直到,但不包括光标字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置为最后一列,其中任何部分 数第一次发生
行中出现光标前的指定字符。
移动 至 Line
简介:
[数] G
If 数 未指定,默认为编辑缓冲区的最后一行。 如果 数
大于编辑缓冲区的最后一行,则应为错误。
如果用作运动命令:
1. 文本区域从光标所在行到指定行。
2. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
电流 线: 调成 数 if 数 已指明; 否则,最后一行。
电流 栏: 设置为非.
移动 至 置顶 of 屏风
简介:
[数] H
如果行的开头 数 大于第一行,其中任何部分
出现在显示器上不存在,应该是一个错误。
如果用作运动命令:
1. 如果处于打开模式,文本区域应为当前行。
2. 否则,文本区域应从起始行到并包括(
显示的第一行 + 数 -1)。
3. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
如果处于打开模式,此命令应将当前列设置为非什么都不做
其他。
否则,按如下方式设置当前行和当前列。
电流 线:设置为(显示的第一行+ 数 -1)。
电流 栏: 设置为非.
插页 申请早于 光标
简介:
[数] i
在当前光标位置之前进入文本输入模式。 中没有字符
编辑缓冲区受此命令影响。 一种 数 将导致输入文本
附加 数 -1 次到输入的末尾。
电流 行/列: 为文本输入命令指定(见 输入 时尚 命令 in
vi).
插页 at 开始 of Line
简介:
[数] I
该命令等效于 vi 命令 ^[数]i.
加入
简介:
[数] J
如果当前行是编辑缓冲区中的最后一行,则应为错误。
该命令等效于 ex 加入 没有地址的命令,以及 ex
命令 数 值为 1 如果 数 未指定或如果 数 指定了 1,并且
an ex 命令 数 价值 数 −1 对于任何其他值 数,除了
当前行和列应设置如下。
电流 线: 不变。
电流 栏: 最后一列,其中最后一列后面的字符的任何部分
显示首行中的字符,或最后一个非在行中如果没有
字符被附加。
移动 至 半身裙/裤 of 屏风
简介:
[数] L
如果行的开头 数 少于任何部分出现的最后一行
显示不存在,应该是错误。
如果用作运动命令:
1. 如果处于打开模式,文本区域应为当前行。
2. 否则,文本区域应包括从起始光标行到
(显示的最后一行 -(数 −1))。
3. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
1. 如果处于打开模式,该命令会将当前列设置为非并做
没有其他的。
2. 否则,按如下方式设置当前行和当前列。
电流 线:设置为(显示的最后一行 -(数 −1))。
电流 栏: 设置为非.
纪念 职务
简介:
m 邮件
该命令等效于 ex 标记 将指定字符作为命令的命令
论据。
移动 至 中间 of 屏风
简介:
M
显示的中线应按如下方式计算:
( 最佳 线 of 此 展示) + (((数字 of 线 显示) + 1) / 2) - 1
如果用作运动命令:
1. 如果处于打开模式,文本区域应为当前行。
2. 否则,文本区域应包括从起始光标行到
并包括显示器的中间线。
3. 复制到缓冲区的任何文本都应处于行模式。
如果不用作运动命令:
如果处于打开模式,此命令应将当前列设置为非什么都不做
其他。
否则,按如下方式设置当前行和当前列。
电流 线: 设置为显示的中间线。
电流 栏: 设置为非.
重复新密码 原价 口语 找到最适合您的地方 (前锋)
简介:
n
如果记住的搜索方向是向前的,则 n 命令应等同于
vi / 没有用户输入字符的命令。 否则,它应等价于
此 vi ? 没有用户输入字符的命令。
如果 n 命令用作运动命令 ! 命令,编辑器不得
在屏幕的最后一行进入文本输入模式,并且应该像用户一样
输入了一个 '! 字符作为文本输入。
重复新密码 原价 口语 找到最适合您的地方 (逆转)
简介:
N
扫描给定的最后一个模式的下一个匹配 / or ?,但方向相反;
这是相反的 n.
如果记住的搜索方向是向前的,则 N 命令应等同于
vi ? 没有用户输入字符的命令。 否则,它应等价于
此 vi / 没有用户输入字符的命令。 如果 N 命令用作
运动指令 ! 命令,编辑器最后不得进入文本输入模式
屏幕上的一行,并且应该表现得好像用户输入了一个 ! 性格作为
文字输入。
插页 空的 Line 以下
简介:
o
在当前行之后追加的新行中进入文本输入模式。 一种 数 将导致
要附加的输入文本 数 -1 次到已添加文本的末尾,
每次从一个新的附加行开始。
电流 行/列: 为文本输入命令指定(见 输入 时尚 命令 in
vi).
插页 空的 Line 以上
简介:
O
在当前行之前插入一个新行,进入文本输入模式。 一种 数 将导致
要附加的输入文本 数 -1 次到已添加文本的末尾,
每次从一个新的附加行开始。
电流 行/列: 为文本输入命令指定(见 输入 时尚 命令 in
vi).
Put 在 缓冲区 跟随
简介:
[缓冲] p
如果不 缓冲 指定时,应使用未命名的缓冲区。
如果缓冲区文本处于行模式,则文本应附加在当前行下方,并且
缓冲区的每一行都将成为编辑缓冲区中的新行。 一种 数 将导致
要附加的缓冲区文本 数 -1 次到已添加文本的末尾,
每次从一个新的附加行开始。
如果缓冲区文本处于字符模式,则文本应附加到当前行
在光标之后,缓冲区中除第一行和最后一行之外的每一行都将成为一个
编辑缓冲区中的新行。 一种 数 将导致附加缓冲区文本 数 - 1
多次到已添加文本的末尾,每次从上次添加后开始
字符。
电流 线: 如果缓冲区文本为行模式,则将行设置为第+1行; 除此以外,
不变。
电流 栏:如果缓冲区文本处于行模式:
1.如果有非在缓冲区的第一行,设置为最后一列
其中第一个非行中显示。
2.如果没有非在缓冲区的第一行,设置为最后一列
最后一个非在缓冲区的第一行是
显示。
如果缓冲区文本处于字符模式:
1.如果缓冲区中的文本来自多行,则设置为最后一列
显示缓冲区第一个字符的任何部分。
2. 否则,如果缓冲区是未命名的缓冲区,则设置为任何在其上的最后一列
显示缓冲区中最后一个字符的部分。
3. 否则,设置为第一个字符的任何部分的第一列
显示缓冲区。
Put 在 缓冲区 申请早于
简介:
[缓冲] P
如果不 缓冲 指定时,应使用未命名的缓冲区。
如果缓冲区文本处于行模式,则文本应插入当前行上方,并且
缓冲区的每一行都将成为编辑缓冲区中的新行。 一种 数 将导致
要附加的缓冲区文本 数 -1 次到已添加文本的末尾,
每次从一个新的附加行开始。
如果缓冲区文本为字符模式,则将文本插入当前行
在光标之前,缓冲区中除第一行和最后一行之外的每一行都变为
编辑缓冲区中的新行。 一种 数 将导致附加缓冲区文本 数 - 1
多次到已添加文本的末尾,每次从上次添加后开始
字符。
电流 线: 不变。
电流 栏:如果缓冲区文本处于行模式:
1.如果有非在缓冲区的第一行,设置为最后一列
显示该字符的任何部分。
2.如果没有非在缓冲区的第一行,设置为最后一列
最后一个非在缓冲区的第一行是
显示。
如果缓冲区文本处于字符模式:
1.如果缓冲区中的文本来自多行,则设置为最后一列
显示缓冲区第一个字符的任何部分。
2. 否则,如果缓冲区是未命名的缓冲区,则设置为任何在其上的最后一列
显示缓冲区中最后一个字符的部分。
3. 否则,设置为第一个字符的任何部分的第一列
显示缓冲区。
输入 ex 时尚
简介:
Q
离开视觉或开放模式并进入 ex 命令模式。
电流 线: 不变。
电流 栏: 不变。
更换 字符
简介:
[数] r 字符
更换 数 具有指定字符的光标处和后的字符。 如果
少于 数 非行上光标处和之后的字符,它
将是一个错误。
如果字符是-V, 任何下一个字符,除了将被剥离
具有任何特殊含义并用作字面字符。
如果字符是, 不得更换,当前线路和电流
栏目不变。
如果字符是或者, 数 新行应附加到
当前行。 除了最后一行之外,所有行都应该是空的。 数 字符在和
应丢弃光标后的任何字符,并且光标后的任何剩余字符
当前行应移至新行的最后一行。 如果 自动缩进 编辑选项是
设置,它们前面应有相同数量的 自动缩进 在行上找到的字符
从中执行命令。
电流 线: 不变,除非替换字符是或者
, 在这种情况下应设置为 line + 数.
电流 栏: 设置为最后一列的位置,在该位置上替换了最后的一部分
显示字符,或者如果替换字符导致创建新行,
设置为非.
更换 产品特性
简介:
R
在当前光标位置进入文本输入模式,可能会替换
当前行。 一种 数 将导致附加输入文本 数 -1 次到
输入结束。
电流 行/列: 为文本输入命令指定(见 输入 时尚 命令 in
vi).
替代 字符
简介:
[缓冲][数] s
该命令等效于 vi 命令:
[缓冲][数] C
替代 线
简介:
[缓冲][数] S
该命令等效于 vi 命令:
[缓冲][数] c_
移动 光标 至 申请早于 字符 (前锋)
简介:
[数] t 字符
如果它是一个错误 数 字符的出现不会出现在光标之后
在行中。
如果用作运动命令:
1. 文本区域从光标到但不包括 数th
光标后出现指定字符。
2. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置为最后一列,在该列之前的字符的任何部分
数光标出现在行中后出现的第 th 个指定字符。
移动 光标 至 后 字符 (逆转)
简介:
[数] T 字符
如果它是一个错误 数 字符的出现不会出现在光标之前
在行中。
如果用作运动命令:
1、如果光标前的字符是指定字符,则报错。
2. 文本区域从光标前的字符到但不包括
此 数光标前出现的第 th 个指定字符。
3. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
电流 线: 不变。
电流 栏: 设置为最后一列,其中字符的任何部分在
数在光标出现在行中之前出现的第 th 个指定字符。
解开
简介:
u
该命令等效于 ex 复原 命令除了当前行和
当前列应设置如下:
电流 线: 设置为添加或更改的第一行(如果有); 否则,移至该行
在任何已删除的文本之前(如果存在); 否则,移至第 1 行。
电流 栏: 如果撤销一个 ex 命令,设置为第一个非.
否则,如果撤消文本输入命令:
1. 如果命令是 C, c, O, o, R, S或 s 命令,应设置当前列
到输入文本输入命令时它保持的值。
2. 否则,设置为最后一列,其中第一个字符后的任何部分
显示删除的文本,或者,如果没有非字符跟随文本
从这一行删除,设置为最后一列,其中最后的任何部分
非在该行中显示,如果该行为空,则为 1。
否则,如果单个行被修改(即未添加或删除) u 命令:
1. 如果文本被添加或更改,设置为最后一列,其中第一列的任何部分
显示添加或更改的字符。
2.如果文本被删除,设置为最后一列,其中第一列的任何部分
显示删除文本后的字符,或者,如果没有非人物
按照删除的文本,设置为最后一列,其中最后的任何部分
非在该行中显示,如果该行为空,则为 1。
否则,设置为非.
解开 电流 Line
简介:
U
将当前行恢复到最近一次之前的状态
成为当前行。
电流 线: 不变。
电流 栏: 设置为第一列的任何部分所在行的第一列
显示行中的字符。
移动 至 开始 of Word
简介:
[数] w
除了单词用作分隔符而不是 bigwords 外,此命令
应等于 W 命令。
移动 至 开始 of 大字号
简介:
[数] W
如果编辑缓冲区为空,则应为错误。 如果少于 数 大词
在光标和编辑缓冲区的末尾之间, 数 应调整移动
光标到编辑缓冲区中的最后一个 bigword。
如果用作运动命令:
1. 如果关联的命令是 c, 数 是 1,并且光标在一个, 该区域
文本应为当前字符,不应采取进一步行动。
2.如果少于 数 光标和编辑结束之间的 bigwords
缓冲区,那么命令将成功,文本区域应包括最后一个
编辑缓冲区的字符。
3.如果有字符或行尾 数大字,
和相关的命令是 c, 文本区域应达到并包括
前一个字符之前的最后一个字符字符或行尾。
4.如果有bigword 之前的字符或行尾,以及
相关命令是 d or y, 文本区域应到并包括最后一个
在 bigword 开头或行尾之前。
5. 复制到缓冲区的任何文本都应处于字符模式。
如果不用作运动命令:
1. 如果光标在编辑缓冲区的最后一个字符上,则为错误。
电流 线: 设置为包含当前列的行。
电流 栏: 设置为最后一列的第一个字符的任何部分
数显示下一个 bigword。
删除 字符 at 光标
简介:
[缓冲][数] x
删除 数 当前字符前后的字符 into 缓冲,如果指定,
并进入未命名的缓冲区。
如果该行为空,则应为错误。 如果少于 数 非
当前行光标处及之后的字符, 数 应调整为
非光标前后的字符。
电流 线: 不变。
电流 栏: 如果该行为空,则设置为列位置 1。否则,如果有
数 或更少非当前行光标处及之后的字符,设置为
显示最后一个非的任何部分的最后一列行的。 除此以外,
不变。
删除 字符 申请早于 光标
简介:
[缓冲][数] X
删除 数 当前字符之前的字符变成 缓冲,如果指定,和
进入未命名的缓冲区。
如果当前行的当前字符之前没有字符,则为
一个错误。 如果少于 数 当前行的前一个字符, 数
应调整为该行前面的字符数。
电流 线: 不变。
电流 栏:设置为(当前列 - 已删除字符的宽度)。
猛拉
简介:
[缓冲][数] y 运动
将文本区域复制(猛拉)到 缓冲,如果指定,并进入未命名的缓冲区。
如果运动命令是 y 命令重复:
1. 缓冲器应处于行模式。
2.如果少于 数 编辑缓冲区中当前行之后的 −1 行,它
将是一个错误。
3. 文本区域应从当前行到并包括下一行 数 - 1
线。
否则,缓冲区文本模式和文本区域应由动作指定
命令。
电流 线:如果运动是从当前光标位置到结束
编辑缓冲区,不变。 否则,设置为编辑缓冲区中的第一行,即部分
由运动命令指定的文本区域。
电流 栏:
1. 如果运动是从当前光标位置到编辑缓冲区的末尾,
不变。
2. 否则,如果当前行为空,则设置为列位置1。
3. 否则,设置为最后一列显示第一个字符的任何部分
作为运动命令指定的文本区域的一部分的文件。
猛拉 电流 Line
简介:
[缓冲][数] Y
该命令等效于 vi 命令:
[缓冲][数] y_
重画 窗口
如果处于开放模式,则 z 命令应具有概要:
简介:
[数] z
If 数 未指定,默认为 窗口 编辑选项 -1。 这 z 命令
应等于 ex z 命令,类型字符为 = 和 数 of 数
−2,除了当前行和当前列设置如下,
窗口 编辑选项不受影响。 如果计算为 数 争论会
结果为负数, 数 论证 ex z 命令应为零。 一片空白
写完最后一行后,再写一行。
电流 线: 不变。
电流 栏: 不变。
如果不处于打开模式,则 z 命令应具有以下概要:
简介:
[线] z [数] 字符
If 线 未指定,默认为当前行。 如果 线 已指定,但
大于编辑缓冲区中的行数,默认为
编辑缓冲区中的行。
If 数 被指定,值 窗口 编辑选项应设置为 数 (如
在中描述 ex 窗口 命令),屏幕将被重绘。
线 应按以下字符指定放置:
,
将行的开头放在显示的第一行。
. 将行的开头放在显示屏的中心。 的中线
显示应按描述计算 M 命令。
− 将行的未指定部分放在显示的最后一行。
+如果 线 被指定,相当于案件。 如果 线 没有指定,
显示一个屏幕,显示的第一行应该是(当前最后一行)
+1。 如果显示的最后一行之后没有行,则为错误。
^ 如果 线 被指定,显示一个屏幕,其中显示的最后一行
包含显示的第一行的未指定部分
显示最后一行中指定行的未指定部分。 如果这
计算结果在编辑缓冲区开始前的一行,显示
编辑缓冲区的第一个屏幕。
否则,显示一个屏幕,其中显示的最后一行应包含一个
(当前第一行 -1)的未指定部分。 如果此计算结果为
在编辑缓冲区开始之前的行,它应该是一个错误。
电流 线:如果 线 和 '^' 字符被指定:
1. 如果由于命令试图显示而显示第一个屏幕
编辑缓冲区开始之前的行:如果第一个屏幕已经
显示,不变; 否则,设置为(当前第一行 -1)。
2. 否则设置为显示的最后一行。
If 线 和 '+' 字符被指定,设置为显示的第一行。
否则,如果 线 已指定,设置为 线.
否则,不变。
电流 栏: 设置为非.
Exit 退出
简介:
ZZ
该命令等效于 ex XIT 没有地址的命令,尾随 !或
文件名(见 ex XIT 命令)。
输入 时尚 命令 in vi
在文本输入模式下,当前行应包含以下零个或多个
类别,加上终止:
1. 文本输入入口点之前的字符
此类别中的字符在文本输入模式下不得修改。
2. 自动缩进 字符
自动缩进 字符应自动插入到创建的每一行中
在文本输入模式下,无论是输入或者
在文本输入模式下,或作为命令本身的效果; 例如, O or o
(见 ex 自动缩进 命令),就像由用户输入一样。
应该可以擦除 自动缩进 字符与-D 命令; 它
未指定它们是否可以被擦除-H, -U,和-W
人物。 擦除任何 自动缩进 字符将字形转换为擦除列并
从编辑缓冲区中删除字符,但不更改其表示
屏幕。
3.文本输入字符
文本输入字符是用户输入的字符。 擦除任何文本输入
字符将字形转换为擦除列并从编辑中删除字符
缓冲区,但不会改变它在屏幕上的表示。
用户输入的每个文本输入字符(没有特殊含义)
应作如下处理:
一个。 文本输入字符应附加到编辑中的最后一个字符
从第一、第二或第三类缓冲。
湾如果屏幕上没有擦除列,则文本输入命令是 R
命令,并且原始行中第五类中的字符跟随
光标,下一个这样的字符应从编辑缓冲区中删除。 如果
慢开 未设置编辑选项,屏幕上对应的字形
成为擦除列。
C。 如果屏幕上有擦除列,则与它们占据的列数一样多,或
必要时,应覆盖以显示文本输入字符。 (要是
多列字形的一部分被覆盖,其余部分应留在
screen,并继续被视为erase-columns; 未指明是否
字形的其余部分以任何方式修改。)
d. 如果需要额外的显示行列来显示文本输入字符:
一世。 如果 慢开 设置编辑选项,文本输入字符应为
显示在后续显示行列上,覆盖任何字符
显示在这些列中。
ii. 否则,当前显示在列上或之后的任何字符
要显示文本输入字符的显示行应为
推进显示其余部分所需的显示行列数
文本输入字符。
4.擦除列
擦除列在逻辑上不是编辑缓冲区的一部分,只出现在屏幕上,
并且可能会被后续的文本输入字符覆盖在屏幕上。 当文字
输入模式结束,所有擦除列将不再出现在屏幕上。
擦除列最初是由指定的文本区域 c 命令(见
更改); 然而,擦除 自动缩进 或文本输入字符导致
擦除的字符被视为擦除列。
5. 文本区域后面的字符 c 命令,或文本输入入口点
对于所有其他命令
此类别中的字符在文本输入模式下不得修改,除非
在类别 3.b 中指定。 为了 R 文本输入命令,或作为人物
删除时或者被输入。
未指定尝试擦除越过行首是否为错误
这是由一个条目创建的或者在文本输入模式下。
如果不是错误,编辑器的行为就像输入了擦除字符一样
紧接在上一行输入的最后一个文本输入字符之后,以及所有
非当前行上的字符应被视为擦除列。
进入文本输入模式时,或输入文本输入模式字符后(除了
如以下特殊字符所指定),光标应定位如下:
1. 在显示第一个擦除列的任何部分的第一列上(如果存在)
2. 否则,如果 慢开 设置编辑选项,在第一个显示行列之后
第一、第二或第三类别中的最后一个字符(如果存在)
3. 否则,第一列显示第五个中第一个字符的任何部分
类别,如果存在
4. 否则,显示行列在第一个、第二个或
第三类,如果存在
5. 否则,在列位置 1
在文本输入模式期间在屏幕上更新的字符是未指定的,
除此之外,最后一个文本输入字符应始终更新,并且,如果
慢开 未设置编辑选项,当前光标字符应始终更新。
以下规格适用于在文本输入模式下输入的命令字符。
NUL
简介:
NUL
如果文本输入的第一个字符是 NUL,则最近输入的文本应为
像用户输入一样输入,然后退出文本输入模式。 正文应
按字面意思输入; 也就是说,字符既不是宏也不是缩写扩展,也不是
是以任何特殊方式解释的任何字符。 未指明是否
实现应支持超过 256 字节的记忆输入文本。
-D
简介:
-D
这-D 字符在文本输入模式下没有特殊含义
面向行的命令(见 命令 描述 in vi).
块模式终端不需要支持此命令。
如果光标没有跟随 自动缩进 字符,或 自动缩进 字符和一个
'0' or '^' 字符:
1. 如果光标在列位置 1,则-D 字符将被丢弃
并且没有采取进一步的行动。
2. 否则, -D 字符没有特殊含义。
如果最后一个输入字符是 '0',光标应移动到列位置 1。
否则,如果最后一个输入字符是 '^', 光标应移动到列
立场 1. 此外, 自动缩进 应导出下一个输入行的电平
来自同一行 自动缩进 导出当前输入行的电平。
否则,光标应移回前一个 shiftwidth 后的列(参见
此 ex 移位宽度 命令)边界。
起始光标位置和(包括)之间的列上的所有字形
结束光标位置应成为擦除列中所述 输入 时尚 命令 in
vi.
电流 线: 不变。
电流 栏: 设置为 1 如果‐D 前面有一个 '^' or '0'; 否则,设置
到(列-1)-((列-2)% 移位宽度).
-H
简介:
-H
如果在面向行的命令的文本输入模式下,并且没有要擦除的字符,
应终止文本输入模式,不得对该命令执行进一步操作,并且
当前行和列应保持不变。
如果有其他字符 自动缩进 输入的字符
光标前的当前行,光标向后移动一个字符。
否则,如果有 自动缩进 当前行光标前的字符,它是
实现定义是否-H 命令出错或光标移动
回一 自动缩进 字符。
否则,如果光标在列位置 1 并且前面的行有
被输入,它是实现定义的-H 命令是一个错误或者如果
相当于输入-H 在前一个输入的最后一个字符之后
输入线。
否则,它将是一个错误。
起始光标位置和(包括)之间的列上的所有字形
结束光标位置应成为擦除列中所述 输入 时尚 命令 in
vi.
当前擦除字符(见 姿势) 将导致与-H
命令,除非之前插入的字符是,在这种情况下
应该就好像插入了当前的字面擦除字符而不是
.
电流 线: 不变,除非先前输入的行被擦除,在这种情况下它应
设置为第 -1 行。
电流 栏: 设置为显示支持字符的任何部分的第一列
起来。
简介:
-J
-M
如果输入是面向行的命令的一部分,则应终止文本输入模式并且
命令应继续执行提供的输入。
否则,终止当前行。 如果没有其他字符 自动缩进
行上的所有字符都将被丢弃。 否则就是
未指明是否 自动缩进 通过输入这些来修改行中的字符
字符。
在当前行之后追加的新行上继续文本输入模式。 如果 慢开
设置编辑选项,屏幕上当前行下方的行不会被推送
下来,但其中的第一个将被清除,并且似乎被覆盖。
否则,当前行下方的屏幕行将被下推。
如果 自动缩进 设置编辑选项,适当数量的 自动缩进 字须
将作为前缀添加到行中,如 ex 自动缩进 编辑选项。
光标后的所有列是擦除列(如 输入 时尚 命令
in vi) 将被丢弃。
如果 自动缩进 编辑选项已设置,所有紧随其后的字符
游标将被丢弃。
光标后的所有剩余字符应转移到新行,定位
在任何之后 自动缩进 字符。
电流 线: 设置为当前行 +1。
电流 栏: 设置为显示第一个字符的任何部分的第一列
后 自动缩进 新行上的字符(如果有)或第一列位置
最后一次之后 自动缩进 字符(如果有)或列位置 1。
-T
简介:
-T
这-T 字符在文本输入模式下没有特殊含义
面向行的命令(见 命令 描述 in vi).
块模式终端不需要支持此命令。
表现得好像用户输入了最小数量移动所需的字符
光标前进到下一列后的位置 移位宽度 (见 ex 移位宽度
命令)边界。
电流 线: 不变。
电流 栏: 调成 栏 + 移位宽度 - ((列-1) % 移位宽度).
-U
简介:
-U
如果有其他字符 自动缩进 输入的字符
光标前的当前行,光标移动到后输入的第一个字符
此 自动缩进 字符。
否则,如果有 自动缩进 当前行光标前的字符,它是
实现定义是否-U 命令出错或光标移动
到行上的第一列位置。
否则,如果光标在列位置 1 并且前面的行有
被输入,它是实现定义的-U 命令是一个错误或者如果
相当于输入-U 在前一个输入的最后一个字符之后
输入线。
否则,它将是一个错误。
起始光标位置和(包括)之间的列上的所有字形
结束光标位置应成为擦除列中所述 输入 时尚 命令 in
vi.
目前的 杀 字符(见 姿势) 将导致与-U
命令,除非之前插入的字符是,在这种情况下
应该就像文字电流一样 杀 已插入字符而不是
.
电流 线: 不变,除非先前输入的行被擦除,在这种情况下它应
设置为第 -1 行。
电流 栏: 设置为显示最后一个字符的任何部分的第一列
备份了。
-V
简介:
-V
-Q
允许输入任何后续字符,除了-J 或, 作为一个
文字字符,删除它在文本中对编辑器可能具有的任何特殊含义
输入模式。 如果一个-V 或-Q 在 a 之前输入-J 或,
这-V 或-Q 字符将被丢弃,并且-J 或
应按照说明中的说明进行操作输入模式下的命令字符。
仅出于显示目的,编辑器应表现得好像 '^' 原为
输入,光标将被定位,就像覆盖 '^' 特点。 当一个
输入了后续字符,编辑器的行为就像输入了该字符一样
而不是原来的-V 或-Q 字符。
电流 线: 不变。
电流 栏: 不变。
-W
简介:
-W
如果有其他字符 自动缩进 输入的字符
光标前的当前行,光标应移回前面的最后一个单词
光标(包括任何最后一个单词的结尾和
当前光标); 光标不得移动到结束后的第一个字符之前
任何 自动缩进 字符。
否则,如果有 自动缩进 当前行光标前的字符,它是
实现定义是否‐W 命令出错或光标移动
到行上的第一列位置。
否则,如果光标在列位置 1 并且前面的行有
被输入,它是实现定义的-W 命令是一个错误或者如果
相当于输入-W 在前一个输入的最后一个字符之后
输入线。
否则,它将是一个错误。
起始光标位置和(包括)之间的列上的所有字形
结束光标位置应成为擦除列中所述 输入 时尚 命令 in
vi.
电流 线: 不变,除非先前输入的行被擦除,在这种情况下它应
设置为第 -1 行。
电流 栏: 设置为显示最后一个字符的任何部分的第一列
备份了。
简介:
如果输入是面向行的命令的一部分:
1。 如果 打断 已输入,应终止文本输入模式,编辑器应
返回命令模式。 终端将收到警报。
2. 如果已输入,文本输入模式应终止,命令应
使用提供的输入继续执行。
否则,终止文本输入模式并返回命令模式。
不限 自动缩进 在新创建的行上输入的字符没有其他非
字符将被删除。
任何领先 自动缩进 和新创建的行上的字符应重写为
是最小数量字符可能。
屏幕应根据需要重新显示以匹配编辑缓冲区的内容。
电流 线: 不变。
电流 栏:
1. 如果当前行有文本输入字符,则将该列设置为
显示最后一个文本输入字符的任何部分的最后一列。
2. 否则,如果当前列显示一个字符,则不变。
3. 否则,设置为列位置 1。
退出 状态
应返回以下退出值:
0 成功完成。
>0 发生错误。
后果 OF 错误
当遇到任何错误并且标准输入不是终端设备文件时, vi
不得写入文件或返回命令或文本输入模式,并应终止
非零退出状态。
否则,当遇到不可恢复的错误时,它应等同于 SIGHUP
异步事件。
否则,当遇到错误时,编辑器应按照 命令
描述 in vi.
这款 以下 部分 旨在 内容丰富。
申请须知 用法
无。
示例
无。
基本原理
请参阅基本原理 ex 更多信息 vi. 的主要部分 vi 效用
规范指向 ex 以避免无意的分歧。 尽管 ex 和 vi 它们在许多情况下都能提供类似的结果。
历史上作为单个实用程序实现的,这不是 POSIX.1-2008 所要求的。
据了解,部分 vi 如果不是不可能的话,实施起来会很困难
在块模式终端或没有任何形式光标的终端上令人满意
寻址,因此这些功能应该适用于所有
终端。 然而,其意图是,一个 vi 实施应提供完整的
能够支持它们的所有终端上的一组功能。
从历史上看, vi 如果标准输入不是终端,则立即退出。 POSIX.1-2008
允许但不要求这种行为。 文件结束条件不是等价的
到文件结束符。 一个常见的文件结束符, ‐D,在历史上
a vi 命令。
STDOUT 部分中的文本反映了动词的用法 产品 在这个部分;
的一些实现 vi 使用标准输出写入终端,但 POSIX.1-2008
并不要求如此。
从历史上看,如果终端无法执行,则实现会恢复到开放模式
支持全视觉模式。 POSIX.1-2008 要求这种行为。 从历史上看,开放
模式 vi 行为大致等同于视觉模式,除了只有一个
编辑缓冲区中的单行(一个“缓冲区行”)随时保持最新。 这
line 通常显示在带有光标寻址的终端的倒数第二行
(最后一行执行了面向行的命令的正常视觉功能,并且
消息)。 此外,一些命令在打开模式下的行为与在可视化模式下的行为不同
模式。 POSIX.1-2008 要求符合历史惯例。
从历史上看, ex 和 vi 实现预期文本以通常的方式进行
欧洲/拉丁语从左到右,从上到下的顺序。 在没有要求
POSIX.1-2008 就是这种情况。 规范是故意用文字写的
像“before”、“after”、“first”和“last”,以允许实现
支持语言的自然文本顺序。
历史上,编辑缓冲区末尾的行被标记为单个('~')
人物; 也就是说,如果基于一个的显示长度为 20 行,并且最后一行
该文件在第一行,那么第 2-20 行将只包含一个 '~' 字符。
从历史上看,在 vi 编辑器试图在底部只显示完整的行
屏幕(它确实在屏幕顶部显示了部分行)。 如果一行太长
完全适合屏幕底部,屏幕线所在的位置
已显示 显示为单个 '@' 字符,而不是显示部分
线。 POSIX.1-2008 允许但不要求这种行为。 实现是
鼓励尝试始终在屏幕底部显示完整的一行
通过缓冲线进行滚动或屏幕定位。
历史上,标有 '@' 也被用来最小化到哑终端的输出
通过慢线; 也就是说,光标本地的更改已更新,但行的更改
在不靠近光标的屏幕上简单地标有 '@' 签署
而不是更新以匹配当前文本。 POSIX.1-2008 允许,但不
需要此功能,因为随着终端变得更智能,它的使用频率越来越低
并且连接速度更快。
初始化 in ex 和 vi
从历史上看, vi 编辑缓冲区中总是有一行,即使编辑缓冲区是
「空」。 例如:
1. ex 命令 = 当缓冲区为空时,从可视模式执行写入“1”。
2.从空编辑缓冲区的可视模式写入写入单个字符的文件(a
),而从 ex 空编辑缓冲区模式写入空文件。
3. 将命令放入和读取到一个空的编辑缓冲区,在顶部留下一个空行
编辑缓冲区。
为了一致性,POSIX.1-2008 不允许任何这些行为。
从历史上看, vi 并不总是将终端恢复到原始模式; 例如,
如果 ICRNL 最初未设置,则对其进行了修改。 POSIX.1-2008 不允许这样做
行为。
命令 描述 in vi
运动命令是最复杂的方面之一 vi 来描述。 和一些
例外,运动命令对文本区域和缓冲区类型的影响 vi 命令是
逐案说明。 POSIX.1-2008 中文本区域的描述是
无意暗示方向; 也就是说,来自线的包含区域 n 到线 n+5 是
与线的区域相同 n+5 到线 n. 这不仅仅是学术兴趣——
标记的移动可以是任一方向,并且,如果 包裹扫描 选项已设置,因此可以
移动到搜索点。 历史上,行总是以文本形式存储在缓冲区中
命令; 也就是说,从编辑缓冲区的开始到结束。 POSIX.1-2008 要求
符合历史惯例。
从历史上看,命令计数适用于任何相关的运动,并且
乘以任何提供的运动计数。 例如, 2cw 是相同的 C2W及 2c3w
是相同的 C6W. POSIX.1-2008 要求这种行为。 从历史上看, vi 命令
使用 bigwords、单词、段落和句子作为对象处理空行组,
或仅包含的行字符,不一致。 处理的一些命令
他们作为一个单一的实体,而其他人则分别对待每一行。 例如, w, W,
和 B 命令将空行组视为单个单词; 也就是说,命令
将光标移动到每个新的空行。 这 e 和 E 命令处理空组
行作为一个词; 也就是说,第一次使用将移过该组行。 这 b
命令只会向用户发出哔哔声,或者如果从行的开头作为动作完成
命令,以意想不到的方式失败。 如果行仅包含(或以)
字符, w 和 W 命令只会向用户发出哔哔声, E 和 e 命令会
将组视为一个词,并且 B 和 b 命令会将这些行视为
个别词。 为了规范的一致性和简单性,POSIX.1-2008 要求
所有 vi 命令将空行或空行组视为单个实体,并且
通过以结尾的行移动字符要与其他动作保持一致。
从历史上看, vi 文档表明已跳过任意数量的双引号
在句子边界的标点符号之后; 然而,实现只是跳过
单引号。 POSIX.1-2008 要求两者都被跳过。
历史上,编辑缓冲区中的第一个和最后一个字符是字边界。 这
POSIX.1-2008 要求历史实践。
从历史上看, vi 尝试尽可能更新屏幕上的最小列数,
这可能会导致显示误导性信息。 POSIX.1-2008 没有
除了正确显示当前输入的字符之外的其他要求,
将这方面的所有其他决定留给执行。
从历史上看,行在任何字符的列之间被任意折叠
需要屏幕上的多个列位置,但选项卡除外
在右边距处终止。 POSIX.1-2008 允许前者并要求
后者。 不会在字符列之间任意断行的实现
占据多个列位置不应允许光标停留在列上
不包含字符的任何部分。
历史 vi 有一个问题,所有移动都是通过缓冲线,而不是通过显示
或屏幕线。 这通常是正确的做法; 例如,单线运动,
如 j or k, 应该在缓冲线上工作。 命令像 dj或 j.,其中 . 是一个改变
命令,仅对缓冲区行有意义。 然而,这不是正确的做法
屏幕运动或滚动命令,如-D, -F,和 H. 如果窗户
相当小,在这些情况下使用缓冲线会导致完全随机的运动;
例如, 1-D 可以导致完全改变的屏幕,没有任何重叠。
这显然不是用户想要的。 在这种情况下,问题更严重 H,
L及 M 命令——因为它们将光标定位在第一个非最重要的是,他们
可能都指大行中的同一位置,并且根本不会导致任何移动。
另外,如果线比屏幕大,使用缓冲线可以使它
不可能显示部分行——没有任何命令不显示
历史线的起点 vi, 如果行的开头和结尾
不能同时出现在屏幕上,用户会受到影响。 最后,页面和半
页面滚动命令历史上移到第一个非在新行中。 如果
线的大小与屏幕大致相同,这是不够的,因为
光标前后‐D 命令将引用同一个位置
屏幕上。
的实现 ex 和 vi 不存在这些问题的存在,因为相关
命令( -B, -D, -F, -U, -Y, -E, H,
L及 M) 在显示(屏幕)行上操作,而不是(编辑)缓冲区行。
POSIX.1-2008 默认不允许这种行为,因为标准开发人员
相信用户会觉得太混乱了。 然而,历史实践已经
轻松。 例如, ex 和 vi 历史上的尝试,虽然有时不成功,
永远不要把一行的一部分放在屏幕的最后几行; 例如,如果一条线
不完全适合,没有显示行的任何部分,并且屏幕行
对应于包含单个的行 '@' 人物。 这种行为是允许的,但
POSIX.1-2008 不要求,因此实现可以支持长
小屏幕中的线条更合理,而无需更改要定向的命令
显示(而不是面向缓冲区)。 POSIX.1-2008 还允许实现
拒绝编辑任何包含不适合屏幕的行的编辑缓冲区
整体。
显示区域(例如, 窗口 编辑选项)历来是
``grown'' 或扩展,以在显示中完成局部移动时显示新文本
其中显示的行数少于可能的最大值。 扩展有
历史上是首选,当目标线小于最大可能时
扩展值了。 滚动一直是下一个选择,当
目标线距离显示器不到一半,否则,屏幕将被重绘。 那里
然而,例外情况是 ex 命令通常总是导致屏幕
重绘。 POSIX.1-2008 没有指定标准行为,因为可能存在外部
问题,例如连接速度、重绘所需的字符数,而不是
滚动,或实现必须适应的终端功能。
POSIX.1-2008 中的当前行一对一地映射到文件中的缓冲行。 目前
列没有。 POSIX.1-2008 描述了两种不同的列值。
第一个是当前列值,由许多 vi 命令。 这个值是
在编辑的一生中被铭记。 第二列值是实际位置
在光标所在的屏幕上。 两者并不总是相同的。 例如,当
光标后面有一个多列字符,屏幕上的实际光标位置
历史上一直是命令模式中角色的最后一列,也是第一列
输入模式下的字符列。
设置当前行但不设置当前光标值的命令(对于
例, j 和 k) 尝试尽可能接近记住的列位置,
这样当用户四处移动时,光标倾向于将自身限制在垂直列上
在编辑缓冲区中。 POSIX.1-2008 要求符合历史惯例,要求
光标在显示行上的显示位置从当前调整
支持此历史行为所必需的列值。
从历史上看,只有一行(对于某些终端,一行减去 1 列)
用户可以为面向行的命令输入字符; 那是, :, !, /,
or ?. POSIX.1-2008 允许但不要求此限制。
从历史上看,“软”错误在 vi 导致终端收到警报,但没有错误
消息被显示。 作为一般规则,不显示错误消息
命令执行在 vi, 当错误是由于用户尝试无效或
不可能的操作,或者当没有找到搜索的对象时。 软错误示例
包括 h 在左边距, -B 或 [[ 在文件的开头, 2G 在
文件的结尾,等等。 此外,诸如此类的错误 %, ]], }, ), N, n, f, F, t及 T
未能找到搜索到的对象也很软。 不那么一致, / 和 ?
如果找不到模式,则显示错误消息, /, ?, N及 n 显示错误
如果之前没有指定正则表达式,则为消息,以及 ; 没有显示
如果没有以前的错误消息 f, F, t或 T 命令已经发生。 此外,在这方面的行为
区域可能合理地基于对网络速度的运行时评估
联系。 最后,一些实现为软错误提供了错误消息
为了帮助天真的用户,基于详细编辑选项的值。 POSIX.1-2008
未列出应显示错误消息的特定错误。
在没有任何充分理由的情况下,实现应符合历史惯例
发散。
页 向后
这-乐队‐F 命令历来认为尝试执行是错误的
页面越过文件的开头或结尾,而-D 和-U
命令只是移动到文件的开头或结尾。 为了一致性,POSIX.1-2008
所有四个命令都需要后一种行为。 所有四个命令仍然考虑它
如果当前行在开头( -B, -U) 或结束
( -F, -D) 的文件。 从历史上看, -乐队-F
命令跳过两行,以便在执行单个命令时包含重叠的行
进入。 这在存在的情况下意义不大 数,因为会有,由
定义,没有重叠的线条。 历史使用的实际计算
的实现 vi 编辑-B 是:
((当前的 第一 线) - 数 x (窗户 编辑 选项)) +2
并为-F 是:
((当前的 第一 线) + 数 x (窗户 编辑 选项)) - 2
当混合有计数和无计数的命令时,这种计算效果不佳; 为了
例, 3-F 不等于输入-F 命令三遍,
并且不能通过输入来逆转-B 命令 XNUMX 次。 为了一致性
与其他 vi 需要计数的命令,POSIX.1-2008 需要不同的计算。
滑动 向前
4BSD 和 System V 的实现 vi 使用的初始值不同
滚动 命令。 4BSD 使用:
((窗户 编辑 选项) + 1) /2
而 System V 使用了 滚动 编辑选项。 指定了 System V 版本
由 POSIX.1-2008 提出,因为标准开发人员认为它更直观,
允许用户初始设置滚动值的方法,而无需同时设置
显示的行数。
滑动 向前 by Line
从历史上看, -E 和-Y 命令认为这是一个错误,如果最后
和第一行分别已经出现在屏幕上。 POSIX.1-2008 要求
符合历史惯例。 从历史上看, -E 和-Y 命令
在打开模式下没有影响。 为了规范的简单性和一致性,POSIX.1-2008
要求他们像往常一样行事,尽管只有一行屏幕。
清除 和 重新显示
历史的-L 命令完全按照预期刷新屏幕
当前显示,替换任何 '@' 已删除但未删除的行的字符
在屏幕上更新并刷新 '@' 人物。 的意图-L 命令
是在屏幕被意外覆盖时刷新; 例如,通过一个 写
来自另一个用户的命令或调制解调器噪音。
重画 屏风
历史的‐R 命令仅在需要更新行时重新显示
已被删除但未在屏幕上更新并且被标记为 '@' 字符。
如果没有这种形式的行,则不需要以任何方式刷新屏幕
当前显示。 POSIX.1-2008 允许实现将这个命令扩展到
屏幕上的刷新行标记为 '@' 字符,因为它们太长了
显示在当前框架中; 但是,当前行和列不需要
修改的。
搜索 标签串
从历史上看,第一个非在光标处或之后是第一个字符,并且
作为单词字符的所有后续字符,直到行尾,都是
包括。 例如,将光标放在前导或在 '#' 字符
文本 “#酒吧@”,标签是 “#酒吧”. 在性格上 '乙' 它是 “酒吧”,以及 '一种'
它是 “阿”. POSIX.1-2008 要求这种行为。
更换 文本 - 成果 在 外壳 命令
从历史上看,在 <, >及 ! 命令考虑了除 line- 之外的大多数光标运动
定向运动错误; 例如,命令 >/foo 成功,而命令
>l 失败,即使这两个命令描述的文本区域可能相同。
为了一致性,所有三个命令只考虑整行而不是部分行,并且
该区域被定义为包含由指定的字符的任何行
运动。
移动 至 匹配 字符
其他匹配的字符已由实现定义以允许
匹配等扩展 '<' 和 '>' 用于搜索 HTML,或 #ifdef, 的#else及 #ENDIF
用于搜索 C 源代码。
重复新密码 换人
POSIX.1-2008 要求任何 c 和 g 指定给前一个替代命令的标志
被忽视; 但是,那 r 如果实现支持,标志可能仍然适用。
回程 至 上一页 (语境 or 部分)
这款 [[, ]], (, ), {及 } 命令都受“节边界”的影响,但在
一些历史实现并非所有命令都识别同一部分
边界。 这是一个错误,而不是一个功能,一个独特的部分边界算法不是
为每个命令描述。 保留的一种特殊情况是句子
命令移动到编辑缓冲区最后一行的末尾,而其他命令则移动
到开始,为了保留传统的字符切割语义
语句命令。 从历史上看, vi 编辑开始和结束的部分边界
缓冲区是第一个非在编辑缓冲区的第一行和最后一行,如果有
存在; 否则,编辑缓冲区的第一行和最后一行的最后一个字符,如果
一个存在。 为了增加与其他部分位置的一致性,这已被简化
通过 POSIX.1-2008 到编辑缓冲区的第一行和最后一行的第一个字符,或
编辑缓冲区的第一行和最后一行(如果它们为空)。
句子边界在历史上是有问题的 vi. 他们不仅是
为节和段落命令定义的边界,但它们是第一个
非这也发生在这些边界之后。 从历史上看, vi 部分
命令被记录为将可选的窗口大小作为 数 之前
命令。 这在历史版本中没有实现,所以 POSIX.1-2008 要求
此 数 重复命令,与其他命令保持一致 vi 命令。
重复新密码
从历史上看,除了文本输入命令之外的映射命令不能重复使用
此 期间 命令。 POSIX.1-2008 要求符合历史惯例。
对特殊字符解释的限制(例如, -H) 在
文本输入模式命令的重复旨在匹配历史实践。 为了
例如,给定输入序列:
国际劳工局-H -H -Hdef
应该在第一次输入序列时通知用户错误,而不是在输入过程中
命令重复。 人物‐T 被明确豁免于此
限制。 的历史实现 vi 忽略‐T 字符
在命令重复期间输入原始命令。 POSIX.1-2008 禁止这样做
行为。
找到最适合您的地方 原价 口语
从历史上看,如果运动命令
是一个搜索(/, ?, N, n) 并且最终位置是行的开始/结束。 有
一些特殊情况和 vi 不一致。 POSIX.1-2008 不允许这种行为,
为了一致性。 历史实现允许但无法处理搜索
作为包裹的运动命令(即,由于编辑选项 包裹扫描) 到原来的
地点。 POSIX.1-2008 要求将此行为视为错误。
从历史上看,语法 “/RE/0” 用于强制命令以行模式剪切文本。
POSIX.1-2008 要求符合历史惯例。
从历史上看,在开放模式下, z 指定给一个搜索命令重新显示当前行
而不是在当前行突出显示的情况下显示当前屏幕。 为了
为了规范的一致性和简单性,POSIX.1-2008 不允许这种行为。
从历史上看,尾随 z 如果作为命令的一部分输入,则允许并忽略命令
搜索用作运动命令。 为了规范的一致性和简单性,
POSIX.1-2008 不允许这种行为。
执行 an ex 命令
从历史上看, vi 实现限制了可以输入的命令
冒号命令行(例如, 附加 和 更改),以及其他一些已知的命令
导致他们灾难性地失败。 为了一致性,POSIX.1-2008 不允许这些
限制。 当执行一个 ex 通过输入命令 :, 无法输入
作为命令的一部分,因为它被认为是命令的结尾。 一个
不同的方法是输入 ex 命令模式使用 vi Q 命令(后来
使用 ex vi 命令)。 在 ex 命令模式,单行
限制不存在。 因此,例如,以下内容是有效的:
Q
s/休息 这里/休息\
这里/
vi
POSIX.1-2008 要求,如果 ex 命令覆盖屏幕的任何部分
被刷新擦除, vi 暂停用户的一个字符。 从历史上看,这
字符可以是任何字符; 例如,用户在输入之前输入的字符
消息出现,甚至是映射字符。 这可能是一个错误,但实现
试图通过要求用户输入特定字符来更加严格,
或用户在显示消息后输入字符,已被强制
用户愤慨回归历史行为。 POSIX.1-2008 要求符合
历史实践。
转移 左 (对)
请参阅基本原理 ! 和 / 命令。 从历史上看, < 和 > 命令
有时将光标移动到第一个非(例如,如果命令是
重复或与 _ 作为运动命令),有时保持不变。 POSIX.1-2008
不允许这种不一致,而是要求光标始终移动到
第一个非. 从历史上看, < 和 > 命令不支持缓冲区参数,
尽管某些实现允许指定可选缓冲区。 这种行为
POSIX.1-2008 既不要求也不不允许。
执行
从历史上看,缓冲区可以执行其他缓冲区,而循环,无限的和其他的,都是
可能的。 POSIX.1-2008 要求符合历史惯例。 这 *缓冲 的语法
ex 不需要 vi,因为它不是历史实践,并且已经在一些
vi 支持其他脚本语言的实现。
逆转 案例
从历史上看,在 ~ 命令忽略任何关联 数,并且只作用于角色
在当前行中。 为了与其他 vi 命令,POSIX.1-2008 要求一个
相关 数 下一步行动 数 字符,并且命令移动到后续
行,如果有保证 数, 使修改大段文本成为可能
合理有效的方式。 存在 vi 可选地需要一个的实现
关联的运动命令 ~ 命令。 支持此功能的实现
鼓励基于 海参 编辑选项并处理文本区域和
光标定位与 猛拉 命令。
附加
从历史上看, 数s 指定给 A, a, I及 i 命令重复输入
第一行 数 次,并且没有重复输入文本的后续行。
POSIX.1-2008 要求重复输入整个文本 数 倍。
移动 落后 至 前 Word
从历史上看, vi 如果单词命令被用作空的运动命令,就会变得困惑
文件。 POSIX.1-2008 要求这是一个错误。 的历史实现 vi 有
单词移动命令中的大量错误,并且它们的行为差异很大
存在空行、由单个字符组成的“单词”以及包含
只要人物。 为了规范的一致性和简单性,POSIX.1-2008
不允许这种行为。
更改 至 行结束
的一些历史实现 C 命令的行为与描述不符
POSIX.1-2008 当 $ 键被重新映射,因为它们是通过推送 $
键到输入队列并重新处理它。 POSIX.1-2008 不允许这种行为。
从历史上看,在 C, S及 s 命令没有将替换的文本复制到数字中
缓冲区。 为了规范的一致性和简单性,POSIX.1-2008 要求它们
表现得像他们各自的 c 各方面的命令。
删除
从历史上看,被删除的处于打开模式的行会向上滚动,并且 @ 字形
写在行首。 在终端无法使用的情况下
必要的光标移动后,编辑器从屏幕上删除了已删除的行。 POSIX.1-2008
要求符合历史惯例; 也就是说,如果终端不能显示
'@' 字符,该行不能保留在屏幕上。
删除 至 行结束
的一些历史实现 D 命令的行为与描述不符
POSIX.1-2008 当 $ 键被重新映射,因为它们是通过推送 $
键到输入队列并重新处理它。 POSIX.1-2008 不允许这种行为。
加入
一个历史奇葩 vi 是命令 J, 1J及 2J 都是等价的。
POSIX.1-2008 要求符合历史惯例。 这 vi J 命令已指定
就 ex 加入 命令与 ex 命令 数 价值。 地址修正为
a 数 超过编辑缓冲区的末尾是历史兼容性所必需的
为 ex 和 vi.
纪念 职务
历史惯例是只有小写字母,加上反引号和单引号,才能
用于标记光标位置。 POSIX.1-2008 要求符合历史
练习,但鼓励实现也支持其他字符作为标记。
重复新密码 原价 口语 找到最适合您的地方 (向前 和 撤销)
从历史上看,在 N 和 n 命令不能用作运动组件 c
命令。 除了 cN 命令,如果搜索越界,则该命令有效
边界,文本区域将被丢弃,并且用户不会在文本输入中
模式。 为了规范的一致性和简单性,POSIX.1-2008 不允许这样做
行为。
插页 空的 Line (以下 和 以上)
从历史上看, O 和 o 命令被用作物理线路的数量
打开,如果终端是哑巴并且 慢开 选项未设置。 这是为了
最大限度地减少慢速连接的流量并为哑终端重新绘制。 POSIX.1-2008
不允许这种行为,需要一个 数 打开命令的行为与
其他文本输入命令。 这种对历史惯例的改变是为了一致性,
并且因为功能的超集由 慢开 编辑选项。
Put 在 缓冲区 (下列的 和 前)
从历史上看, 数到 p 和 P 如果缓冲区是行模式,则忽略命令
缓冲区,但如果缓冲区是一个
字符模式缓冲区。 因为存在没有此限制的实现,并且
因为多次粘贴行通常很有用,POSIX.1-2008 要求 数
得到所有人的支持 p 和 P 命令。
的历史实现 vi 众所周知,在该领域存在重大问题 p 和 P
命令,特别是当不寻常的文本区域被复制到编辑缓冲区时。 这
标准开发人员将这些视为错误,出于一致性和
规范的简单性。
历史上, P or p 命令(或 ex 放 从打开或可视模式执行的命令)
在一个空文件中执行,留下一个空行作为文件的第一行。 为了
为了规范的一致性和简单性,POSIX.1-2008 不允许这种行为。
更换 字符
从历史上看,在 r 命令没有正确处理 抹去 和 字 抹去 字符
作为参数,它也没有处理关联的 数 大于 1
return> 参数,它替换了 数 带有单个字符.
POSIX.1-2008 不允许这些不一致。
从历史上看,在 r 命令允许-V 对输入的字符进行转义,例如
作为和; 然而,它需要两个领先的-V
字符而不是一个。 POSIX.1-2008 要求对此进行更改以与
其他文本输入命令 vi.
从历史上看,输入是错误的 r 命令如果少于 数
行中光标处或之后的字符。 虽然合理而明确
扩展将允许 r 命令在空行上,它需要太大
a 数 进行调整以匹配光标处或之后的字符数
一致性,这与历史实践有很大不同,需要避免。
POSIX.1-2008 要求符合历史惯例。
更换 产品特性
从历史上看,如果有 自动缩进 所在行中的字符 R 命令是
运行,和 自动缩进 被设置,第一个会适当缩进,没有
字符将被替换为. 每增加会取代 n
字符,其中 n 是缩进其余部分所需的字符数
行到适当的缩进级别。 此行为是一个错误,不允许
POSIX.1-2008。
解开
撤销命令后光标定位的历史做法是混合的。 多数情况
在某些情况下,当撤消影响单行的命令时,光标会移动到
添加或更改文本的开头,或在删除文本之后立即开始。 但是,如果用户
已从要更改的行移开,该列要么设置为第一个非,
回到命令的原点,或保持不变。 撤消命令时
影响多行或整行,光标移动到第一个字符
第一行恢复。 作为说明这是多么不一致的一个例子,搜索,然后是
an o 文本输入命令,后跟一个 复原 将光标返回到所在的位置
此 o 命令已输入,但 cw 命令后跟 o 命令后跟 复原
将光标返回到第一个非行的。 POSIX.1-2008 要求
这些行为中最有用的,而放弃最没用的,为了
规范的一致性和简单性。
猛拉
从历史上看,在 猛拉 如果动作在,则命令不会移动到动作的结尾
前进的方向。 如果运动在向后,则移动到运动的结尾
方向,除了 _ 命令,或为 G 和 ' 命令结束时
运动在当前线上。 这进一步复杂化,因为对于一些
在运动命令中, 猛拉 命令移动了光标但没有更新屏幕; 为了
例如,后续命令会从动作的末尾移动光标,即使
虽然屏幕上的光标没有反映光标的移动 猛拉
命令。 POSIX.1-2008 要求所有 猛拉 与向后运动相关的命令
将光标移动到动作的结尾以保持一致性,特别是为了使 '
命令作为运动与作为运动的搜索模式一致。
猛拉 电流 Line
的一些历史实现 Y 命令的行为与描述不符
POSIX.1-2008 当 '_' 键被重新映射,因为它们是通过推送
'_' 键到输入队列并重新处理它。 POSIX.1-2008 不允许这样做
行为。
重画 窗口
从历史上看,在 z 命令总是重新绘制屏幕。 这是允许的,但不是必需的
通过 POSIX.1-2008,由于频繁使用 z 宏命令中的命令,例如 地图 n 新西兰
用于屏幕定位,而不是用于更改屏幕大小。 标准
开发人员认为扩展或滚动屏幕提供了更好的界面
用户。 如果可选的新窗口大小为
指定,并在-土地-R 命令。
的语义 z^ 充其量是令人困惑的。 历史惯例是,屏前
显示以指定行结束的画面。 POSIX.1-2008 要求
符合历史惯例。
从历史上看,在 z 命令不会在顶部或底部显示部分行
屏幕。 如果部分行通常会显示在底部
屏幕,命令有效,但部分行被替换为 '@' 人物。 如果
部分行通常会显示在屏幕顶部,命令
会失败。 为了规范的一致性和简单性,POSIX.1-2008 不允许
这种行为。
从历史上看,在 z 行规范为 1 的命令忽略了该命令。 为了
为了规范的一致性和简单性,POSIX.1-2008 不允许这种行为。
从历史上看,在 z 命令没有将游标列设置为第一个非为了
字符,如果要显示第一个屏幕,并且已经显示。 为了
为了规范的一致性和简单性,POSIX.1-2008 不允许这种行为。
输入 时尚 命令 in vi
的历史实现 vi 不允许用户擦除多于一行
输入,或使用正常的擦除字符,如 线 抹去, 字词删除及 抹去 至
抹去 自动缩进 人物。 由于存在实现 vi 没有这些
限制,这两种行为都是允许的,但只需要历史实践。 在
这些扩展的情况, vi 需要暂停 自动缩进 和上一行
边界。
的历史实现 vi 只更新了当前屏幕所在的部分
显示光标字符。 例如,考虑 vi 输入按键:
国际广播公司0℃
从历史上看, 会覆盖字符 “A B C D” 显示的时候。 其他
实现只替换 '一种' 性格与,然后推动其余的
光标前的字符。 两种实现都有问题。 历史的
对于上面的例子,实现可能在视觉上更好; 然而,对于
击键:
国际广播公司0R
字符串中的历史执行结果 “bcd” 消失然后神奇地
重新出现时字符被输入。 POSIX.1-2008 要求前一个行为
覆盖擦除列时——即覆盖不再是的字符
逻辑上是编辑缓冲区的一部分——否则是后者的行为。
的历史实现 vi 丢弃了-D 和-T 字符时
它们是在命令功能不合适的地方输入的。
POSIX.1-2008 要求‐T 功能始终可用,并且
‐D 在不操作时被视为任何其他键 自动缩进 字符。
NUL
一些历史实现 vi 使用 限制输入的字符数
NUL 输入字符为 256 字节。 POSIX.1-2008 允许这种限制; 然而,
鼓励实现删除此限制。
-D
另请参阅输入模式命令的基本原理. 隐藏的假设
-D 命令(在 vi 自动缩进 一般规格)是
字符在屏幕上占据一列字符组成
的整数人物。
允许实现重写 自动缩进 当行中的字符,
, -D,和-T 被输入,或当 转移 命令
被使用,因为历史实现都这样做并且发现有必要
这样做。 例如,一个-D 当光标前面有一个, 和
制表位 设置为 8,并且 移位宽度 设置为 3,将导致被取代
一些人物。
-T
另请参阅输入模式命令的基本原理. 从历史上看, -T
只有在没有非当前输入行中尚未输入字符。 在
此外,插入的字符-T 被视为 自动缩进 字符,
并且无法使用普通用户擦除字符擦除。 因为存在实现
没有这些限制,并且移动到列边界通常是
有用的是,POSIX.1-2008 要求删除这两个限制。
-V
从历史上看, vi 用过的 ^V, 无论下一个字面量字符的值如何
终端。 POSIX.1-2008 要求符合历史惯例。
描述的用途-V 也可以用-Q,即
在使用的终端上很有用-V 表示向下箭头函数。 然而,大多数
历史实现使用-Q 为 术语 START 字符,所以编辑器
一般不会收到-Q 除非 姿势 艾克森 模式设置为关闭。 (在
此外,一些历史实现 vi 明确设置 艾克森 模式打开,所以它是
用户很难将其设置为关闭。)中描述的任何命令字符
POSIX.1-2008 可以通过它们的选择变得无效 术语 控制字符,
使用 姿势 系统接口卷中描述的实用程序或其他方法
POSIX.1-2008。
历史上,SIGINT 在用于结束输入模式时会提醒终端。 这种行为是
POSIX.1-2008 允许但不要求。
未来 如何前往
无。
使用 onworks.net 服务在线使用 viposix