使用代码片段插件¶
代码片段 被默认用 EmEditor Professional 安装。该插件让你能快速地插入单词以及短语。代码段通常是让您可以插入到文档中的文本片段,它也可以包含一般文本,占位符,shell code,宏,或正则表达式来转换文本以及各种内置和用户定义的参数。在这个代码片段插件中,你可以创建两种类型的条目 - 代码片段以及宏。
要使用 代码片段 插件,点击 插件 栏中的 。或在 工具 菜单下,指向 插件,然后点击 代码片段,便会出现 代码片段 自定义分栏。
右击代码片段分栏会显示下列选项:
插入 | 插入被选取的代码片段。 |
编辑 | 编辑被选取的代码片段。 |
选择代码片段 | 显示一个对话框,让你能输入一些字符来选择要插入的代码片段。 |
新建代码片段 | 创建一个新的代码片段。 |
新建宏 | 创建一个新的宏。 |
新建文件夹 | 创建一个新的文件夹。 |
上移 | 把选取的代码片段在列表上往上移动。 |
下移 | 把选取的代码片段在列表上往下移动。 |
删除 | 删除被选取的代码片段。 |
删除全部 | 删除全部代码片段。 |
导入到该文件夹 | 把代码片段导入到该文件夹中。 |
导入到根文件夹 | 把代码片段导入到根文件夹中。 |
导出该文件夹/项目 | 导出所有在该文件夹中的代码片段到指定的目标中。 |
导出全部 | 导出所有代码片段到指定的目标中。 |
全部重置(导入默认) | 重置所有代码片段并导入默认代码片段列表。 |
触发键 | 显示或隐藏触发键。 |
配置 | 显示或隐藏配置。 |
插件属性 | 显示插件属性。 |
名称 | 按名称排列。 |
类型 | 按类型排列。 |
文本 | 按文本排列。 |
提示 | 按提示排列。 |
触发文本 | 按触发文本排列。 |
升序 | 按升序排列。 |
降序 | 按降序排列。 |
自动排列 | 自动排列代码片段。 |
属性 | 显示被选取的代码片段或代码片段文件夹的属性。 |
代码片段插件属性¶
要调整代码片段插件属性,右击插件栏中的代码片段插件按钮,选择属性。 自定义分栏位置 设置自定义分栏位置。 后台运行 运行代码片段继续运行即使你关闭了代码片段自定义分栏。 默认快捷键 指定默认快捷键;初始的默认快捷键是 TAB。 详细程度 调整提示的详细程度。 延时 调整在一个提示出现之前的时间。 「添加」按钮 添加一个参数并为它指定一个值。 「删除」按钮 删除一个参数。 命令 列出可用的命令。(“弹出菜单”或“选择代码片段”) 按下新的快捷键 让你能为选取的命令输入快捷键。 当前键 被分配给被选取的命令的当前键。 描述 对被选取的命令的说明。 「分配」按钮 分配快捷键给当前被选取的命令。A 「删除」按钮 删除当前被选取的快捷键。常规页面¶
全局参数页面¶
键盘页面¶
代码片段文件夹属性¶
要调整每一个代码片段文件夹的属性,在代码片段自定义分栏中的一个文件夹上右击,选择“属性”。 名称 指定代码片段文件夹名称。 仅在启用下列配置时使用自动完成 指定要自动完成的配置。 代码片段 设置要用来编辑代码片段的配置。 宏 设置要用来编辑宏的配置。常规页面¶
配置页面¶
代码片段属性¶
要调整每一个代码片段属性,在代码片段自定义分栏中的一个代码片段上右击,选择“属性”。 名称 指定代码片段文件夹名称。 触发文本 为代码片段指定触发文本。 快捷键 为代码片段指定快捷键。 提示 为代码片段指定快捷键。 类型 指定类型(代码片段或宏)。 文本 指定代码片段的文本/ 编辑 让用户能在 EmEditor 窗口中编辑代码片段。 仅在启用下列配置时使用自动完成 指定要自动完成的配置。 代码片段 设置要用来编辑代码片段的配置。 宏 设置要用来编辑宏的配置。常规页面¶
配置页面¶
代码片段语法¶
纯文本¶
代码片段包括任何你想要插入到文档中的纯文本。要编写纯文本,大部分的字符都可以使用,然而,如果你想要包括 \,$,或 ` 到纯文本中,它们必须被转义为 \\,\$,以及 \`。
占位符¶
在你插入一个代码片段后,光标位置会在占位符之间跳转,按 TAB 键会跳到下一个占位符。
你可以在占位符中把这些制表位定义为 ${n:default},这样,当代码片段被插入时,第一次出现会是默认值。如果没有默认值,你可以省略 {},让制表位显示为$n,在这里,n 的数值是一个 0 到 9 之间的整数。当一个用户插入一个代码片段,最初的光标位置在 $1,按 TAB 键会让制表符前进道下一个占位符 $2,$3,... 等等。最后一个制表符是 $0。
例如,下列的代码片段会在 HTML 中插入一个超链接,并且一开始的光标位置是 $1。当光标在 $1 处时,如果用户按 TAB 键,光标会跳到 $2 处,然后到 $0。
代码片段能包括默认数值。下面显示代码片段用一个默认值插入一个超链接。
你能在一个占位符中再包含一个占位符。下列代码片段用选取的目标参数插入一个超链接标签。用户能决定是否改写参数,删除它,或再次按 TAB 键前进道下一个占位符处。
<a ${1: target="${2:_blank}"} href="${3:url}">$0
镜像¶
如果你用相同的占位符索引,所有这些占位符的数值都会变为相同或被镜像。下列代码片段插入一个 “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: 替换的格式
选项:
i : 忽略大小写
g : 全局选项
下列例子除了大写第一个字符外,把第一行上输入的字符复制到第二行上。T
$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} 代码片段插件的版本。
${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} 与 ${Use与SpacesForTabs}相同。
${TM_TAB_SIZE} 与 ${TabSize}相同。
${PickFullPath,title,filter} 选取文件的完整路径名称。标题是对话框的标题,过滤器是文件过滤器的格式: Text files|*.txt|All files|*.*||
${PickRelativePath,title,filter} 选取文件的相对路径名称。标题是对话框的标题,过滤器是文件过滤器的格式: Text files|*.txt|All files|*.*||
${PickColor} 选取颜色的 RGB 值。
${DefColor} 选取颜色的 RGB 值。
你同样能在 ${parameter_name} 的形式中创建你自己的参数,其中,parameter_name 没有在上述列表中被预先设定。当一个新用户参数被使用,一个对话框出现,让你能插入一个新的数值,除非一个参数的值被保存到插件属性的全局参数页面中。
外壳程序代码 (Shell Code)¶
你能定义一个能够运行程序,然后把字符串传递到它的标准输入中的外壳程序代码。控制台应用程序的标准输出,还有标准错误,会被重新导向你下一个文档的光标位置处。一个外壳程序代码必须由下列格式指定:
`- 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 shell_code` 格式来定义一个可以被传递到命令提示符窗口 (cmd.exe) 的 shell 代码。你指定的这个值可以用 "%COMSPEC% /c shell_code" 格式被传递到 cmd.exe 中。标准输出以及标准错误会从控制台程序被重新导向到文本文档的光标位置处。例如,下面的代码片段会插入到当前的文件夹列表中。你能在每个代码片段中插入任意多个 shell 代码。
`#cmd DIR`
宏¶
你能用 `# ` 的格式在一个代码段中包括一个宏。第一个字符 # 表示这是一个宏,而不是一个 shell 代码。如果这个一个 ActiveScript 而不是 JavaScript,例如脚本是 VBScript,PerlScript,PHPScript,或 RubyScript,你需要用 "#language=" 来定义语言。举个例子,如果你想要用 VBScript,你就要写 `#language="VBScript"...`。 Interface 对象被用来在代码片段和 EmEditor 宏引擎之间传递值。下面的示例会在光标位置处插入剪贴板上的内容。
剪贴板包含 `# Interface.write( clipboardData.getData("") );`。
Interface.write() 方法会把宏结果传递到代码片段中。你同样能使用 Interface.writeln() 来在结果的末尾添加回车以及换行 (CR+LF)。你能在每个代码片段中包括任意多个宏。
默认值,shell 代码或宏内的参数¶
占位符默认值能包含参数,shell 代码或一个宏。下面的代码片段会在
和
之间插入一个标签,如果存在选区的话。
${0:${SelText}}
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 键来把键盘焦点设回到编辑器中。
你可以通过右击 插件 工具栏上的插件按钮,选择 属性,调节自定义分栏位置。位置可以是编辑器顶部,底部,右边或左边。