【发布时间】:2015-08-23 11:47:36
【问题描述】:
在大多数文本编辑器中,如果您输入{ 或"(您明白了),编辑器将自动输入相反的字符,并将光标放在两者之间。我注意到 UltraEdit 不这样做。有什么方法可以设置 UltraEdit 以关闭匹配的大括号?
【问题讨论】:
标签: ultraedit
在大多数文本编辑器中,如果您输入{ 或"(您明白了),编辑器将自动输入相反的字符,并将光标放在两者之间。我注意到 UltraEdit 不这样做。有什么方法可以设置 UltraEdit 以关闭匹配的大括号?
【问题讨论】:
标签: ultraedit
UltraEdit for Windows v23.20 引入了通过大括号自动完成和字符串自动完成智能插入大括号和引号的功能。
大括号自动完成
- wordfile 中定义的大括号对在键入左大括号时会自动关闭
- 如果 wordfile 中没有大括号,或者文件没有突出显示语法,则默认使用“()”、“{}”和“[]”
- 按 Enter 将在单独的行上重新定位右大括号,同时保持适当的缩进级别
- 在自动完成后立即按退格键将同时删除左大括号和右大括号
- 键入右大括号会跳过自动完成的右大括号而不插入第二个大括号
- 可以为非高亮(纯文本)文件禁用
- 可以为 cmets 和字符串禁用
字符串自动补全
- 可以为非高亮(纯文本)文件禁用
- 可以为 cmets 禁用
这两个功能的自定义设置可以在Editor - Braces / strings的配置中找到。
UEStudio v16.20 引入了与 UltraEdit for Windows v23.20 相同的功能和相同的配置设置。
以 UltraEdit 作为核心编辑引擎的 IDE UEStudio 的早期版本从一开始就具有这些功能,可以通过从菜单 Advanced 打开在 IDE - IntelliTips - Miscellaneous 的配置中进行自定义 点击菜单项Configuration 或点击Settings 项上的功能区标签Advanced。
但是 v23.20 之前的 UltraEdit for Windows 版本没有这些功能。
但是,{ 和 } 之间设置插入符号的非智能插入可以通过按下键以插入分配给宏的 { 作为热键的宏轻松实现。
我在Search and replace with term list? 的回答中解释了如何创建一个或多个新的 UltraEdit 宏并一起保存到单个宏文件中,该文件配置为在 UltraEdit 启动时自动加载。
{ 的 UltraEdit 宏代码是:
InsertMode
"{}"
Key LEFT ARROW
同样的概念可用于:
双引号
InsertMode
""""
Key LEFT ARROW
左方括号
InsertMode
"[]"
Key LEFT ARROW
和一个左圆括号
InsertMode
"()"
Key LEFT ARROW
也可以为某些文件类型自定义宏,例如:
IfExtIs "c"
InsertMode
"{}"
Key LEFT ARROW
ExitMacro
EndIf
IfExtIs "cpp"
InsertMode
"{}"
Key LEFT ARROW
ExitMacro
EndIf
IfExtIs "h"
InsertMode
"{}"
Key LEFT ARROW
ExitMacro
EndIf
"{"
仅当活动文件的文件扩展名为 c、cpp 或 h(无论如何)。对于所有其他文件,只需在活动模式(插入或覆盖模式)下按下宏的热键即可输入 {。
我建议插入( 和) 一个更智能的宏代码:
InsertMode
"("
IfCharIs 13
")"
Key LEFT ARROW
ExitMacro
EndIf
IfCharIs 10
")"
Key LEFT ARROW
ExitMacro
EndIf
IfEof
")"
Key LEFT ARROW
EndIf
这个宏首先插入(。如果下一个字符是回车(十进制值 13)或换行符(十进制值 10)或插入符号位于文件末尾,则另外插入 ) 并将插入符号定位在括号之间。在所有其他情况下,只需将 ( 插入到活动文件中。
此增强功能可以修改类似的条件
if(iVar == 1 || iVar == 3)
到
if((iVar == 1) || (iVar == 3))
暂时没有得到
if(()iVar == 1 || iVar == 3)
和
if((iVar == 1) || ()iVar == 3)
在这种情况下要求按 DEL 键删除插入但不需要的) 在行中间某处插入( 后,这很烦人。
【讨论】: