Question

Je cherche un moyen d'exécuter le fichier .do de Stata à partir de Vim.

Voici ce que j'ai vérifié jusqu'à présent :

  1. Dans ce lien : http://fmwww.bc.edu/repec/bocode/t/textEditors.html#vim, Des fonctions Vim ont été suggérées ;
  2. Le fichier rundo.exe peut être téléchargé à partir d'ici : http://huebler.blogspot.com/2008/04/stata.html

Cependant, après avoir également modifié les fichiers .ini comme suggéré, je ne parviens toujours pas à exécuter la fonction Vim suivante, définie dans _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

Comme j'ai mappé cette fonction à <F9> en utilisant: map <F9> :<C-U>call RunDoLines() <Enter> , voici le message d'erreur que j'obtiens lorsque j'appuie sur <F9> à l'ouverture profile.do via Vim dans le répertoire personnel de Stata.

enter image description here

Mon Vim est sur Github : https://github.com/llinfeng/Vim-Win;le dossier extrait contenant rundo.exe le fichier est dans ma dropbox : https://www.dropbox.com/sh/5tneckhr1rfrp5x/AABLZ4HGElbdbIGBGrvE7Zfta

Où est-ce que je me trompe ?

PS :la bonne nouvelle est la suivante Rundo() la fonction fonctionne bien, à l'exception d'un problème :

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

Problème:si le fichier .do contient une erreur et que Stata s'en plaint, le Ctrl clé (ou Alt touche) sera maintenue enfoncée.Cela rend le pressage Tab comme si Alt-Tab, ce qui change les fenêtres.Le verrouillage des touches ne sera libéré qu'après avoir appuyé sur Ctrl pour une fois.

Était-ce utile?

La solution

Honnêtement, c'est ma mauvaise utilisation de la fonction RunDoLines() cela a causé le problème.La fonction est toujours compatible avec Vim sous Windows 8.1.

Pour appeler cette fonction :

  1. Ajouter vnoremap au <F9> cartographie.
  2. Sélectionnez visuellement (plusieurs) ligne(s).
  3. Presse F9.

Cela ne fonctionnera pas si vous placez simplement le curseur sur une seule ligne.La ligne doit être sélectionnée visuellement. La fonction doit être remplie d'une "ligne sélectionnée", qui doit être sélectionnée visuellement en ce qui me concerne.La sélection d'une ligne de code en mode insertion en faisant glisser la souris ne générera pas les paramètres nécessaires à la fonction.

Restez en mode normal et appuyez sur V pour exécuter le morceau de code !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top