Frage

Ich suche nach einer Möglichkeit, eine .do-Datei von Stata von Vim aus auszuführen.

Hier ist, was ich bisher ausgecheckt habe:

  1. In diesem Link: http://fmwww.bc.edu/repec/bocode/t/textEditors.html#vim, Vim-Funktionen wurden vorgeschlagen;
  2. Der rundo.die EXE-Datei kann von hier heruntergeladen werden: http://huebler.blogspot.com/2008/04/stata.html

Nachdem jedoch auch die geändert wurde .ini-Dateien wie vorgeschlagen, kann ich die folgende Vim-Funktion, die in _vimrc definiert ist, immer noch nicht ausführen:

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

Da ich diese Funktion zugeordnet habe <F9> wobei: map <F9> :<C-U>call RunDoLines() <Enter> , hier ist die Fehlermeldung, die ich beim Drücken bekomme <F9> beim Öffnen profile.do durch Vim im Home-Verzeichnis von Stata.

enter image description here

Mein Vim ist auf Github: https://github.com/llinfeng/Vim-Win;der extrahierte Ordner enthält rundo.exe die Datei befindet sich in meiner Dropbox: https://www.dropbox.com/sh/5tneckhr1rfrp5x/AABLZ4HGElbdbIGBGrvE7Zfta

Wo verstehe ich es falsch?

PS:die gute Nachricht ist, die folgende Rundo() funktion funktioniert gut, bis auf ein Problem:

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

Problem:wenn die .do-Datei einen Fehler enthält und Stata sich darüber beschwert, wird der Ctrl schlüssel (oder Alt taste) gedrückt gehalten werden.Dies macht das Drücken Tab als ob Alt-Tab, das Fenster verschiebt.Die Tastensperre wird erst nach dem Drücken freigegeben Ctrl einmal.

War es hilfreich?

Lösung

Ehrlich gesagt, es ist mein Missbrauch der Funktion RunDoLines() das hat das Problem verursacht.Die Funktion ist weiterhin mit Vim unter Windows 8.1 kompatibel.

Zum Aufrufen dieser Funktion:

  1. Hinzufügen vnoremap zu den <F9> Mapping.
  2. Visuell (mehrere) Zeile(n) auswählen.
  3. Drücken F9.

Es funktioniert nicht, wenn Sie den Cursor einfach auf eine Zeile setzen.Die Linie muss visuell ausgewählt werden. Die Funktion muss mit einer "ausgewählten Zeile" gefüllt werden, die für mich visuell ausgewählt werden sollte.Wenn Sie im Einfügemodus eine Codezeile durch Ziehen mit der Maus auswählen, werden nicht die Parameter generiert, die von der Funktion benötigt werden.

Bleiben Sie im normalen Modus und drücken Sie V um den Codeabschnitt auszuführen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top