## AkelPad 4 - 用户手册

### 目录：

1. 兼容性
2. 一般说明
3. 功能
4. 命令行参数
5. 手动设置
6. 键盘命令
7. 内部命令
8. 正则表达式语法
9. 许可协议
10. 贡献者

### 兼容性

本程序力图可以在 Windows 95/98/Me 和 Windows NT 4.0/2000/XP/2003/Vista/7/8 上运行。

### 一般说明

记事本 是一款很棒的编辑器，可以以纯文本格式来编辑文件，因此它在编程、设计网页文档及诸如此类方面是不可替代的。然而，作为 Windows 的一个组件，由于几个局限使它不方便使用。本程序就是能够弥补这些缺点。
注意：本程序针对 Unicode 方面有优越性。因此强烈推荐您设置 TrueType 字体 (如 Courier New) 以获得更多此功能的优越性。

### 功能

常规功能主要说明如下：

- 单一窗口模式 (SDI)，多窗口模式 (MDI) 和伪多窗口模式 (PMDI)；
- 完全支持 Unicode 系统 (NT/2000/XP/2003/Vista/7) 上的 Unicode 字符串；
- 支持 Unicode 代码页 (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE)；
- 支持系统上已经安装的任何代码页；
- 支持 DOS/Windows、Unix 和 Mac 换行符格式；
- 文件打开前预览；
- 纠正错误代码页显示；
- 文本列选；
- 多级撤消；
- 快速搜索/替换文本字串；
- 记住文件代码页和插入点位置；
- 文档打印预览和打印；
- 支持语言模块；
- 插件支持 (语法高亮显示、文本折叠、自动完成、脚本执行、键盘宏……)。

### 命令行参数

AkelPad.exe [参数] "file1.ext" [参数] "file2.ext" [参数] ...

/x | - 当解析命令行参数时不使用 MS Notepad 兼容模式。
/p | - 打印下一个文件，然后关闭。
/C+ | - 如果文件不存在就静默创建新文件。
/C- | - 如果文件不存在也不要创建新文件。
/C | - 如果文件不存在就询问是否创建新文件(默认值)。
/B+ | - 如果文件是二进制文件就静默打开文件。
/B- | - 如果文件是二进制文件就不要打开文件。
/B | - 如果文件是二进制文件就询问是否打开文件(默认值)。
/L+ | - 即使在指定编码下符号将会丢失也要静默保存文件。
/L- | - 如果在指定编码下符号将会丢失就不保存文件。
/L | - 如果在指定编码下符号将会丢失就询问是否保存文件(默认值)。
/Z | - 忽略下一个命令行参数。
/NewInstance | - 强制新建程序例程。
/MainClass("MyAkelPad4") | - 给新程序例程设置一个类名。名称可以包含变量 %d, 表示进程 ID。
/Reassoc | - 重新关联先前指定的文件类型。
/Deassoc | - 取消关联先前指定的文件类型。
/Quit | - 停止传递命令行参数并退出程序。
/End | - 停止传递命令行参数

