2

我使用 Sublime 文本编辑器在 SAS 中编写大部分代码。唯一真正的问题是我必须以批处理模式运行文件,并且不能轻松地运行个别代码。在大多数情况下,这不会打扰我,但偶尔让 SAS 和 Sublime 同时打开处理同一个文件是件好事。如果我在 SAS 中更改某些内容并将其保存,则 sublime 会自动刷新文件并进行更改。不幸的是,SAS 没有回报。我一直在使用 autoexec.sas 文件和显示管理器,但我遇到了问题。这段代码将关闭文件并再次打开它。

dm editor 'winclose' editor; dm editor 'inc "%sysget(SAS_EXECFILEPATH)"' editor;

然后我试图把它放在一个宏中

%macro Refresh;
dm editor 'winclose' editor; 
dm 'inc "%sysget(SAS_EXECFILEPATH)"';
%mend;

并添加键定义

dm "keydef F12 '%NRSTR(%Refresh);";

当我按 F12 时,我得到

ERROR: Two or more Commands Start with 'dm'. Please reenter.

有人对如何解决这个问题有任何想法吗?

4

2 回答 2

1

我无法让它在我的机器上正常工作(inc "...SAS_EXECFILEPATH..." 不起作用)但您绝对可以删除 DM 语句。Keys 是智能的,它会判断你所处的环境;例如,在 KEYS 中,在 F12 中输入:

F12: winclose editor;

并关闭编辑器窗口。想必你可以使用

F12: winclose editor; inc "something that works";

如果没有所有的 DM,那也可以正常工作;或者

F12: %refresh;

也应该工作。

于 2013-08-05T15:44:33.673 回答
0

也许这可能会更干净一些,但它确实有效。有两个部分:

1 - 编译下面的代码

2 -在需要刷新的程序中运行以下行:%refresh();(以获取 SAS_EXEC_FILEPATH)。然后可以删除该行。

%macro Refresh(param=0);
%global file;
%if &param. =0 %then %do;
   %let file=%sysget(SAS_EXECFILEPATH);
   %put file (&file) saved successfully.;
%end;
%else %do;
   %put file being loaded =&file;
   wpgm;clear;wpgm; inc "&file";
%end;
%mend;

dm "keydef F12 '%NRSTR(%Refresh(param=1));'";

/* 
1 - compile this macro
2 - run this code IN THE PROGRAM THAT NEEDS TO BE REFRESHED 
    %refresh()
3 - press F12 to refresh, whether program is open or closed..
*/
于 2013-08-05T15:17:19.663 回答