34 votes

En cours d'exécution: make from gVim in Background

J'utilise gVim dans windows pour modifier mon code (la plupart du temps C++). J'utilise :faire en gVim pour compiler le projet, mais c'est une opération de blocage, qui m'empêche de l'aide de gVim jusqu'à ce que la compilation est terminée. Comment puis-je faire :faire de manière asynchrone et toujours obtenir les bienfaits de la lecture, les erreurs de retour dans Vim et de sauter à des erreurs dans le code source? Les points de Bonus si j'arrive à voir le rendre le processus en temps réel. Droit maintenant, le :faire redirige la sortie vers un fichier, donc je n'ai pas la chance de voir les progrès de faire.

18voto

Mykola Golubyev Points 21210

Ce que je fais c'est

 :!gvim -c 'MyMake'
 

(où MyMake est la commande personnalisée qui permet de basculer vers les répertoires appropriés, make et copen 20.)

et je fais mon travail pendant que la construction va dans l’autre fenêtre.

Autre option:
Vous pouvez rediriger la progression vers un fichier du shell ou de vim (:! Make &). Et puis en utilisant

 :cfile make_result_file

:cw
 or
:copen 20
 

Obtenez le même résultat que vous utiliseriez: make

8voto

noahlz Points 4731

Jetez un oeil à dispatch.vim de @ tpope

https://github.com/tpope/vim-dispatch#readme

Bande annonce vidéo: http://vimeo.com/63116209

7voto

idbrise Points 4551

Jetez un oeil à mon AsyncCommand plugin. C'est juste enveloppe le vim syntaxe requise pour exécuter quelque chose et de le charger avec --à distance. J'ai téléchargé AsyncCommand 2.0, qui comprend un AsyncMake commande.

Ajouter le script à votre .vim/plugin et vous pouvez construire avec :AsyncMake ou :AsyncMake target. Les erreurs seront ouverts dans votre quickfix une fois la rendre complète.


Répondre au commentaire de code plus lisible:

Pour voir les résultats de la compilation sous Windows, si vous avez cygwin/unxutils/quelque chose avec la queue dans votre chemin d'accès, puis dans asynccommand.vim, changement

call <SID>Async_Impl(tool_cmd, vim_cmd)

pour

call <SID>Async_Impl(tool_cmd, vim_cmd)
call <SID>Async_Impl("tail -f ". temp_file, "")

Cela devrait changer toutes les commandes Asynchrones pour ouvrir une deuxième fenêtre de commande à la sortie.

5voto

ldigas Points 19740

Essayez d'utiliser

 :!start make
 

(plus d'infos sur ": help! start") - de cette façon, vim n'aura pas à attendre que le processus commence pour se terminer - vous pouvez simplement continuer votre édition).

1voto

gar Points 36

J'utiliserais les méthodes intégrées de votre système d'exploitation pour exécuter des tâches en arrière-plan.

Sous Windows, essayez de taper

 :!start make
 

Sous linux / mac os x, essayez

 :!make > /dev/null 2>&1 &
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X