我正在寻找一种从Vim运行Stata的.do文件的方法。
这是我到目前为止所检查的内容:
但是,在按照建议更改.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
时收到的错误消息。
我的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
一次后才会释放按键锁定。
答案 0 :(得分:1)
老实说,我滥用导致问题的函数RunDoLines()
。该功能仍然与Windows 8.1上的Vim兼容。
调用此功能:
vnoremap
添加到<F9>
映射中。 F9
。如果您只是将光标放在一行上,它将无效。必须在视觉上选择该行。 该功能需要填充一个&#34;选择的行&#34;,就我而言应该在视觉上选择。通过拖动鼠标在插入模式中选择一行代码将不会生成函数所需的参数。
保持正常模式并按V
以运行代码块!