Comment exécuter le fichier Stata do dans Vim
-
02-01-2020 - |
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 :
- Dans ce lien : http://fmwww.bc.edu/repec/bocode/t/textEditors.html#vim, Des fonctions Vim ont été suggérées ;
- 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.
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.
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 :
- Ajouter
vnoremap
au<F9>
cartographie. - Sélectionnez visuellement (plusieurs) ligne(s).
- 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 !