方法: /Show(主窗口样式) 主窗口样式 0 隐藏窗口。 1 窗口默认值。 2 最小化窗口。 3 最大化窗口。 6 最小化、非活动窗口。 9 无最大化窗口。 /Show(2) 以最小化样式显示主窗口的方法。 /OpenFile("文件", [使用代码页], [使用BOM])
"文件" | 要打开的文件。
使用代码页 | 打开代码页。如果 -1 或未指定表示自动检测。
使用BOM | 文件字节顺序标记。如果 -1 或未指定表示自动检测。
/OpenFile("C:\File.txt", 65001, -1) 方法将使用 UTF-8 代码页打开文件。 /SaveFile("文件", [使用代码页], [使用BOM])
"文件" | 保存当前的文档到指定的文件名。
使用代码页 | 如果 -1 或未指定表示将会使用当前的代码页。
使用BOM | 字节顺序标记。1 表示存在，0 表示不存在，-1 表示未指定将会使用当前的 BOM。
/SaveFile("C:\File.txt", 65001, 0) 方法将使用无 BOM 的 UTF-8 代码页保存文件。 /Command(内部命令, [参数]) /Command(4162) 方法将调用 内部命令 4162。 /Call("插件::函数", [附加参数]) /Call("Scripts::Main") 方法将调用 脚本 插件的主函数。 /Exec("命令行", ["工作目录"], [等待][, 窗口模式]) "命令行" 命令行字符串。 "工作目录" 工作目录字符串。默认值为 ""。 等待 等待直到程序完成。1 - 等待，0 - 立即返回(默认值)。 窗口样式 请参阅 MainWindowStyle 的 /Show() 方法的说明。注意: 程序可能会忽略这个参数。 /Exec("notepad.exe") 方法将调用 记事本。 /Exec(`notepad.exe`) 方法将调用 记事本。 /Exec('notepad.exe') 方法将调用 记事本。 /Exec('%windir%\notepad.exe') 方法将调用 记事本。 /Exec(`rundll32.exe shell32,ShellExec_RunDLL "%f"`, "%d") 方法将传递用 Windows 关联程序来打开活动文件。 /Font("字体", 字形, 大小) "字体" 字体名称，如："Courier". "" 表示不改变。 字形 (下列之一): 0 忽略。 1 常规。 2 粗体。 3 斜体。 4 粗斜体。 大小 字体的大小。0 表示不改变。 /Font("Courier", 4, 10) 方法将设置 Courier 粗斜体，大小 10 号。 /Recode(源编码, 目标编码) 源编码 来源代码页。值为 -1 表示自动检测。 目标编码 目标代码页。值为 -1 表示自动检测。 /Recode(1252, 437) 文字的代码页从 1252 到 437。 /Insert("文字", [转义符序列]) "文字" 要插入的文字。 转义符序列: 0 - "文字" 不包含转义符序列 (默认值)。 1 - "文字" 包含转义符序列。转义符序列集与程序的查找/替换对话框的相同，并且: "\s" - 将替换为编辑窗口中的选定区域的文字； "\|" - 设置插入点的位置在插入文本之后。 /Insert("一些字符串") 方法将用指定的文字替换选定区域。 /Insert("<B>\s</B>", 1) 方法将围起选定区域。 /Insert("\[0031 0032 0033]", 1) 方法将替换选定区域为 "123"。 /If("表达式", "IfTrue", "IfFalse") "表达式" 表达式可以由下列组成: - 数学运算符: +, -, *, /, %, &, |, ^. - 逻辑运算符: >, <, ==, !=, >=, <=, &&, ||, x?y:z. - 注释: /*注释*/ - 方法: SendMain(nMessage, wParam, lParam) nMessage 指定要发送给主窗口的消息。 wParam 指定额外消息特定信息。 lParam 指定额外消息特定信息。 SendEdit(nMessage, wParam, lParam) nMessage 指定要发送给当前编辑窗口的消息。 wParam 指定额外消息特定信息。 lParam 指定额外消息特定信息。 Call("Plugin::Function"[, 附加参数]) - 如果调用一个脚本，那么就有必要使用外部调用 2 或 4，并且还可以通过 AkelPad.ScriptExitCode 从脚本传递退出代码。 /If(`Call("Scripts::Main", 4, "EvalCmd.js", 'if (AkelPad.GetEditFile(0)) AkelPad.ScriptExitCode(1);')`, ``, `/Quit`) 若当前文档无名称就退出。 - 如果调用一个插件，那么通过指定的参数 &nResult 传递退出代码。&nResult 必须放在外部调用语法请求指向一个整数的指针的位置。 /If(`Call("Coder::CodeFold", 1, &nResult)`, `/Call("Coder::CodeFold", 1)`, ``) 若 CodeFold 窗口已打开就关闭它。 "IfTrue" 命令行，如果表达式结果为“真” (不等于 0)。 "IfFalse" 命令行，如果表达式结果为“假” (等于 0)。 /If(`SendMain(1222 /*AKD_GETMAININFO*/, 5 /*MI_SAVESETTINGS*/, 0) == 2 /*SS_INI*/`, `/OpenFile("%a\AkelPad.ini")`, ``) 如果设置是保存到 ini 文件就打开 AkelPad.ini 的方法。 /Var(标志) 在接下来的命令行方法中使用变量的标志。根据下列成员的和来设置: 0 不展开变量 1 展开系统变量 (如: %windir%)。 2 展开程序变量 %f,%d,%a. 若使用，符号 % 应写为 %%。 默认值: 1+2=3。 /Var(0) /OpenFile("1%a%2.txt") 打开文件 "1%a%2.txt"。 方法中可使用的变量:
标准用法 | 批处理文件 (bat,cmd)
%f - 活动文件 %d - 活动文件所在的目录 %a - AkelPad 目录 (即 包含有 AkelPad.exe 的目录) %% - % 符号 %系统变量%(即 环境 变量) | %%f - 活动文件 %%d - 活动文件所在的目录 %%a - AkelPad 目录 (即 包含有 AkelPad.exe 的目录) %%%% - % 符号 %系统变量%(即 环境 变量) ^& - & 符号

### 手动设置

设置根据选项被保存在 AkelPad.ini 或在注册表(HKEY_CURRENT_USER\Software\Akelsoft\AkelPad) 中。

