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.
Réponses
Trop de publicités?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
Jetez un oeil à dispatch.vim de @ tpope
https://github.com/tpope/vim-dispatch#readme
Bande annonce vidéo: http://vimeo.com/63116209
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.