SAS EG Editor宏,可以在选择的每一行上执行操作

时间:2019-05-29 09:07:22

标签: sas enterprise-guide

我正在使用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;

当前,我必须为每一行运行编辑器宏。我希望能够选择三行,并运行一个编辑器宏,该宏将为选择中的每一行调用上面的宏。

还请注意,我不会保留上面的代码块,而是会手动重新格式化。

1 个答案:

答案 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类。

,并具有许多其他资源的链接。