> For the complete documentation index, see [llms.txt](https://man.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://man.bsdcn.org/man1/ee.1.md).

# edit(1)

`ee` — 简易编辑器

## 名称

`ee`

## 概要

`ee [-e] [-i] [-h] [+#] [file ...]`

`ree [-e] [-i] [-h] [+#] [file ...]`

## 描述

`ee` 命令是一个简单的面向屏幕的文本编辑器。除非终端底部出现提示符，或者中间显示了一个菜单框，否则它始终处于文本插入模式。`ree` 命令与 `ee` 相同，但限制为只能编辑指定的文件（不允许文件操作或 shell 转义）。

还有一个具有类似易用特性但功能更多的编辑器，名为 `aee`。

为使 `ee` 正常工作，环境变量 `TERM` 必须设置为所使用终端的类型。例如，对于 HP 700/92 终端，`TERM` 变量应设置为 "70092"。如需更多信息，请咨询系统管理员。

### 选项

命令行上可使用以下选项：

**`-e`** 关闭将制表符扩展为空格的功能。

**`-i`** 关闭终端顶部的信息窗口显示。

**`-h`** 关闭窗口和菜单边框的高亮显示（在某些终端上可提升性能）。

**`+#`** 启动时将光标移动到第 '#' 行。

### 控制键

除插入文本外，要执行任何其他操作，用户必须使用控制键（**Control** 键，以 "^" 表示，与一个字母键同时按下，例如 ^a）以及键盘上可用的功能键（如 **Next Page**、**Prev Page**、方向键等）。

由于并非所有终端都有功能键，`ee` 将基本光标移动功能分配给控制键，并在可用时也分配给键盘上更直观的按键。例如，要向上移动光标，用户可以使用向上方向键或 `^u`。

| 按键        | 功能              |
| --------- | --------------- |
| ^a        | 提示输入要插入字符的十进制值。 |
| ^b        | 移动到文本底部。        |
| ^c        | 获取命令提示符。        |
| ^d        | 将光标下移。          |
| ^e        | 提示输入要搜索的字符串。    |
| ^f        | 恢复上次删除的字符。      |
| ^g        | 移动到行首。          |
| ^h        | 退格。             |
| ^i        | 制表符。            |
| ^j        | 插入换行符。          |
| ^k        | 删除光标所在位置的字符。    |
| ^l        | 将光标左移。          |
| ^m        | 插入换行符。          |
| ^n        | 移动到下一页。         |
| ^o        | 移动到行尾。          |
| ^p        | 移动到上一页。         |
| ^r        | 将光标右移。          |
| ^t        | 移动到文本顶部。        |
| ^u        | 将光标上移。          |
| ^v        | 恢复上次删除的单词。      |
| ^w        | 删除从光标位置开始的单词。   |
| ^x        | 搜索。             |
| ^y        | 删除从光标位置到行尾的内容。  |
| ^z        | 恢复上次删除的行。       |
| ^\[ (ESC) | 弹出菜单。           |

### EMACS 键模式

由于许多 shell 提供 Emacs 模式（用于光标移动和其他编辑操作），`ee` 提供了一些可能对熟悉这些绑定的人更有用的按键绑定。可以通过 **settings** 菜单或初始化文件（见下文）访问。映射如下：

| 按键        | 功能              |
| --------- | --------------- |
| ^a        | 移动到行首。          |
| ^b        | 后退 1 个字符。       |
| ^c        | 命令提示符。          |
| ^d        | 删除光标所在位置的字符。    |
| ^e        | 行尾。             |
| ^f        | 前进 1 个字符。       |
| ^g        | 后退 1 页。         |
| ^h        | 退格。             |
| ^i        | 制表符。            |
| ^j        | 恢复上次删除的字符。      |
| ^k        | 删除行。            |
| ^l        | 恢复上次删除的行。       |
| ^m        | 插入换行符。          |
| ^n        | 移动到下一行。         |
| ^o        | 提示输入要插入字符的十进制值。 |
| ^p        | 上一行。            |
| ^r        | 恢复上次删除的单词。      |
| ^t        | 移动到文本顶部。        |
| ^u        | 移动到文本底部。        |
| ^v        | 移动到下一页。         |
| ^w        | 删除从光标位置开始的单词。   |
| ^y        | 提示输入要搜索的字符串。    |
| ^z        | 下一个单词。          |
| ^\[ (ESC) | 弹出菜单。           |

### 功能键

**Next Page** 移动到下一页。

**Prev Page** 移动到上一页。

**Delete Char** 删除光标所在位置的字符。

**Delete Line** 删除从光标到行尾的内容。

**Insert line** 在光标位置插入换行符。

**Arrow keys** 按所示方向移动光标。

### 命令

某些操作需要比单个按键更多的信息。对于最基本的操作，可以按 `ESC` 键获取菜单。通过获取命令提示符（`^c`）并输入以下命令之一，可以执行相同甚至更多的操作。

**!cmd** 在 shell 中执行 cmd。

**0-9** 移动到指定行号。

**case** 使搜索区分大小写。

**character** 显示光标位置字符的 ASCII 值。

**exit** 保存已编辑的文本并离开编辑器。

**expand** 将制表符扩展为空格。

**file** 打印文件名。

**help** 显示帮助屏幕。

**line** 显示当前行号。

**nocase** 使搜索不区分大小写（默认）。

**noexpand** 按下 TAB 键时不将制表符扩展为空格。

**quit** 不保存更改直接离开编辑器。

**read file** 读取指定文件。

**write file** 将文本写入指定文件。

### 菜单操作

按下 **escape** 键（如果没有 **escape** 键则按 **^\[**）可弹出菜单。在菜单中，按 escape 键可在不执行任何操作的情况下离开菜单。使用上下方向键，或 `^u` 上移、`^d` 下移，移动到菜单中所需的项目，然后按 **return** 执行所指明的任务。

每个菜单项的左侧有一个字母，在键盘上按下对应的字母即可选择该菜单项。

`ee` 的主菜单如下：

**leave editor** 如果已进行更改，用户会看到一个菜单，提示是否保存更改。

**help** 显示帮助屏幕，包含所有键盘操作和命令。

**file operations** 弹出菜单，可选择读取文件、写入文件、保存编辑器当前内容，或将编辑器内容发送到打印命令（参见“从文件初始化 ee”一节）。

**redraw screen** 在屏幕被破坏时提供重绘屏幕的手段。

**settings** 显示当前操作模式和右边距的值。将光标移到特定项上按 return 可更改其值。按 escape 键离开此菜单。（参见下文的“模式”。）

**search** 弹出菜单，用户可选择输入要搜索的字符串，或搜索已输入的字符串。

**miscellaneous** 弹出菜单，允许用户格式化当前段落、执行 shell 命令或检查编辑器中文本的拼写。

### 段落格式化

`ee` 中的段落由以下边界界定的文本块定义：

* 文件开头或结尾。
* 没有字符，或只有空格和/或制表符的行。
* 以句点（'.'）或右尖括号（'>'）开头的行。

段落可以通过两种方式格式化：显式地选择 format paragraph 菜单项，或设置 `ee` 自动格式化段落。自动模式可通过菜单或初始化文件设置。

`ee` 中的文本操作有三种状态：自由格式（free-form）、边距（margins）和自动格式化（automatic formatting）。

“自由格式”最适用于编程等场景。对行长度没有限制，也不进行格式化。

“边距”允许用户输入文本而无需担心超出右边距（右边距可在 settings 菜单中设置，默认为终端的右边缘）。此模式使 format paragraph 菜单项能够工作。

“自动格式化”提供类似文字处理器的行为。用户可以输入文本，而 `ee` 会在每次用户在输入或删除文本后插入空格时确保整个段落适合终端宽度。必须同时启用边距观察才能进行自动格式化。

### 模式

虽然 `ee` 是一个“无模式”编辑器（始终处于文本插入模式），但它在某些操作中仍有模式。这些包括：

**tab expansion** 制表符可作为单个制表符插入，或替换为空格。

**case sensitivity** 搜索操作可以区分大小写，或完全忽略大小写。

**margins observed** 行可以在右边距处截断，或无限延伸。

**auto paragraph formatting** 输入文本时，编辑器可以尝试使其在屏幕宽度内保持合理外观。

**eightbit characters** 切换八位字符是显示为尖括号中的值（如 "<220>"）还是显示为字符。

**info window** 可以显示或不显示展示可执行键盘操作的窗口。

**emacs keys** 控制键可以赋予类似 emacs 的绑定，也可以不。

**16 bit characters** 切换十六位字符是作为一个 16 位量还是两个 8 位量处理。这主要适用于中文 Big 5 编码集。

可以通过初始化文件（见下文）或菜单（见上文）设置这些模式。

### 拼写检查

从 `ee` 中检查文本拼写有两种方式。一种是使用传统的 spell(1) 命令，另一种是使用可选的 ispell(1) 命令。

使用 spell 时，无法识别的单词会被放置在文件顶部。对于 ispell 选项，文件会写入磁盘，然后对文件运行 ispell，ispell 完成对文件的修改后再将文件读回。

### 打印编辑器内容

用户可以选择一个菜单项来打印编辑器的内容。`ee` 将编辑器中的文本通过管道传递给初始化命令 **printcommand** 指定的命令（参见下文“从文件初始化 ee”一节）。默认将内容发送到 "lp"。

用户分配给 **printcommand** 的命令必须从标准输入获取输入。如需更多细节，请咨询系统管理员。

### shell 操作

可以通过在 **miscellaneous** 菜单中选择 **shell command** 项，或在 **command:** 提示符下在要执行的命令前加上感叹号（"!"）来从 `ee` 内部执行 shell 命令。此外，用户可以使用左尖括号（">"）后跟 "!" 和要执行的 shell 命令，将编辑缓冲区的内容通过管道发送到 shell 操作。也可以在感叹号前使用右尖括号（"<"）将 shell 操作的输出定向到编辑缓冲区。甚至可以组合使用，将输出发送到 shell 操作并将结果读回编辑器。因此，如果编辑器包含要排序的单词列表，可以在命令提示符下输入以下内容来排序：

```sh
><!sort
```

这会将编辑器的内容通过管道发送到 sort 实用程序，结果会放置到当前光标位置的编辑缓冲区中。旧信息需要由用户删除。

### 从文件初始化 ee

由于不同用户有不同偏好，`ee` 允许少量配置。`ee` 的初始化文件有三个可能的位置：**/usr/share/misc/init.ee** 文件、用户主目录中的 **.init.ee** 文件，或当前目录（如果与主目录不同）中的 **.init.ee** 文件。这允许系统管理员在系统范围内为用户设置一些偏好（例如打印命令），而用户可以为特定目录自定义设置（例如一个用于通信，另一个用于编程）。

文件 **/usr/share/misc/init.ee** 最先读取，然后是 **$HOME/.init.ee**，最后是 **.init.ee**，最近读取的文件中指定的设置优先。

初始化文件中可输入以下项：

**case** 设置搜索区分大小写。

**nocase** 设置搜索不区分大小写（默认）。

**expand** 使 `ee` 将制表符扩展为空格（默认）。

**noexpand** 使 `ee` 将制表符作为单个字符插入。

**info** 在终端顶部显示一个小信息窗口（默认）。

**noinfo** 关闭信息窗口的显示。

**margins** 使 `ee` 在用户插入文本时光标超过右边距时在右边距处截断行（默认）。

**nomargins** 允许行延伸到右边距之外。

**autoformat** 使 `ee` 在插入文本时自动尝试格式化当前段落。

**noautoformat** 关闭自动段落格式化（默认）。

**printcommand** 允许设置打印命令（默认："lp"）。

**rightmargin** 用户可以为右边距选择一个值（屏幕第一列为零）。

**highlight** 打开信息窗口和菜单边框的高亮显示（默认）。

**nohighlight** 关闭信息窗口和菜单边框的高亮显示。

**eightbit** 打开八位字符的显示。

**noeightbit** 关闭八位字符的显示（它们以尖括号内的十进制值显示，例如 "<220>"）。

**16bit** 打开 16 位字符的处理。

**no16bit** 关闭 16 位字符的处理。

**emacs** 打开 emacs 键绑定。

**noemacs** 关闭 emacs 键绑定。

### 保存编辑器配置

使用 **settings** 菜单中的此项时，用户可以选择将编辑器的当前配置（参见上文“从文件初始化 ee”）保存到当前目录或用户主目录中名为 `.init.ee` 的文件。如果名为 `.init.ee` 的文件已存在，它会被重命名为 `.init.ee.old`。

## 注意事项

本材料按“原样”提供。对于本材料，不作任何形式的保证，包括但不限于适销性和特定用途适用性的隐含保证。Hewlett-Packard 和 Hugh Mahon 对此处所含的错误，或与提供、性能或使用本材料相关的附带或后果性损害概不负责。Hewlett-Packard 和 Hugh Mahon 均不对本软件或文档的使用或可靠性承担任何责任。本软件和文档完全无支持。无可用支持合同。Hewlett-Packard 未对本程序或文档进行任何质量保证。你可能会发现本材料的质量不如受支持的材料。

在编辑之前，请务必为无法轻易复现的文件制作副本。尽早保存文件，并经常保存。

### 国际代码集支持

`ee` 支持单字节字符编码集（八位干净）或中文 Big-5 编码集。（其他多字节编码集可能也能工作，但 Big-5 之所以能工作，是因为一个两字节字符在屏幕上也占据两列。）

## 警告

自动段落格式化操作在较慢的系统上可能过于缓慢。

## 文件

**/usr/share/misc/init.ee**

**$HOME/.init.ee**

**.init.ee**

## 作者

`ee` 软件由 Hugh Mahon 开发。

本软件和文档包含受版权保护的专有信息。保留所有权利。

Copyright (c) 1990, 1991, 1992, 1993, 1995, 1996, 2001 Hugh Mahon.

## 参见

termcap(4), terminfo(4), environ(5), spell(1), ispell(1), lp(1), aee(1)