CmdLineBegin | 在执行命令行之前添加指定代码到命令行的开头。 例: /C+ 默认值: ""。
CmdLineEnd | 在执行命令行之前添加指定代码到命令行的末尾。 例: /Call("Scripts::Main", 1, "InsertDate.js", "") /C /B /L 默认值: ""。
ShowModify | 决定 文档已更改 状态将会在哪里显示。根据下列成员的和来设置：
1 | 在状态栏显示 "已修改"。
2 | 在主窗口标题栏 (SDI) 显示星号 *。
4 | 在主窗口和帧窗口的标题 (MDI/PMDI) 显示星号 *。
8 | 在标签按钮名称 (MDI/PMDI) 显示星号 *。
默认值：1+8=9，全部显示：1+2+4+8=15。
StatusPosType | 定义状态栏统计将会如何显示。根据下面成员的和来设置：
1 | "行号:列号". 默认值："行号:符号"。
2 | 自动换行数。默认值：非自动换行数。
默认值：0。
WordBreak | 定义插入点在按 Ctrl+左键/Ctrl+右键 时如何移动。仅当启用了设置中的 "单词分隔符" (WordDelimitersEnable=1)。根据下列成员的和来设置：
1 | 当找到单词开始位置时停止左移。
2 | 当找到单词结束位置时停止左移。
4 | 当找到单词开始位置时停止右移。
8 | 当找到单词结束位置时停止右移。
16 | 当找到空格开始位置时停止移动。不能与 64 组合。
32 | 当找到空格结束位置时停止移动。不能与 128 组合。
64 | 当找到空格开始位置时继续移动。不能与 16 组合。
128 | 当找到空格结束位置时继续移动。不能与 32 组合。
256 | 当找到换行符时停止移动。
默认值：1+2+4+8+32+64=111 (AkelEdit)，1+8=9 (AkelPad)。
MouseOptions | 定义鼠标设置。根据下列成员的和来设置：
1 | GUI (左键点击空白处选定行)。
2 | GUI (使用 RichEdit 鼠标选择)。
4 | GUI (启用鼠标拖放)。
8 | GUI (右键点击移动插入点)。
16 | 三击和左边空白点击选择行的内容时不包含换行符。
32 | 禁用通过 Ctrl + 滚动鼠标滚轮来更改字号。
64 | 使用鼠标选择行时选定所有自动换行的行。
128 | 鼠标中键点击之后不滚动。
256 | 反转鼠标水平滚轮。
512 | 反转鼠标垂直滚轮。
默认值: 1+2+4=7。
SingleOpenProgram | MDI/PMDI模式下的选项“同一程序只打开一次”。根据下面数字之和来设置:
1 | GUI (选项为“开”)。
2 | 选项仅适用于相同的 exe 文件。需要管理员权限来运行 (UAC)。
默认值: 1。
TabOptionsMDI | 在 Defines tabs settings in MDI/PMDI 模式中定义标签设置。根据下面数字之和来设置:
1 | GUI (隐藏标签)。
2 | GUI (标签显示在编辑窗口顶部)。
4 | GUI (标签显示在编辑窗口底部)。
256 | GUI (标签样式 - 标准)。
512 | GUI (标签样式 - 按钮)。
1024 | GUI (标签样式 - 平面按钮)。
65536 | GUI (热键传递焦点为 下个-上个)。
131072 | GUI (热键传递焦点为 右-左)。
524288 | 在当前标签之后创建新标签。
1048576 | 禁用鼠标左键在标签栏双击时创建新的标签。
2097152 | 禁用鼠标中键在标签栏点击时创建新的标签。
4194304 | 禁用鼠标左键在标签上双击时关闭标签。
8388608 | 禁用鼠标左键在标签上点击时关闭标签。
268435456 | 退出时首先关闭被修改的标签。
默认值: 2+256+131072=131330。
TabNameFind | 手动参数 "TabNameFind" 和 "TabNameRep" - 为 MDI/PMDI 模式下的标签名称定义正则表达式搜索/替换模式。如果没有搜索结果，文件名称显示无变化。与 TabNameRep 配合使用。 默认值: ""。
TabNameRep | 手动参数 "TabNameFind" 和 "TabNameRep" - 为 MDI/PMDI 模式下的标签名称定义正则表达式搜索/替换模式。如果没有搜索结果，文件名称显示无变化。与 TabNameFind 配合使用。 例: TabNameFind=(.{20})[^.]{4,}(.*) TabNameRep=\1..\2 默认值: ""。
PaintOptions | 定义一些文本绘制设置。根据下面数字之和来设置:
1 | 根据字符组来绘制文本 (默认值是根据字符)。使用这个标记，一些文本识别程序可以正常工作，打印机可以打得更快，但高亮显示符号和组合式 unicode 符号可能绘制有差异，编辑它们时可能变得不舒服。
2 | 禁止绘制选择的换行符为空格符。
4 | 在文本区域右边边缘绘制选择的换行符。
8 | 当控件失去输入焦点时隐藏选定区域。
16 | 在最后行之后禁用标尺线绘制。
128 | 以行为单位的垂直滚动 (默认值为像素)。
256 | 仅当需要时显示滚动条。
512 | 绘制窄的编辑窗口边框。
1024 | 绘制无编辑窗口边框。
默认值: 0。
FixedCharWidth | 定义固定字符宽度。包括比例字体在内的所有符号将会以这个宽度来绘制。特殊值:
1 | 字体拉丁字符平均宽度。
4 | 字体空格宽度。
6 | 字体拉丁字符最大宽度。
0 | 禁用固定宽度。
默认值: 0。
EditStyle | 定义一些编辑窗口创建标记。根据下面数字之和来设置:
1 | 对撤消缓冲区使用进程堆而不是窗口堆。这个标记应用于 AEM_DETACHUNDO 和 AEM_ATTACHUNDO 消息，但关闭编辑窗口时，内存释放速度会慢一点。
默认值: 0。
RichEditClass | 定义编辑控件类名:
0 | "AkelEdit"。
1 | "RichEdit20"。
默认值: 0。
AkelAdminResident | 定义“AkelAdmin.exe”的居住:
0 | AkelAdmin.exe 从内存中卸载。每次更改受保护文件时提示需要密码。
1 | AkelAdmin.exe 保留在内存中。仅首次更改受保护文件时提示需要密码。
默认值: 1。
StatusUserFormat | 自定义状态栏格式:
%[width] | 添加状态栏分隔符。
%Ch | 文件代码页中当前字符的小写 16 进制码。
%CH | 文件代码页中当前字符的大写 16 进制码。
%ch | 当前字符的小写 16 进制码。
%cH | 当前字符的大写 16 进制码。
%cd | 当前字符的 10 进制码。
%cl | 当前字符字母。
%or | 符号数偏移量。任何换行符都被视为一个符号 (RichEdit)
%ob | 符号数偏移量。换行符: \r\r\n - 三个符号，\r\n - 两个符号，\r - 一个符号，\n - 一个符号。请酌情使用，因为它会引起在大文件上慢下来。
%al | 文档中的行数。
%ar | 文档中的符号数 (RichEdit)。
%lb | 选定行的开始行号。
%le | 选定行的结束行号。
%ls | 选定范围中的行数。
%f | 字体大小。
%t | 制表符大小。
%m | 标尺线位置。
%cap[文字] | 当 CapsLock 为开时要显示的文字。
%num[文字] | 当 NumLock 为开时要显示的文字。
%se[文字] | 当搜索时到达文档的末尾时要显示的文字。
%r | “全部替换”之后的替换数。
%dc | 所有文档数 (MDI/PMDI)。
%dm | 已修改的文档数 (MDI/PMDI)。
%ds | 未修改的文档数 (MDI/PMDI)。
%di | 活动文档索引 (MDI/PMDI)。
%% | % 符号。
制表符 | 一个制表符文本居中，第二个制表符右对齐。
例: "符号:0x%ch%[85]字号:%f%[48]Tab:%t%[38]标尺线:%m%[60]文档:%dm*/%dc" 默认值: "" - 未定义格式，不显示附加的状态栏区段。
DateInsertFormat | 定义插入日期和时间的格式。 时间:
h | 无前导零的单位数的小时；12 小时制。
hh | 带前导零的单位数的小时；12 小时制。
H | 无前导零的单位数的小时；24 小时制。
HH | 带前导零的单位数的小时；24 小时制。
m | 无前导零的单位数的分钟。
mm | 带前导零的单位数的分钟。
s | 无前导零的单位数的秒。
ss | 带前导零的单位数的秒。
t | 单字符时间标识字串，如 A 或 P。
tt | 多字符时间标识字串，如 AM 或 PM。
日期:
d | 无前导零的单位数的日。
dd | 带前导零的单位数的日。
ddd | 三个字母缩写的星期。
dddd | 完整名称的星期。
M | 无前导零的单位数的月。
MM | 带前导零的单位数的月。
MMM | 三个字母缩写的月。
MMMM | 完整名称的月。
y | 最后两位数的年，但少于 10 时无前导零。
yy | 最后两位数的年，但少于 10 时带前导零。
yyyy | 完整四位数的年。
gg | 周期/年代字串 (如：B.C.、A.D.)。
例: "H:mm:ss dd MMMM yyyy" -> "12:50:24 01 September 2010" 默认值: "" - 程序定义的日期和时间格式。
DateLogFormat | 定义以 “.LOG”开头的文件的日期和时间的格式。仅当启用设置 "如果文件以“.LOG”开头时插入日期" (DateLog=1) 时可用。请查看 DateInsertFormat 了解语法描述。 默认值: "" - 程序定义的日期和时间格式。
AkelUpdaterOptions | 定义当从“帮助/检查更新...”菜单项目启动 AkelUpdater.exe 时的命令行选项。 默认值: ""。
UrlCommand | 为超链接点击定义命令。变量 %u 表示超链接文本。 例: Exec(`"%ProgramFiles%\Mozilla Firefox\firefox.exe" "%u"`) 默认值: "" - 由操作系统打开超链接。

