Cas d'utilisation pour l'émulateur de terminal neovim?

10

Une grande différence entre neovim et Vim est que neovim inclut un émulateur de terminal qui fonctionne de manière asynchrone.

Cependant, je ne vois pas comment puis-je profiter de cette fonctionnalité. Pour quoi puis-je l'utiliser? Pouvez-vous donner quelques cas d'utilisation de la fonctionnalité de terminal de neovim afin que je comprenne comment je peux l'utiliser au mieux?

Dans J'utilise normalement normale Vim :read !{command}, :write !{command}, Ctrl+Zet fgainsi que tmux fenêtres fendus.

cbaumhardt
la source
Un problème avec <C-z>est que le processus Vim est suspendu par le système d'exploitation: il ne fait rien (y compris répondre aux commandes du serveur).
Martin Tournoij
Serait-il utile d'utiliser :shellavec exitou est-ce que vim est suspendu ici aussi?
cbaumhardt
1
@Carpetsmoker, qu'attendez-vous de votre éditeur de texte lorsque vous ne l'utilisez pas?
romainl
@romainl Eh bien, par exemple, j'ai un script qui concentrera la session Vim en éditant un fichier particulier; cela suspendra les processus Vim suspendus ...
Martin Tournoij
1
Ce n'est pas un problème avec <C-z>, c'est un problème avec votre script.
romainl

Réponses:

10

L'exécution d'un terminal dans Vim vous permet d'utiliser des commandes Vim sur l'entrée et la sortie des programmes que vous exécutez sur ce terminal. Vous obtenez la recherche, le copier-coller, les macros, la coloration de la syntaxe, etc. L'utilisation de :read !{command}et :write !{command}vous donne cela pour les commandes ponctuelles, mais l'entrée / sortie asynchrone devient utile lorsque vous souhaitez soumettre une entrée à un programme externe pièce par pièce.

Le cas d'utilisation typique est une boucle de lecture-évaluation-impression (REPL), fournie par de nombreux langages de programmation de haut niveau. Vous saisissez une strophe dans votre code source, puis la transmettez au REPL pour une rétroaction immédiate. Étant donné que le REPL continue de s'exécuter d'une soumission à la suivante, l'extrait de code soumis est exécuté en contexte.

Gilles 'SO- arrête d'être méchant'
la source
6

Je pense que l'option de créer des mappages de terminal uniquement est précieuse et étend les options que vous avez dans d'autres émulateurs de terminal, par exemple mapper t pour exécuter des tests non configurés avec une configuration spécifique, que vous ne pouvez obtenir que par des alias complexes ou des fonctions bash.

Beka
la source
4

Le cas d'utilisation le plus évident auquel je peux penser est la programmation. Avez-vous déjà voulu exécuter des tests dans VIM, compiler ou utiliser un outil de console? Je sais que les gens utilisent Tmux, mais je sais que vous pouvez le faire dans NeoVIM. C'est assez génial !!!

Si vous utilisez des tampons, vous pouvez ajouter, supprimer, masquer et afficher les terminaux à votre guise. Voilà le profit;)

Exécuter un shell à l'intérieur de NeoVIM

Gildardo Adrían Maravilla
la source
3

Le meilleur cas d'utilisation auquel je puisse penser est l'original ADM-3a sur une ligne de 110 bps! Parfois, il n'y a vraiment aucun substitut à regarder les choses côte à côte, et :!rcela ne les coupe pas.

cxw
la source
3
Bonne chance pour tout faire dans deux fenêtres 39x12 (ou 39x24!) ;-)
romainl