web-dev-qa-db-fra.com

Ouvrir la sortie d'une commande Shell dans un volet divisé

Considérez n'importe quel langage de programmation interprété.

Je peux exécuter le script actuellement ouvert à l'aide de ! interpreter % et utiliser la clé de retour pour revenir à vim une fois l'exécution terminée.

Est-il possible de ne pas remplacer la fenêtre actuelle par la sortie de la commande Shell exécutée, mais d'ouvrir la sortie dans un nouveau volet divisé? Je voudrais toujours voir mon code source lors de l'exécution de mon script.

J'ai essayé :split ! interpreter %, mais cela n'a pas fonctionné.

Y a-t-il un moyen? J'utilise vim 7.3.

22
muffel

Avec :!, la commande externe est exécutée dans un shell et la sortie éphémère n'est pas capturée dans Vim. vous voyez seulement ce qui est imprimé sur le terminal, puis le contrôle revient à Vim une fois la commande externe terminée.

Pour conserver la sortie, vous devez la lire dans un Vim tampon. Pour cela, il y a la commande :read!. Pour ouvrir un nouveau tampon scratch, combinez ceci avec :new:

:new | 0read ! <command>

Si vous souhaitez transmettre le nom de fichier du tampon actuel (%) à la commande externe, vous devez utiliser :execute, de sorte qu'il soit déjà évalué dans le tampon actuel:

:execute 'new | 0read ! interpreter' expand('%')

Ou, vous utilisez le fait qu'avec un nouveau tampon, le précédent devient le substitut, et utilisez # au lieu de %:

:new | 0read ! interpreter #

Débarrassez-vous du tampon de travail avec :bdelete!.

Si vous voulez voir la sortie de manière asynchrone pendant son exécution, vous avez besoin d'un multiplexeur externe ou d'un plug-in, comme indiqué dans la réponse @chaos.

26
Ingo Karkat

Autant que je sache, vous ne pouvez pas faire cela dans vim. Mais utilisez un multiplexeur de terminal tel que screen pour cela. Avant d'ouvrir un vim, démarrez le multiplexeur:

screen

Puis appuyez ctrl-aS pour l'horizontale et ctrl-a| pour un écran renversé vertical.

Ouvrez maintenant un fichier dans vim dans l’un des écrans divisés. Et passez à l’autre écran en utilisant ctrl-atab. Notez que, dans le deuxième écran, vous devez d’abord ouvrir un nouvel écran (ctrl-ac) avant de pouvoir l'utiliser.

Dans l'écran avec vim, vous pouvez éditer le fichier et dans l'autre écran, vous pouvez l'exécuter et voir les messages et le code en permanence.

Ici un référence rapide pour screen.

2
chaos