### 键盘命令

Ctrl+X Shift+Del | 剪切
Ctrl+C Ctrl+Ins Ctrl+Shift+C | 复制
Ctrl+V Shift+Ins | 粘贴
Ctrl+Shift+V Ctrl+Shift+Ins | 粘贴 ANSI 文本
Alt+V | 粘贴到列选区域
Ctrl+A | 全选
Backspace | 从左边删除
Del | 从右边删除
Ctrl+Z | 撤消
Ctrl+Shift+Z | 恢复
Insert | 插入/改写 模式
Home | 转到行的开始位置
End | 转到行的结束位置
Ctrl+Home | 转到文本的开始位置
Ctrl+End | 转到文本的结束位置
Ctrl+Left | 转到单词的开始位置
Ctrl+Right | 转到单词的结束位置
Ctrl+Up | 转到上一行的开始位置
Ctrl+Down | 转到下一行的开始位置
Ctrl+PageUp | 转到第一个可视字符
Ctrl+PageDown | 转到最后一个可视字符
Ctrl+Backspace | 删除左边单词
Ctrl+Del | 删除右边单词
Ctrl+N | 创建新的文件
Ctrl+Shift+N | 创建新的窗口
Ctrl+O | 打开文件
F5 Ctrl+Shift+O | 重新打开文件
F2 Ctrl+S | 保存
Shift+F2 Ctrl+Shift+S | 另存为
Ctrl+Alt+F2 | 全部保存
Ctrl+Alt+F4 | 全部关闭
Ctrl+P | 打印
Esc Alt+F4 | 退出
Ctrl+F | 查找
F3 | 向下查找下一个。查找/替换对话框：关闭对话框并向下查找下一个。
Shift+F3 | 向上查找下一个。查找/替换对话框：关闭对话框并向上查找下一个。
Ctrl+H | 查找并替换
Ctrl+G | 转到行 (根据数字)
Ctrl+I | 运行“字符映射表”(即“编辑/插入符号”菜单项目)
Ctrl+D | 插入日期
Ctrl+T | 开/关 "总在最前"
Ctrl+U | 开/关 "自动换行"
Alt+W | 以 ANSI (Windows) 重新打开文件
Alt+D | 以 OEM (DOS) 重新打开文件
Alt+K | 以 KOI8-R 重新打开文件
Alt+L | 以 UTF-16LE 重新打开文件
Alt+b | 以 UTF-16BE 重新打开文件
Alt+U | 以 UTF-8 重新打开文件
Shift+Alt+W | 以 ANSI (Windows) 保存文件
Shift+Alt+D | 以 OEM (DOS) 保存文件
Shift+Alt+K | 以 KOI8-R 保存文件
Shift+Alt+L | 以 UTF-16LE 保存文件
Shift+Alt+b | 以 UTF-16BE 保存文件
Shift+Alt+U | 以 UTF-8 保存文件
Alt+F5 | 使用代码页检测来重新打开文件
F12 | 显示上下文菜单来快速重新打开/保存到想要的代码页
Alt+R | 重编码文本 (即“编辑/选择/重编码...”菜单项目)
Shift+Space | 多行选择时删除空格，否则插入空格。
Shift+Backspace | 删除第一个字符
Alt+Backspace | 去除尾部的空格
Alt+P | 插件 对话框
Ctrl+F5 | 执行命令
Ctrl+L | 开/关 "保留左边空格"
Ctrl+Enter | 如果“保留左边空格”为关，插入换行时保留左边空格。 如果“保留左边空格”为开，插入换行时不保留左边空格。
F4 Alt+Enter | 最大化/恢复 窗口
F8 Ctrl+Y | 删除当前行
Alt+\ | 移动插入点到选定区域的另一端
Alt+, | 移动插入点到上一个位置
Alt+. | 移动插入点到下一个位置
Ctrl+Num + | 字号增加 1 点
Ctrl+Num - | 字号减小 1 点
Ctrl+Num * | 恢复到启动时的字号
Ctrl+5 | 循环选定区域的大小写更改
Ctrl+6 | 大写 选定的文本
Ctrl+7 | 小写 选定的文本
Ctrl+8 | 句子大小写 选定的文本
Ctrl+9 | 标题大小写 选定的文本
Ctrl+0 | 反转大小写 选定的文本
F6 | 转到下一个对话框
Shift+F6 | 转到上一个对话框
F9 | 激活下一个窗格 (拆分窗口)
Shift+F9 | 激活上一个窗格 (拆分窗口)
F10 | 选择窗口对话框 (MDI/PMDI)
Ctrl+Tab Ctrl+F6 | 下一个窗口 (MDI/PMDI)
Ctrl+Shift+Tab Ctrl+Shift+F6 | 上一个窗口 (MDI/PMDI)
Ctrl+F4 Ctrl+W | 关闭窗口 (MDI/PMDI)

