我正在使用SAS Enterprise Guide软件中的Editor Macros功能。我写了一个小宏来重新格式化一行,方法是删除逗号的末尾并将其移到最前面(前面有两个缩进)。我想通过对选择的 all 行进行重新格式化来改善这一点。我希望复制'Ctrl'+'/'使用的方法,但是找不到任何文档。
下面适用于一行的当前代码段。
Move caret to end of line
Delete previous character
Move caret to beginning of line
Indent selection
Indent selection
Insert character ('.')
我要做的就是对当前选择中的每一行重复上面的方法,但是我不知道如何实现。如果在选择了多行的情况下运行此命令,则仅在最后一行执行操作。
例如,考虑以下代码块。
proc sql;
create table EXAMPLE2 as select
variable1,
variable2,
variable3,
variable4
from EXAMPLE;
quit;
上面的编辑器宏应用于前三个变量行时,将产生以下代码块。
proc sql;
create table EXAMPLE2 as select
,variable1
,variable2
,variable3
variable4
from EXAMPLE;
quit;
当前,我必须为每一行运行编辑器宏。我希望能够选择三行,并运行一个编辑器宏,该宏将为选择中的每一行调用上面的宏。
还请注意,我不会保留上面的代码块,而是会手动重新格式化。
答案 0 :(得分:0)
您是否尝试过使用编辑器的正则表达式替换模式?
增强的编辑器是一个COM对象。 COM对象具有在EG ui中浮出水面的宏功能。 EG不提供其他程序界面或对增强编辑器的控制。自定义任务可以用.NET编写并注册为外接程序,该任务将对编辑器或编辑器实例具有更多控制权。参见https://communities.sas.com/t5/SAS-Enterprise-Guide/How-do-I-add-a-SAS-editor-control-to-my-Custom-Task-for-code/td-p/1895。
文章指出:
您可以简单地使用SAS.Tasks.Toolkit.Controls.SASTextEditorCtl类。
,并具有许多其他资源的链接。