¿Caso de uso para emulador de terminal neovim?

10

Una gran diferencia de neovim y Vim es que neovim incluye un emulador de terminal que funciona de forma asíncrona.

Sin embargo, no veo cómo puedo sacar provecho de esta función. ¿Para qué puedo usarlo? ¿Puede dar algunos casos de uso para la función de terminal de neovim para que entienda cómo puedo usarlo en su mejor medida?

En condiciones normales Vim utilizo normalmente :read !{command}, :write !{command}, Ctrl+Zy fg, así como TMux ventanas divididas.

cbaumhardt
fuente
Uno de los problemas <C-z>es que el sistema operativo suspende el proceso de Vim: no está haciendo nada (incluida la respuesta a los comandos del servidor).
Martin Tournoij
¿Sería útil usarlo :shellen su exitlugar o también se suspende vim aquí?
cbaumhardt
1
@Carpetsmoker, ¿qué espera que haga su editor de texto cuando no lo está usando?
romainl
@romainl Bueno, por ejemplo, tengo un script que enfocará la sesión de Vim editando un archivo en particular; esto dependerá de los procesos suspendidos de Vim ...
Martin Tournoij
1
Eso no es un problema <C-z>, es un problema con tu script.
romainl

Respuestas:

10

Ejecutar un terminal dentro de Vim le permite usar los comandos de Vim en la entrada y salida de los programas que ejecuta en ese terminal. Obtiene búsqueda, copia y pegado, macros, coloración de sintaxis, etc. Usando :read !{command}y :write !{command}le da eso para comandos de una sola vez, pero la entrada / salida asincrónica se vuelve útil cuando desea enviar entrada a un programa externo pieza por pieza.

El caso de uso típico es un bucle read-eval-print (REPL), que es proporcionado por muchos lenguajes de programación de alto nivel. Escribe una estrofa en su código fuente y luego la envía al REPL para recibir comentarios inmediatos. Como REPL sigue ejecutándose de un envío al siguiente, el fragmento de código enviado se ejecuta en contexto.

Gilles 'SO- deja de ser malvado'
fuente
6

Creo que la opción de crear asignaciones solo de terminal es valiosa y amplía las opciones que tiene en otros emuladores de terminal, por ejemplo, la asignación t para ejecutar pruebas unitarias con una configuración específica, que solo puede lograr a través de alias complejos o funciones bash.

Beka
fuente
4

El caso de uso más obvio que se me ocurre es la programación. ¿Alguna vez ha querido ejecutar pruebas dentro de VIM, compilar o usar alguna herramienta de consola? Sé que la gente usa Tmux, pero sé que puedes hacerlo dentro de NeoVIM, debo decir. ¡Esto es bastante asombroso!

Si usa buffers, puede agregar, eliminar, ocultar y mostrar terminales como desee. Ese es el beneficio;)

Ejecutar un shell dentro de NeoVIM

Gildardo Adrían Maravilla
fuente
3

¡El mejor caso de uso que se me ocurre es el ADM-3a original en una línea de 110 bps! A veces, realmente no hay sustituto para mirar las cosas una al lado de la otra, y :!rno es suficiente.

cxw
fuente
3
Buena suerte haciendo cualquier cosa en dos ventanas de 39x12 (¡o 39x24!) ;-)
romainl