### 内部命令

可以在命令行 /Command() 方法、ContextMenu、ToolBar、Hotkeys 和 Scripts 插件中使用。

4101 | 创建新的编辑窗口
4102 | 创建新的程序实例
4103 | 打开文件对话框 可选参数: 1 - 强制使用最近目录。
4104 | 重新打开文件
4105 | 保存文件
4106 | 保存文件对话框 可选参数: 1 - 强制使用最近目录。
4107 | 打印设置对话框
4108 | 打印对话框
4109 | 退出程序
4110 | 保存所有文档
4111 | 全部另存为对话框
4113 | 无对话框打印
4114 | 打印预览对话框
4121 | 重新检测当前文件的代码页
4122 | 重新打开文件时使用编码 ANSI
4123 | 重新打开文件时使用编码 OEM
4124 | 重新打开文件时使用编码 KOI-R
4125 | 重新打开文件时使用编码 UTF16LE
4126 | 重新打开文件时使用编码 UTF16BE
4127 | 重新打开文件时使用编码 UTF8
4131 | 另存为文件时使用编码 ANSI
4132 | 另存为文件时使用编码 OEM
4133 | 另存为文件时使用编码 KOI-R
4134 | 另存为文件时使用编码 UTF16LE
4135 | 另存为文件时使用编码 UTF16BE
4136 | 另存为文件时使用编码 UTF8
4137 | 另存为文件时使用编码 UTF8 无 BOM
4140 | 显示代码页上下文菜单
4151 | 撤消最后的操作
4152 | 恢复最后的操作
4153 | 剪切 可选第一个参数: 1 - 若无选定文本就剪切插入点处的单词； 2 - 若无选定文本就剪切插入点所在的行； 4 - 若无选定文本就剪切插入点所在的未经自动换行的行。 8 - 也剪切换行符。与标记 2 (2+8=10) 或 4 (4+8=12) 配合使用。 可选第二个参数: 1 - 输入换行符。 2 - 输出换行符（默认值）。 3 - 原样的换行符。 5 - "\r" 换行符。 6 - "\n" 换行符。 7 - "\r\n" 换行符。 8 - "\r\r\n" 换行符。 参数值计算方式: (第一个参数值) + 100000 * (第二个参数值)
4154 | 复制 可选第一个参数: 1 - 若无选定文本就复制插入点处的单词； 2 - 若无选定文本就复制插入点所在的行； 4 - 若无选定文本就复制插入点所在的未经自动换行的行。 8 - 也复制换行符。与标记 2 (2+8=10) 或 4 (4+8=12) 配合使用。 可选第二个参数: 1 - 输入换行符。 2 - 输出换行符（默认值）。 3 - 原样的换行符。 5 - "\r" 换行符。 6 - "\n" 换行符。 7 - "\r\n" 换行符。 8 - "\r\r\n" 换行符。 参数值计算方式: (第一个参数值) + 100000 * (第二个参数值)
4155 | 粘贴 可选第一个参数: 1 - 粘贴文本为 ANSI。和命令 4191 相同。 2 - 粘贴到列选。和命令 4192 相同。 4 - 选择粘贴后的文本。 可选第二个参数: 1 - 输入换行符（默认值）。 2 - 输出换行符。 3 - 原样的换行符。 5 - "\r" 换行符。 6 - "\n" 换行符。 7 - "\r\n" 换行符。 8 - "\r\r\n" 换行符。 参数值计算方式: (第一个参数值) + 100000 * (第二个参数值)
4156 | 删除
4157 | 全选
4158 | 查找对话框
4159 | 向下查找最近字串
4160 | 向上查找最近字串
4161 | 替换对话框
4162 | 转到行对话框
4163 | 运行 charmap.exe
4164 | 插入制表符
4165 | 仅当选定几行时插入制表符
4166 | 若选择多行时删除制表符，否则插入制表符。 可选参数: 1 - 删除选择单一行的制表符。
4167 | 仅当选定几行时删除制表符
4168 | 插入空格
4169 | 仅当选定几行时插入空格
4170 | 若选择多行时删除空格，否则插入空格。 可选参数: 1 - 删除选择单一行的空格。
4171 | 仅当选定几行时删除空格
4172 | 删除第一个字符
4173 | 仅当选定的不为空时删除第一个字符
4174 | 删除尾部空格
4175 | 大写 选定的文本 可选参数: 1 - 如果没有选定文本就改变整个文档的大小写
4176 | 小写 选定的文本 可选参数: 1 - 如果没有选定文本就改变整个文档的大小写
4177 | 句子大小写 选定的文本 可选参数: 1 - 如果没有选定文本就改变整个文档的大小写
4178 | 标题大小写 选定的文本 可选参数: 1 - 如果没有选定文本就改变整个文档的大小写
4179 | 反转大小写 选定的文本 可选参数: 1 - 如果没有选定文本就改变整个文档的大小写
4180 | 循环大小写 可选参数: 1 - 如果没有选定文本就改变整个文档的大小写
4182 | 重编码对话框
4183 | 插入日期
4184 | 换行符格式 Windows
4185 | 换行符格式 Unix
4186 | 换行符格式 Mac
4190 | 插入/覆盖模式
4191 | 以 ANSI 文本粘贴
4192 | 粘贴到列选
4193 | 粘贴文本到插入点之后
4194 | 根据选择区域的大小写来粘贴文本
4195 | 删除选定区域中的所有空白字符
4196 | 如果“保留左边空格”为关，插入换行时保留左边空格。 如果“保留左边空格”为开，插入换行时不保留左边空格。
4197 | 删除当前行 可选参数: 1 - 删除所有自动换行。
4198 | 移动插入点到选定区域的另一端
4199 | 移动插入点到上一个位置
4200 | 移动插入点到下一个位置
4201 | 字体对话框
4202 | 颜色方案对话框
4204 | 字号增加 1pt
4205 | 字号减小 1pt
4206 | 恢复到启动时的字号
4209 | 自动换行 (开\关)
4210 | 总在最前 (开\关)
4211 | 显示状态栏 (开\关)
4212 | 拆分窗口为四个窗格
4213 | 拆分窗口为两个垂直窗格
4214 | 拆分窗口为两个水平窗格
4215 | 拆分窗口 (开\关)
4216 | 只读 (开\关)
4251 | 执行命令
4252 | 保存文件时间 (开\关)
4253 | 监视文件更改 (开\关)
4254 | 保留左边空格 (开\关)
4255 | 单一打开文件 (开\关)
4256 | 单一打开程序 (开\关)
4259 | 插件对话框
4260 | 选项对话框
4261 | 单窗口
4262 | 多窗口
4263 | 伪多窗口
4301 | 标签列表窗口在主窗口的顶部
4302 | 标签列表窗口在主窗口的底部
4303 | 隐藏 标签列表
4304 | 标准 标签列表风格
4305 | 按钮 标签列表风格
4306 | 平坦按钮 标签列表风格
4307 | MDI 窗口 - 水平平铺
4308 | MDI 窗口 - 垂直平铺
4309 | MDI 窗口 - 层叠
4310 | 切换标签: 下一个-上一个。
4311 | 切换标签: 右-左。
4316 | 激活下一个标签
4317 | 激活上一个标签
4318 | 关闭当前标签
4319 | 关闭所有标签
4320 | 关闭除活动外的所有标签
4321 | 关闭所有未被修改的标签 可选参数: 1 - 关闭所有被修改的标签。
4322 | 克隆当前标签
4323 | 复制当前标签的文件的路径 可选参数: 0 - 复制完整路径 (默认值); 1 - 复制目录; 2 - 复制文件名称; 3 - 复制文件名称 (不带扩展名); 4 - 复制文件扩展名。
4324 | 关闭文件
4325 | 关闭文件并退出程序 (SDI) 或关闭一个文件的标签 (MDI/PMDI)。
4327 | 选择窗口对话框 (MDI/PMDI)。与 10019 相同。
4331 | 恢复/最大化主窗口
4332 | 激活下一个对话框窗口
4333 | 激活上一个对话框窗口
4341 | 激活下一个窗格 (拆分窗口)
4342 | 激活上一个窗格 (拆分窗口)
4351 | 关于对话框
4352 | 打开用户手册 (即 本文档)
4353 | 检查更新 (AkelUpdater)，使用 AkelUpdaterOptions 字串
5001 | 从最近文件列表中删除失效的文件
5001 + n | 打开最近文件 n
6001 | 激活内部语言
6001 + n | 激活语言 n
7001 | 使用代码页列表的第一个代码页来重新打开文件
7001 + n | 使用代码页列表的第 n 个代码页来重新打开文件
8001 | 使用代码页列表的第一个代码页来保存文件
8001 + n | 使用代码页列表的第 n 个代码页来保存文件
10019 | 选择窗口对话框 (MDI/PMDI)。与 4327 相同。

