Sé que puedo :!
o :r!
ejecutar un comando externo y, opcionalmente, insertar su salida en el texto. Incluso puedo actuar :!sh
y generaré un caparazón que vivirá hasta que salga, pero mientras el caparazón está activo, Vim está "dormido" e inaccesible. Debo abandonar el caparazón y generar uno nuevo si quiero volver a Vim por un momento, lo que no es muy útil.
Puedo acceder a Shell en el extremo opuesto, suspendiendo Vim con ^Zy gestionando el trabajo de Vim a través de bg
, fg
y jobs
. Esto tiene más sentido pero es muy engorroso a largo plazo. Puedo usarlo Screen
si está disponible (a menudo no lo está), o abrir varias ventanas de mi administrador de ventanas (y ssh para apuntar al host de cada una de ellas en secuencia, para tener tanto vim como shell en el host remoto, volviendo a ser engorroso).
Sería mejor si Vim me permitiera abrir una sesión de shell y mantenerla, por ejemplo, en una de sus ventanas (internas), o si me permitiera cambiar a ella y volver. ¿Es posible algo así?
:split
, mientras retienes el archivo en la otra ventana? ... Esto me parece un trabajo para tmux o screen ...Respuestas:
Hay un par de complementos vim que permiten esto. Yo uso Conque ( Github ).
Después de ponerlo en su directorio de complementos todo lo que tiene que hacer es:
Y tendrá un shell bash interactivo en vim. Luego puede usar sus gestos vim regulares para hacer cualquier otra cosa que desee hacer en la ventana.
También el otro complemento es vimshell .
fuente
:help shell-window
. (Respuesta corta: no.)Con VIM, creo que los complementos que existen para hacer esto no son tan buenos, aunque IMO vimshell es lo más cercano. Sin embargo, debe comprender que es un problema de 2 partes.
En mi opinión, hay 2 enfoques que funcionan mucho mejor en este sentido.
Debo agregar que existe una buena probabilidad de que NeoVIM pueda provocar un cambio en este aspecto, ya que uno de sus objetivos principales es poder ejecutar trabajos de forma asincrónica. Pero hasta entonces, esto es lo mejor que podemos obtener en mi opinión.
fuente
En
:help shell-window
podemos leer sobre la ejecución de comandos de shell en una ventana:Sin embargo, hay pocas soluciones que puede usar:
uso
screen
que está especialmente diseñado para ese tipo de cosas, por ejemplo:Ver más en: Guía de supervivencia de pantalla GNU en stackoverflow SE
O: División de pantalla GNU , Referencia rápida de pantalla para más detalles.
VIM-Shell : un parche de terceros
vterm : emulador de terminal dentro de vim.
Vimux : interactúa fácilmente con tmux desde vim.
otro ya mencionado: Conque
Relacionado: ¿Cómo ejecutar una terminal dentro de vim? en stackoverflow
fuente