设置SAS热键以刷新文件

时间:2013-08-05 14:51:33

标签: sas

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

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

2 个答案:

答案 0 :(得分:1)

我无法在我的机器上正常工作(inc“... SAS_EXECFILEPATH ...”不起作用)但你绝对可以删除DM语句。键是聪明的,它会计算出你所处的环境;例如,在KEYS中,在F12中输入:

F12: winclose editor;

并关闭编辑器窗口。大概你可以用

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

在没有所有DM的情况下,这将正常工作;或

F12: %refresh;

也应该有用。

答案 1 :(得分: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..
*/