Ich habe Vim verwendet, um Stata-Skripte in Windows für eine Weile jetzt an der Universität zu schreiben. Ich lerne gerade R, und ich möchte komplett auf Linux als mein Betriebssystem umsteigen (ich bin kürzlich auf meinem Laptop zu Ubuntu gewechselt). R funktioniert gut mit Vim in Windows und Linux, aber ich muss Stata manchmal verwenden. In Windows habe ich ein einfaches AutoIt-Skript verwendet, das von einem Stata-Benutzer bereitgestellt wurde, um Zeilen/die gesamte Datei zur Auswertung an Stata zu senden. Dieses Skript funktioniert nicht unter Linux. DieseSenden von Code von vim an stata
ist, was das Skript sieht aus wie
; AutoIt v3 script to run a Stata do-file from an external text editor
; Version 3.1, Friedrich Huebler, [email protected], 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
mit folgendem in meinem 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>
Das ist wirklich praktisch und praktisch der einzige Grund, warum ich immer noch auf Windows kleben. Wie würde ich so etwas für Ubuntu machen? Ich bin neu in Linux und weiß nicht viel über Programmierung neben Statistiken. Jede Hilfe wird sehr geschätzt. (Bitte nicht vorschlagen Emacs, Emacs Unterstützung für Stata ist fehlerhaft, und obwohl seine Integration mit R ist viel besser, würde ich gerne weiterhin Vim verwenden.)
Zu einem möglicherweise verwandten Thema: Ich überlege zu lernen Python, da ich wahrscheinlich mit Daten arbeiten und länger empirische Analysen machen werde, und ich denke, dass es für einige Aufgaben nützlich sein könnte, z um Probleme wie diese zu lösen oder Daten von Webseiten zu analysieren. Ist das empfohlen, oder sollte ich eine andere Sprache anschauen (oder die Idee komplett vergessen)?
Vielleicht möchten Sie die Python-Frage in einem separaten Thema stellen. Aber R hat eine ganze Reihe von Tools zum Parsen von Daten von Webseiten. Und wenn Sie R für die nachfolgende Analyse verwenden möchten, verwenden Sie besser R für die Datengenerierung, da Sie es einfacher im richtigen Format haben können. Dennoch ist Python eine interessante Sprache. –