Estoy trabajando en un pequeño script de Python, que necesita ejecución frecuente para depurar y desarrollar más.
¿Puedo dividir la pantalla vim y ejecutar mi script en una parte con una pulsación de tecla?
fuente
Estoy trabajando en un pequeño script de Python, que necesita ejecución frecuente para depurar y desarrollar más.
¿Puedo dividir la pantalla vim y ejecutar mi script en una parte con una pulsación de tecla?
Agregue esta línea a su .vimrc:
command R !./%
Y luego puede escribir ": R" mientras está en Vim para ejecutar el script ( vim-run-current-file )
Vim no lo hace, y nunca admitirá un shell incrustado como emacs o kate (si quiere decir eso), vea esta pregunta de stackoverflow .
David Spillet tiene razón, puedes ejecutar tu vim dentro de la pantalla gnu:
$ screen vim foo.txt
Pero eso solo le dará algo remotamente parecido a un administrador de ventanas en una terminal, MUY útil cuando se usa sobre ssh o en una caja sin X, pero localmente puede abrir otro xterm y cambiar entre ellos. *
De todos modos, si puede vivir con el hecho de que no verá el archivo que está editando mientras mira la salida que produce, la sugerencia de Jack M es buena, pero podría ser más corta:
:map ;e :w<cr>:!python %<cr>
Con el mismo propósito, tengo esto en mi ~/.vimrc
:
au BufEnter *
\if match( getline(1) , '^\#!') == 0 |
\ execute("let b:interpreter = getline(1)[2:]") |
\endif
fun! CallInterpreter()
if exists("b:interpreter")
exec ("!".b:interpreter." %")
endif
endfun
map <F5> :call CallInterpreter()<CR>
Esto ejecuta cualquier archivo que tenga un shebang ( #!
) en la primera línea. Utiliza el intérprete para ejecutar el archivo, por lo que no necesita tener permisos de ejecución.
* (la pantalla tiene algunas otras características muy buenas como copiar y pegar desde la salida, monitorear las ventanas ocultas en busca de actividad / no actividad, poder usar la sesión desde diferentes terminales al mismo tiempo, cerrar sesión dejando todos los programas corriendo - es una herramienta poderosa).
:map ;e :w<cr>:!python %<cr>
quiere hacer eco de cosas en mi búfer vim para "confirmar" (?) que se ejecutó el comando. ¿Cómo consigo que simplemente ejecute el comando en silencio?:map <silent> ...
no parece funcionarLa forma menos detallada (que requiere que su script sea ejecutable) es probablemente:
fuente
:!./%
que el script se encuentre en el directorio actual.!
le dice a vim que ejecute lo que sigue como un comando bash, para que pueda hacerlo!echo "Hello"
. El%
se expande para ser el nombre del archivo actual.Puede que no sea pantalla dividida, pero esto funciona bastante bien para mí:
Esto se asigna
;e
para escribir el archivo actual y ejecutarlo usando python (se supone que python está en suPATH
).fuente
El complemento Bexec vim hace exactamente lo que quieres. Atajos de teclado incluidos.
fuente
Hay una pregunta similar sobre StackOverflow .
fuente
Es lo que usé con please (F5 ejecuta el script actual).
Para convertir vim en un poderoso IDE de Python, recomiendo este tutorial:
fuente
Coloque este pequeño fragmento en su .vimrc para ejecutar el archivo actual con una sola tecla (como
F5
) y mostrar el resultado en un nuevo búfer de panel dividido.:!
está bien, pero debe cambiar a su terminal para ver el resultado.Si bien puedes hacer eso
ctrl-z
y traer vim de regresofg
, aún significa que debes cambiar mucho de contexto.La forma en que funciona este fragmento es primero adivinando el ejecutable basado en el archivo
filetype
y luego ejecutándolo con el archivo actual como argumento.A continuación, un útil método de utilidad toma la salida y la descarga en un nuevo búfer.
No es perfecto, pero sí muy rápido para flujos de trabajo comunes.
Aquí está el fragmento copiado a continuación:
fuente
No sé sobre vim directamente, pero generalmente puede dividir la pantalla de esta manera con la
screen
utilidad. ctrl+ a, S(tenga en cuenta que es una S mayúscula) dividirá la pantalla y puede cambiar entre los dos con ctrl+ a, tab(si la ventana está vacía, use ctrl+ a, npara moverse a otra ventana abierta o ctrl+ a, cpara crear una nueva) .También puede dividir la pantalla en más de dos y cambiar el tamaño de las divisiones con ctrl-a,: redimensionar. Utilizo la pantalla de esta manera a menudo, y aunque no es la solución de una sola clave que pides, puede ser muy conveniente.
fuente