如何在Vim中运行Stata do文件

时间:2014-08-01 20:37:05

标签: vim stata vim-plugin

我正在寻找一种从Vim运行Stata的.do文件的方法。

这是我到目前为止所检查的内容:

  1. 在此链接中:http://fmwww.bc.edu/repec/bocode/t/textEditors.html#vim,建议使用Vim功能;
  2. 可以从此处下载rundo.exe文件:http://huebler.blogspot.com/2008/04/stata.html
  3. 但是,在按照建议更改.ini文件之后,我仍然无法运行以下Vim函数,该函数在_vimrc中定义:

    fun! RunDoLines()
        let selectedLines = getbufline('%', line("'<"), line("'>"))
    
        if col("'>") < strlen(getline(line("'>")))
            let selectedLines[-1] = strpart(selectedLines[-1], 0, col("'>"))
        endif
        if col("'<") != 1
            let selectedLines[0] = strpart(selectedLines[0], col("'<")-1)
        endif
    
        let temp = tempname() . ".do"
        call writefile(selectedLines, temp)
    
        " *** CHANGE PATH AND NAME TO REFLECT YOUR SETUP. USE \\ INSTEAD OF \ ***
        exec "!start C:\\Program Files\\Scripts\\rundo.exe " . temp
    
        " Delete the temp file after Vim closes
        au VimLeave * exe "!del -y" temp
    endfun
    

    由于我已使用<F9>将此功能映射到map <F9> :<C-U>call RunDoLines() <Enter> ,因此在Stata的主目录中通过Vim打开<F9>时按下profile.do时收到的错误消息。

    enter image description here

    我的Vim在Github:https://github.com/llinfeng/Vim-Win;包含rundo.exe文件的解压缩文件夹位于我的保管箱:https://www.dropbox.com/sh/5tneckhr1rfrp5x/AABLZ4HGElbdbIGBGrvE7Zfta

    我在哪里弄错了?

    PS:好消息是,以下Rundo()功能运行良好,除了一个问题:

    fun! RunIt()
        wa
        !start /min "C:\Users\Linfeng\rundo.exe" "%:p"
    endfun
    

    问题:如果.do文件包含错误并且Stata抱怨它,则会按住Ctrl键(或Alt键)。这样就可以按Tab,就像Alt-Tab一样,正在移动窗口。只有按Ctrl一次后才会释放按键锁定。

1 个答案:

答案 0 :(得分:1)

老实说,我滥用导致问题的函数RunDoLines()。该功能仍然与Windows 8.1上的Vim兼容。

调用此功能:

  1. vnoremap添加到<F9>映射中。
  2. 直观地选择(几个)行。
  3. F9
  4. 如果您只是将光标放在一行上,它将无效。必须在视觉上选择该行。 该功能需要填充一个&#34;选择的行&#34;,就我而言应该在视觉上选择。通过拖动鼠标在插入模式中选择一行代码将不会生成函数所需的参数。

    保持正常模式并按V以运行代码块!