2010-01-04 23 views
36

Finalmente decidí probar Vim, ya que cada vez me siento más frustrado por los editores de GUI. Hasta ahora, me encanta, pero no puedo encontrar ninguna ayuda para un problema que estoy teniendo ...Agregar un comando a Vim

Estoy tratando de asignar el comando :Pyrun a :!python % en Vim usando cmap. El mapeo se muestra bien si escribo :cmap. Sin embargo, al escribir :Pyrun, aparece este mensaje de error:

No es un comando de editor: Pyrun.

aquí es lo que estoy tratando de .vimrc:

:autocmd FileType python :cmap Pyrun<cr> !python %<cr> 
:autocmd FileType python :cmap Intpyrun<cr> !python -i %<cr> 

¿Qué puedo hacer para solucionar este problema?

+0

Leer el 42 pdf en esta url http: // Zmievski.org/talks/ –

Respuesta

35

me gustaría probar algo como esto en su .vimrc o su ftplugin/python_ft.vim

command Pyrun execute "!python %" 
command Intpyrun execute "!python -i %" 

Entonces :Pyrun y :Intpyrun debería funcionar

A continuación, puede asignar una tecla de función para cada

map <F5> :Pyrun<CR> 
map <F6> :Intpyrun<CR> 
+0

¡Eso funciona! ¡Gracias! –

+2

Un comando de buffer local (-b) sería aún mejor. –

+0

para agregar el comando buffer-local, use ': comando -buffer' ...': comando -b' no funciona – tbhartman

24

Personalmente, prefiero otro enfoque. En primer lugar crear una función de recibir los argumentos de comando y luego crear un comando para llamar a la función:

fun! DoSomething(arg) "{{{ 
    echo a:arg 
    " Do something with your arg here 
endfunction "}}} 

command! -nargs=* Meh call DoSomething('<args>') 

Por lo tanto, sería como

fun! Pyrun(arg) "{{{ 
    execute '!python ' . expand('%') 
endfunction "}}} 

command! -nargs=* Pyrun call Pyrun('<args>') 

embargo, hay una mejor manera de hacerlo en Vim. Utilice makeprg:

makeprg=python\ % 

sólo tiene que escribir :make para ejecutar el archivo de Python actual. Use :copen para mostrar la lista de errores.

+0

Suena como un enfoque más escalable. Probablemente haga algo como esto si necesito ejecutar más de un comando. –

6

día G,

similares a karoberts respuesta, yo prefiero la más directa:

:map <F9> :!python %<CR> 

Si mi guión es la creación de una cierta salida También me gusta capturar en un archivo temporal y luego AutoRead que archivos de contenido en otro buffer, por ejemplo

:map <F9> :!python % 2>&1 \| tee /tmp/results 

que después fijar los AutoRead mediante la introducción de :set autoread y abriendo el archivo de resultados en otro búfer

:split /tmp/results<CR> 

Entonces puedo ver fácilmente los resultados de la ejecución de la memoria intermedia que refresca automático cuando el archivo de resultados es actualizado al ejecutar el script en desarrollo.

HTH

aplausos,

Cuestiones relacionadas