отправка кода из vim в stata

Я использую Vim для написания сценариев Stata в Windows некоторое время в университете . В данный момент я изучаю R и хочу полностью переключиться на Linux в качестве своей ОС (недавно я перешел на Ubuntu на моем ноутбуке). R отлично работает с Vim как в Windows, так и в Linux, однако мне все еще нужно использовать Иногда Стата. В Windows я использовал простой скрипт AutoIt, предоставленный пользователем Stata, для отправки строк / всего файла в статистику для оценки. Этот сценарий не работает в Linux.

Вот как выглядит сценарий

; AutoIt v3 script to run a Stata do-file from an external text editor
; Version 3.1, Friedrich Huebler, fhuebler@gmail.com, www.huebler.info, 30 March 2009

; Declare variables
Global $ini, $statapath, $statawin, $dofile, $winpause, $keypause, $clippause

; File locations
; Path to INI file
$ini = @ScriptDir & "\rundo.ini"
; Path to Stata executable
$statapath = IniRead($ini, "Stata", "statapath", "C:\Program Files\Stata10\wsestata.exe")
; Title of Stata window
$statawin = IniRead($ini, "Stata", "statawin", "Stata/SE 10.1")

; Path to do-file that is passed to AutoIt
; Edit line to match editor used, if necessary
$dofile = $CmdLine[1]

; Delays
; Pause after copying of Stata commands to clipboard
$clippause = IniRead($ini, "Delays", "clippause", "100")
; Pause between window-related operations
$winpause = IniRead($ini, "Delays", "winpause", "200")
; Pause between keystrokes sent to Stata
$keypause = IniRead($ini, "Delays", "keypause", "1")

; Set SendKeyDelay and WinWaitDelay to speed up or slow down script
Opt("WinWaitDelay", $winpause)
Opt("SendKeyDelay", $keypause)

; If more than one Stata window is open, the window 
; that was most recently active will be matched
Opt("WinTitleMatchMode", 2)

; Check if Stata is already open, start Stata if not
If WinExists($statawin) Then
  WinActivate($statawin)
  WinWaitActive($statawin)
  ; Activate Stata Command Window and select text (if any)
  Send("^4")
  Send("^a")
  ; Run saved do-file
  ; Double quotes around $dofile needed in case path contains blanks
  ClipPut("do " & '"' & $dofile & '"')
  ; Pause avoids problem with clipboard, may be AutoIt or Windows bug
  Sleep($clippause)
  Send("^v" & "{Enter}")
Else
  Run($statapath)
  WinWaitActive($statawin)
  ; Activate Stata Command Window
  Send("^4")
  ; Run saved do-file
  ; Double quotes around $dofile needed in case path contains blanks
  ClipPut("do " & '"' & $dofile & '"')
  ; Pause avoids problem with clipboard, may be AutoIt or Windows bug
  Sleep($clippause)
  Send("^v" & "{Enter}")
EndIf

; End of script

со следующим в моем vimrc

" STATA DO-FILE SCRIPTS

fun! RunIt()
  w
  !start "C:\Programme\Stata10\integvim\rundo3\rundo.exe" "%:p"
endfun
map <F8> :<C-U>call RunIt()<CR><CR>
imap <F8> <Esc>:<C-U>call RunIt()<CR><CR>

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)
    exec "!start C:\\Programme\\Stata10\\integvim\\rundo3\\rundo.exe " . temp
    au VimLeave * exe "!del -y" temp
endfun
map <F9> :<C-U>call RunDoLines()<CR><CR> 
imap <F9> <Esc>:<C-U>call RunDoLines()<CR><CR> 

Это действительно практично и практически единственная причина, по которой я все еще придерживаюсь Windows. Как я могу получить что-то подобное для Ubuntu? Я новичок в Linux и мало что знаю о программировании, кроме статистики. Любая помощь приветствуется. Как я могу получить что-то подобное для Ubuntu? Я новичок в Linux и мало что знаю о программировании, кроме статистики. Любая помощь приветствуется. Как я могу получить что-то подобное для Ubuntu? Я новичок в Linux и мало что знаю о программировании, кроме статистики. Любая помощь приветствуется. (Пожалуйста, не предлагайте emacs, поддержка emacs для stata неисправна, и, хотя его интеграция с R намного лучше, я бы хотел продолжать использовать Vim на данный момент.)

По, возможно, связанной теме: я рассматриваю возможность изучения Python, поскольку я, вероятно, буду работать с данными и проводить эмпирический анализ в течение более длительного времени, и я думаю, что это может быть полезно для некоторых задач, например, для решения подобных проблем или анализа данных с веб-сайтов. Это рекомендуется, или мне следует обратиться к другому языку (или полностью забыть об этой идее)?

8
задан ilprincipe 22 September 2012 в 14:06
поделиться