使用代码片段插件¶
代码片段 被默认用 EmEditor Professional 安装。该插件让你能快速地插入单词以及短语。代码段通常是让您可以插入到文档中的文本片段,它也可以包含一般文本,占位符,shell code,宏,或正则表达式来转换文本以及各种内置和用户定义的参数。在这个代码片段插件中,你可以创建两种类型的条目 - 代码片段以及宏。
要使用 代码片段 插件,点击 插件 栏中的
。或在 工具 菜单下,指向 插件,然后点击 代码片段,便会出现 代码片段 自定义分栏。
右击代码片段分栏会显示下列选项:
插入 | 插入被选取的代码片段。 |
编辑 | 编辑被选取的代码片段。 |
选择代码片段 | 显示一个对话框,让你能输入一些字符来选择要插入的代码片段。 |
新建代码片段 | 创建一个新的代码片段。 |
新建宏 | 创建一个新的宏。 |
新建文件夹 | 创建一个新的文件夹。 |
上移 | 把选取的代码片段在列表上往上移动。 |
下移 | 把选取的代码片段在列表上往下移动。 |
删除 | 删除被选取的代码片段。 |
删除全部 | 删除全部代码片段。 |
导入到该文件夹 | 把代码片段导入到该文件夹中。 |
导入到根文件夹 | 把代码片段导入到根文件夹中。 |
导出该文件夹/项目 | 导出所有在该文件夹中的代码片段到指定的目标中。 |
导出全部 | 导出所有代码片段到指定的目标中。 |
全部重置(导入默认) | 重置所有代码片段并导入默认代码片段列表。 |
触发键 | 显示或隐藏触发键。 |
配置 | 显示或隐藏配置。 |
插件属性 | 显示插件属性。 |
名称 | 按名称排列。 |
类型 | 按类型排列。 |
文本 | 按文本排列。 |
提示 | 按提示排列。 |
触发文本 | 按触发文本排列。 |
升序 | 按升序排列。 |
降序 | 按降序排列。 |
自动排列 | 自动排列代码片段。 |
属性 | 显示被选取的代码片段或代码片段文件夹的属性。 |
代码片段插件属性¶
要调整代码片段插件属性,右击插件栏中的代码片段插件按钮,选择属性。 自定义分栏位置 设置自定义分栏位置。 后台运行 运行代码片段继续运行即使你关闭了代码片段自定义分栏。 默认快捷键 指定默认快捷键;初始的默认快捷键是 TAB。 详细程度 调整提示的详细程度。 延时 调整在一个提示出现之前的时间。 「添加」按钮 添加一个参数并为它指定一个值。 「删除」按钮 删除一个参数。 命令 列出可用的命令。(“弹出菜单”或“选择代码片段”) 按下新的快捷键 让你能为选取的命令输入快捷键。 当前键 被分配给被选取的命令的当前键。 描述 对被选取的命令的说明。 「分配」按钮 分配快捷键给当前被选取的命令。A 「删除」按钮 删除当前被选取的快捷键。常规页面¶
全局参数页面¶
键盘页面¶
代码片段文件夹属性¶
要调整每一个代码片段文件夹的属性,在代码片段自定义分栏中的一个文件夹上右击,选择“属性”。 名称 指定代码片段文件夹名称。 仅在启用下列配置时使用自动完成 指定要自动完成的配置。 代码片段 设置要用来编辑代码片段的配置。 宏 设置要用来编辑宏的配置。常规页面¶
配置页面¶
代码片段属性¶
要调整每一个代码片段属性,在代码片段自定义分栏中的一个代码片段上右击,选择“属性”。 名称 指定代码片段文件夹名称。 触发文本 为代码片段指定触发文本。 快捷键 为代码片段指定快捷键。 提示 为代码片段指定快捷键。 类型 指定类型(代码片段或宏)。 文本 指定代码片段的文本/ 编辑 让用户能在 EmEditor 窗口中编辑代码片段。 仅在启用下列配置时使用自动完成 指定要自动完成的配置。 代码片段 设置要用来编辑代码片段的配置。 宏 设置要用来编辑宏的配置。常规页面¶
配置页面¶
代码片段语法¶
纯文本¶
代码片段包括任何你想要插入到文档中的纯文本。要编写纯文本,大部分的字符都可以使用,然而,如果你想要包括 \,$,或 ` 到纯文本中,它们必须被转义为 \\,\$,以及 \`。
占位符¶
在你插入一个代码片段后,光标位置会在占位符之间跳转,按 TAB 键会跳到下一个占位符。
你可以在代码片段中将这些制表位定义为 ${n:default},其中 default 是插入片段时首先出现的默认值。若没有默认值,可以省略 {},让制表位显示为 $n,其中 n 为 0 到 9 之间的整数。用户插入片段后,光标的第一个位置在 $1,按 Tab 键会将制表位前移到下一个占位符 $2、$3 等。最后一个制表位为 $0。
例如,下列的代码片段会在 HTML 中插入一个超链接,并且一开始的光标位置是 $1。当光标在 $1 处时,如果用户按 TAB 键,光标会跳到 $2 处,然后到 $0。
<a target="$1" href="$2">$0</a>
代码片段能包括默认数值。下面显示代码片段用一个默认值插入一个超链接。
<a target="${1:_blank}" href="${2:url}">$0</a>
你能在一个占位符中再包含一个占位符。下列代码片段用选取的目标参数插入一个超链接标签。用户能决定是否改写参数,删除它,或再次按 TAB 键前进道下一个占位符处。
<a ${1: target="${2:_blank}"} href="${3:url}">$0</a>
镜像¶
如果你用相同的占位符索引,所有这些占位符的数值都会变为相同或被镜像。下列代码片段插入一个 for 循环。在这个情况下,数值 i 是占位符 $2 的默认值,并且相同索引中的占位符被用在其他两处地方。当光标在 ${2:i} 处时,变更 i 的数值会被镜像到其他地方。
for( ${1:int} ${2:i} = ${3:0}; $2 != ${4:10}; $2++ ){
$0
}
转换¶
你可以使用正则表达式和替换格式,将一个占位符的值转换为另一个。语法为:${n/regexp/replace_format/option},其中:
n:占位符的索引
regexp:要搜索的正则表达式
replace_format:替换格式
option:
i:忽略大小写
g:全局选项
下面的示例会把第一行输入的字符复制到第二行,但会将第一个字符大写。
$1
${1/./\U\0/}
预定义参数:¶
$1:占位符 1
$2:占位符 2
$3:占位符 3
$4:占位符 4
$5:占位符 5
...:...
$9:占位符 9
$0:最后一个占位符
${n:default}:带默认文本的第 n 个占位符
${Path}:文件的完整路径名。
${Dir}:当前文件的目录名。
${Filename}:不含扩展名的文件名。
${FilenameEx}:含扩展名的文件名。
${Ext}:文件扩展名。
${LineText}:光标所在行的文本。
${WordText}:光标所在处的单词。
${SelText}:所选文本。
${CurCol}:光标的逻辑列号。
${CurLine}:光标的逻辑行号。
${Date}:今天的日期。
${Time}:当前时间。
${Charset}:字符集(用于 HTML meta 标签)。
${TabSize}:制表符宽度。
${IndentSize}:缩进宽度。
${AutoIndent}:自动缩进开启为 1,否则为 0。
${UseSpacesForTabs}:“用空格代替制表符”开启为 1,否则为 0。
${AppVersion}:EmEditor 的版本。
${PluginVersion}:Snippets 插件的版本。
${TM_FILENAME}:同 ${FilenameEx}。
${TM_CURRENT_LINE}:同 ${LineText}。
${TM_CURRENT_WORD}:同 ${WordText}。
${TM_DIRECTORY}:同 ${Dir}。
${TM_FILEPATH}:同 ${Path}。
${TM_LINE_INDEX}:同 ${CurCol}。
${TM_LINE_NUMBER}:同 ${CurLine}。
${TM_SELECTED_TEXT}:同 ${SelText}。
${TM_SOFT_TABS}:同 ${UseSpacesForTabs}。
${TM_TAB_SIZE}:同 ${TabSize}。
${PickFullPath,title,filter}:所选文件的完整路径名。title 为对话框标题,filter 的格式为:文本文件|.txt|所有文件|.*||。
${PickRelativePath,title,filter}:所选文件的相对路径名。title 为对话框标题,filter 的格式为:文本文件|.txt|所有文件|.*||。
${PickColor}:所选颜色的 RGB 值。
${DefColor}:最近选择的颜色的 RGB 值。
你也可以创建自定义参数,形式为 ${parameter_name},其中 parameter_name 不在上述预定义列表中。当使用新的用户参数时,会弹出对话框让你输入新值,除非该参数的值已保存在插件属性的“全局参数”页面。
Shell 代码¶
你可以定义一个 Shell 代码来运行控制台应用程序,并将字符串传递给其标准输入。控制台应用程序的标准输出和标准错误会被重定向到文档的光标位置。Shell 代码必须按以下格式指定:
`- appname
stdin1
stdin2
...
`
如果结果字符串以换行符(CR、LF 或 CR+LF)结束,换行符会被移除。例如,下面的片段会以大写形式插入 ${name} 参数的内容。
`- powershell -
# prompts for name then echos the hello greeting
\$name = "${name}".ToUpper()
"Hello \$name!"
exit
`
如果你不想解析片段参数,可以这样写:
`!- appname
stdin1
stdin2
...
`
如果你想运行命令提示符中的命令,可以定义传给命令提示符(cmd.exe)的 Shell 代码,格式如下:
`#cmd shell_code`
你指定的值会以以下形式传给 cmd.exe:
%COMSPEC% /c shell_code
控制台应用程序的标准输出和标准错误会被重定向到文本文档的光标位置。例如,下面的片段会插入当前文件夹的列表。你可以在每个片段中包含任意数量的 Shell 代码。
`#cmd DIR`
宏¶
你可以在片段中以如下形式包含一个宏:
`# `
第一个字符 # 表示这是一个宏,而不是 Shell 代码。如果使用 JavaScript 之外的 ActiveScript(如 VBScript、PerlScript、PHPScript 或 RubyScript),你需要用以下方式定义语言:
`#language= `
例如,如果你希望使用 VBScript,应写作:
`#language="VBScript"... `
Interface 对象用于在片段与 EmEditor 宏引擎之间传递值。下面的示例会将剪贴板的内容插入到光标位置。
The clipboard contains `# Interface.write( clipboardData.getData("") );`.
Interface.write() 方法将宏的结果传回片段。你也可以使用 Interface.writeln(),在结果末尾添加回车和换行(CR+LF)。你可以在每个片段中包含任意数量的宏。
默认值、Shell 代码或宏中的参数¶
占位符的默认值可以包含参数、Shell 代码或宏。下面的片段在存在选择时,插入一个
标签,并将所选文本放在
与
之间。<p>${0:${SelText}}</p>
Shell 代码和宏也可以在其代码或宏中包含参数。下面的片段会显示一个对话框,让用户为 ${name} 参数输入一个值以继续。
`# var s = "${name}";
for( var i = 0; i != 5; i++ ){
Interface.writeln( s );
}
`
你需要注意,所有 \、` 和 $ 前都必须加上一个 \。例如,下面的片段会插入 C:\Program Files\EmEditor。
`# Interface.writeln( "C:\\\\Program Files\\\\EmEditor" ); `
这是因为反斜杠必须写成 \,而 JavaScript 也会将反斜杠转换为 \。结果就是,一个反斜杠会变成四个反斜杠(\\)。
如果你不希望反斜杠被转换,并且不需要在 shell 代码或宏中包含任何参数,那么可以在代码开头加入一个感叹号(!)。也就是说——在 shell 代码中,你可以写作 `!...`,在宏中,你可以写作 `!#...`。因此,前面的示例可以改写为:
`!# Interface.writeln( "C:\\Program Files\\EmEditor" ); `
提示¶
按 F6 键或 ESC 键来把键盘焦点设回到编辑器中。
你可以通过右击 插件 工具栏上的插件按钮,选择 属性,调节自定义分栏位置。位置可以是编辑器顶部,底部,右边或左边。