¿Qué tal agregar un archivo autocmd
a su ~/.vimrc
-file, crear un mapeo:
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
entonces puede presionar <F9>
para ejecutar el búfer actual conpython
Explicación:
autocmd
: comando que Vim ejecutará automáticamente {event}
(aquí: si abre un archivo python)
[i]map
: crea un atajo de teclado <F9>
en modo insertar / normal
<buffer>
: Si hay varios búferes / archivos abiertos: solo use el activo
<esc>
: salir del modo de inserción
:w<CR>
: guarda su archivo
!
: ejecuta el siguiente comando en tu shell (prueba :!ls
)
%
: se reemplaza por el nombre de archivo de su búfer activo. Pero dado que puede contener cosas como espacios en blanco y otras cosas "malas", es mejor practicar no escribir :python %
, sino usar:
shellescape
: escapar de los caracteres especiales. Los 1
medios con una barra invertida
TL; DR: La primera línea funcionará en modo normal y, una vez que la presione <F9>
, primero guardará su archivo y luego ejecutará el archivo con python. El segundo hace lo mismo, pero primero deja el modo de inserción
autocmd FileType python nnoremap <buffer> ....
nnoremap <buffer> <F9> :!python %<cr>
parece funcionar en Vim 7.4.1689. ¿Para qué sirve el paisaje de marismas?Simplemente vaya al modo normal presionando
<esc>
y escriba:fuente
Tengo esto en mi archivo .vimrc:
Cuando termino de editar un script de Python, simplemente presiono
<F5>
. El script se guarda y luego se ejecuta en una pantalla en blanco.fuente
m
tecla más,
tecla en lugar de laF5
tecla.Insert
modo. Para ejecución enNormal
modo use ennmap
lugar deimap
.Prefiero la salida de Python redirigida a una nueva ventana de Vim (y si esa ventana se deja abierta, actualice su contenido la próxima vez que ejecute código Python con esta función):
fuente
.vimrc
? Si no es así, ¿cómo debo entregar este script a vim? (Noob here)Sobre la base de las respuestas anteriores, si desea ver el código mientras mira su salida, puede encontrar útil el comando
:ter
(:terminal
).El uso
vert
en la segunda línea ejecuta el código en división vertical en lugar de horizontal.Lo negativo de esto es que si no cierra la ventana dividida donde se ejecutó el código, tendrá muchas divisiones después de múltiples ejecuciones (lo que no sucede en Python IDLE original donde se reutiliza la misma ventana de salida).
(Guardo estas líneas adentro
/home/user/.vimrc
)fuente
Tenga en cuenta que puede repetir el último comando utilizado con
@:
, por lo que eso es todo lo que necesita repetir son esos dos caracteres.O puede guardar la cadena
w !python
en uno de los registros (como"a
por ejemplo) y luego presionar:<C-R>a<CR>
para insertar el contenido del registroa
en la línea de comandos y ejecutarlo.O bien, puede hacer lo que hago y mapa
<leader>z
de:!python %<CR>
ejecutar el archivo actual.fuente
Si no desea ver "
:exec python file.py
" impreso cada vez, use esto:Tampoco estropeó mi barra de estado de línea eléctrica / vim-aerolínea.
fuente
Complemento : jupyter-vim
Entonces puede enviar líneas (
<leader>E
), selección visual (<leader>e
) a una ejecuciónjupyter-client
(el reemplazo deipython
)Prefiero separar editor e intérprete (cada uno en su caparazón). Imagina que envías un comando de lectura de entrada incorrecta ...
fuente
Para uso genérico (ejecute python / haskell / ruby / C ++ ... desde vim basado en
filetype
), hay un buen complemento llamado vim-quickrun . Admite muchos lenguajes de programación de forma predeterminada. También es fácilmente configurable, por lo que se pueden definir comportamientos preferidos para cualquier tipo de archivo si es necesario. El repositorio de github no tiene un archivo Léame elegante, pero está bien documentado con el archivo doc.fuente
La respuesta aceptada funciona para mí (en Linux), pero quería que este comando también guardara el búfer antes de ejecutarlo, así que lo modifiqué ligeramente:
El
:w <bar>
guarda el búfer ENTONCES ejecuta el código en él.fuente
Un método simple sería escribir
:
en modo normal y luego presionar la tecla de flecha hacia arriba en el teclado y presionar Enter. Esto repetirá los últimos comandos escritos en VIM.fuente
Si desea retroceder rápidamente a través de sus
:w
comandos, lo bueno es escribir:w
y luego presionar la flecha hacia arriba. Solo recorrerá los comandos que comiencen conw
.fuente
Tengo esto en mi .vimrc:
que guarda el búfer actual y ejecuta el código presionando solo Esc + F9
fuente
También puede utilizar skywind3000 / asyncrun.vim . Es similar a lo que ha enumerado @FocusedWolf.
fuente
Puede extender para cualquier idioma con 1 combinación de teclas con el comando augroup, por ejemplo:
fuente
Piense en usar shebang line, por lo que podrá usarlo con cualquier lenguaje, no solo Python.
Añadiendo shebang:
Agregue esto a la primera línea de su script:
o esto, si está usando Python 2:
Mapa de teclas de Vim:
Agregue esto a su
~/.vimrc
:Hacer ejecutable el archivo:
Escriba Vim:
o en terminal:
Explicación:
Cuando se presiona F7 en modo normal, Vim intentará ejecutar el archivo actual como script bash. Luego, el intérprete de bash verá la línea shebang y comprenderá que este archivo debe pasarse a Python (o cualquier otro programa si es necesario).
También podrá ejecutar su script desde la terminal usando su nombre:
en lugar de de esta manera (eso también funcionará):
fuente
Este mapeo .vimrc necesita Conque Shell , pero replica el comportamiento de Geany (y otros editores X):
La ventana se cierra automáticamente al salir
:let dummy = conque_term#subprocess('gnome-terminal -e "bash -c \"python ' . expand("%") . '; answer=\\\"z\\\"; while [ $answer != \\\"q\\\" ]; do printf \\\"\nexited with code $?, press (q) to quit: \\\"; read -n 1 answer; done; \" "')
fuente
Pon tu cursor en el código en alguna parte. Haga clic derecho y elija una de las opciones "Seleccionar" para resaltar su código. Luego presione Ctrl: y verá el nuevo mensaje '<,>'
Ahora escriba! Python y vea si funciona.
¡¡¡Solo paso días tratando de resolver el mismo problema !!! Usé la codificación:
Después de que me arranqué todo el cabello, ¡finalmente lo hice bien!
fuente
:% !python
.%
solo significa todas las líneas.En lugar de poner el mapeo de comandos en su
.vimrc
, ponga el mapeo en su~/.vim/ftplugin/python.vim
archivo (Windows$HOME\vimfiles\ftplugin\python.vim
). Si no tiene este archivo o directorios, simplemente hágalos. De esta manera, la clave solo se asigna cuando abre un.py
archivo o cualquier archivo confiletype=python
, ya que solo ejecutará este comando en scripts de Python.Para el mapeo real, me gusta poder editar en Vim mientras se ejecuta el script. Saliendo de la respuesta de @cazyas, tengo lo siguiente en mi
ftplugin\python.vim
(Windows):Esto ejecutará el script Python actual en segundo plano. Para Linux, simplemente cámbielo a esto:
fuente
fuente