### 正则表达式语法

正则表达式是普通字符 (例：a-z) 和被称为元字符的特殊字符组成的文本模式。该模式描述了搜索文本时匹配一个或多个字符串。

表达式示例 | 匹配
--- | ---
^\s*?$ | 匹配一个空行。
\d{2}-\d{5} | 验证一个由2位数字、1个连字符、额外的5位数字组成的 ID 号。
<(\w+)[^>]*>.*?</\1> | 匹配一个 HTML 标记。

下表包含了完整的元字符的列表及其在正则表达式的上下文中的行为:

字符 | 说明
--- | ---
\ | 将下一个字符标记为一个特殊字符、或一个原义字符("()[]{}^$.?+*\|" 字符之一)、或一个 向后引用、或一个八进制转义符。例如，'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 '\(' 则匹配 "("。
^ | 匹配行的开始位置。
$ | 匹配行的结束位置。
* | 匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ | 匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。
? | 匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} | n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。
{n,} | n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} | m 和 n 均为非负整数，其中n <= m。最少匹配 n 次且最多匹配 m 次。例如，"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
. | (点或句点)匹配任何单个字符。
(pattern) | 匹配 pattern 并获取这一匹配。所获取的匹配可以在 \0...\9 向后引用的结果集合中检索。要匹配圆括号字符，请使用 '\(' 或 '\)'。
(?^pattern) | 反向匹配 pattern 并获取这一匹配。模式必须为固定的长度，但可以包含反向引用。
(?:pattern) | 匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) | 正向肯定预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ，但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。
(?!pattern) | 正向否定预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows"，但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。
(?<=pattern) | 执行反向肯定预查的子表达式，该表达式匹配处于匹配 pattern 的字符串的结尾点的字符串。例如，'(?<=abc)z' 仅匹配前面表达式为“abc”的“z” 。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。Pattern 的长度必须是固定的，但可以包含向外引用。
(?<!pattern) | 执行反向否定预查的子表达式，该表达式匹配不处于匹配 pattern 的字符串的结尾点的字符串。例如，'(?<!abc)z' 仅匹配前面表达式不是“abc”的“z” 。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。Pattern 的长度必须是固定的。
(?>pattern) | 原子子表达式。如果部分 pattern 已经找到，在此 pattern 里就禁止回溯。例如，'a(?>bc|b)c' 匹配 "abcc"，但不匹配 "abc"。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。
(?(条件)pattern-真|pattern-假) (?(条件)pattern-真) | 如果符合条件，就使用 pattern-真; 否则使用 pattern-假 (如果有)。条件可以为被用来检测匹配成功与否的带正数/负数的向前/向后搜索的模式或向后引用的数字。例如，'(a)?b(?(1)c|d)' 匹配 "abc" 中的 "abc"，"zbd" 的 "bd"。因为，如果找到 "a"，那么就尝试查找 "b" 后的 "c", 如果没找到 "a", 那么就尝试查找 "b" 的 "d".
(?选项) | 选项如果是在某一模式开头指定，就仅应用到当前的群组，如：'a(?i:b)c' 应用到 "b" 或同样到下一群组；如果单独指定，如：'a(?i)bc' 则应用到 "bc"。 一次可以使用多个选项，如：'a(?im-Us)bc'。
(?i) | 不区分大小写。
(?m) | 多行搜索(默认值)。
(?s) | 点 '.' 匹配任意单一字符(默认值)。
(?U) | 反转贪婪。
(?-i) | 区分大小写。
(?-m) | 关闭多行搜索。'^' 和 '$' 分别匹配文档起始和末尾。
(?-s) | 点 '.' 匹配除换行符外的任意单一字符。
(?-U) | 关闭贪婪反转。
x|y | 匹配 x 或 y。例如，'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] | 字符集合。匹配所包含的任意一个字符。例如，'[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] | 负值字符集合。匹配未包含的任意字符。例如，'[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] | 字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b | 匹配一个单词边界，也就是指单词和分隔间的位置。例如，'er\b' 可以匹配 "never" 中的 'er'，但不能匹配 "verb" 中的 "er"。
\B | 匹配一个非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。
\A | 匹配文档开始处的位置。例如，'\Aabc' 匹配 "abc\ndef" 中的 "abc"，但不匹配 "def\nabc" 中的 "abc"。
\Z | 匹配文档结束处的位置。例如，'abc\Z' 匹配 "def\nabc" 中的 "abc"，但不匹配 "abc\ndef" 中的 "abc"。
\a | 与 \A 类似，但匹配搜索范围开始处的位置。
\z | 与 \Z 类似，但匹配搜索范围结束处的位置。
\d | 匹配一个数字字符。等价于 [0-9]。
\D | 匹配一个非数字字符。等价于 [^0-9]。
\f | 匹配一个换页符。等价于 \x0c。
\n | 匹配任意一个换行符。若要匹配 Unix 换行符请使用 \x0a。
\r | 匹配任意换行符。若要匹配 Mac 换行符请使用 \x0d。
\s | 匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ n\f\n\r\t\v]。
\S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t | 匹配一个制表符。等价于 \x09。
\v | 匹配一个垂直制表符。等价于 \x0b。
\w | 匹配任意单词字符 (除分隔符外的任意字符)。
\W | 匹配任意非单词字符 (任意分隔符)。
\xn | 匹配 n，其中 n 为确定的两个数字长的十六进制转义值。例如，'\x41' 匹配 "A"。
\un | 匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (©)。
\x{n} | 匹配 n, 其中 n 是一个十六进制转义值。例如， '\x{20027}' 等于代理对字符 '\uD840\uDC27'.
| \n | 匹配 n，其中 n 是一个十进制数字，向后引用地获取匹配。例，'(.)\1' 匹配两个连续的相同字符。
\nn | 匹配 nn，其中 nn 是一个十进制的从 01 到 99 的两位数，向后引用地获取匹配。例如，'(.)\01' 匹配两个连续的相同字符。

注意:
- 正则表达式量词 (*, +, {n,}) 默认情况为贪婪模式。要使得为非贪婪模式 (旧行为) 请在量词后使用 "?"，如 "\d*?"。要使它占有优先请在量词之后使用 "+"，如 "\d*+"。
- 使用占有优先量词能提高表达式执行的速度。
- 元字符 \b, \B, \A, \a, \z, \Z, \K 不可应用于字符集 [xyz]，因为它们不属于任何, 因为他们不涉及任何具体的字符。
- 若元字符 \K 从结果中排除，按钮替换对话框中的“替换”将相当于“查找”。

### 许可协议

本程序在 "BSD 许可协议" 条件下发布。BSD 许可协议是由 OSI 批准的开源许可协议。您可以在他们的网站上查找得到它。

### 贡献者

Shengalts Aleksander (e-mail: shengalts@mail.ru)
Kuznetsov Alexey
网站首页http://akelpad.sf.net