Я использую 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, поскольку я, вероятно, буду работать с данными и проводить эмпирический анализ в течение более длительного времени, и я думаю, что это может быть полезно для некоторых задач, например, для решения подобных проблем или анализа данных с веб-сайтов. Это рекомендуется, или мне следует обратиться к другому языку (или полностью забыть об этой идее)?