Stata的代码编辑器用不习惯,一直在寻找替代品。因以前经常用Sublime做HTML代码编辑器,用起来比较顺手,而且它也有支持Stata的插件,于是两个月前开始使用Sublime Text 3替代Stata的代码编辑器,感觉方便很多。
最近几天系统崩坏,以前的配置方法因为没有保存,无法顺利配置完成,就学习了niuniuyiwan版主的方法,网址见:https://bbs.pinggu.org/thread-3817971-1-1.html(神级编辑器(Sublime Text 3)在Stata 13/14中的应用)。
完成后发现一个问题,Sublime Text 3与Stata14的结合很方便,但与Stata13结合使用时,无法顺利调用Stata进程,这个问题还在niuniuyiwan版主的那个原贴中讨论过,今天仔细研究了一下,发现确实是由于do文件中含有中文的缘故。(这里给niuniuyiwan版主道个歉)
由于目前Stata14的license并不好,而且还有很多Stata的使用者为了数据交流的方便还在使用Stata13甚至更老的版本,就继续深入研究了一下,找到了让Sublime Text 3使用Stata 13中文do文档的设置方法,现共享如下:
第一步:按照niuniuyiwan版主的贴子完成设置。
第二步:安装PackageResourceViewer插件。
(1)ctrl + shift + p 打开控制台。
(2)在控制台的命令栏输入install package回车。
(3)再输入PackageResourceViewer并回车安装。
第三步,修改StataEditor代码。
(1)ctrl + shift + p 打开控制台。
(2)输入PackageResourceViewer后在列表中找到open resource命令,选中并回车。
(3)输入StataEditor并回车确认。
(4)在列表中找到StataEditorPlugin.py文件,选中并回车。
(5)找到如下代码:
if settings.get("stata_version") <= 13:
this_file = open(dofile_path,'w',encoding='windows-1252')
将'windows-1252'修改为'gbk'后保存。
第四步,ok,现在放心的在Sublime Text 3中调用Stata 13来处理带中文的do文档了。
原因分析:
StataEditor在调用Stata之前,会根据配置中的版本号选择将代码转码成windows-1252(如果版本号是13)或utf-8(如果版本号是14),转码成功后调用Stata,发送代码并由Stata运行。但是如果do文件中含有中文,转码为windows-1252这一过程就会失败,当然也就不会继续调用Stata13了。
以上修改的目的是,当StataEditor配置文件中的Stata版本号设置为13时,将选中代码转码成gbk,而不是windows-1252,这个转换过程基本上是不会失败的,而且Stata13运行含有中文的gbk编码的do文件是没有问题的。
如有问题,欢迎交流。