Mon objectif est de réutiliser une fenêtre de tâches dans VS Code. Cependant, lorsque j'entre ctrl + c, la tâche s'arrête, mais écrit alors: "Le terminal sera réutilisé par les tâches, appuyez sur n'importe quelle touche pour le fermer. ".
Je ne veux pas fermer la fenêtre. C'est frustrant car cela m'oblige à ouvrir une nouvelle fenêtre et à naviguer vers le bon répertoire.
J'ai enregistré un gif du problème (c'est la fenêtre à droite):
Ma configuration de tâches ressemble à ceci:
{ "label": "some label", "type": "npm", "script": "build", "path": "some-path/", "problemMatcher": [], "runOptions": { "runOn": "folderOpen" }, "group": "build", "presentation": { "echo": true, "reveal": "silent", "focus": false, "panel": "shared", "showReuseMessage": false, "clear": false, "group": "build" } }
J'ai essayé diverses combinaisons des propriétés de presentation
, mais sans aucune aide.
La demande de fonctionnalité associée sur le code VS est ici .
3 Réponses :
Il semble que vous souhaitiez lancer un shell dans le bon dossier une fois la tâche terminée. Je ne sais pas si c'est la meilleure façon de le faire, mais je fais quelque chose de similaire avec des tâches composées.
{ "label": "some label", "type": "npm", "script": "build", "path": "some-path/", "problemMatcher": [], "runOptions": { "runOn": "folderOpen" }, "group": "build", "presentation": { "echo": true, "reveal": "silent", "focus": false, "panel": "shared", "showReuseMessage": false, "clear": false, "group": "build" } }, { "label": "shell", "type": "shell", "command": "cd app; bash", "group": { "kind": "build", "isDefault": true } }, { "label": "Task and Shell", "group": "build", "dependsOn": ["some label", "shell"], "dependsOrder": "sequence", }
Cette configuration exécute bash dans le bon dossier après la tâche (dans la même fenêtre). Remplacez bash
par le shell que vous utilisez si nécessaire.
J'ai essayé de mettre en œuvre votre solution, mais cela ne semble pas garder la fenêtre ouverte?
Vérification juste: exécutez-vous la tâche composite? Ou la tâche originale?
Je ne suis pas sûr de votre question?
Je ne pense pas que ce soit possible et cela peut être intentionnel.
Si vous regardez le schéma de tasks.json , vous voyez:
{ "version": "2.0.0", "tasks": [ { "label": "10 9 8 ...", "type": "shell", "command": "seq 10 1 && sh", "presentation": { "echo": true, "focus": true, "reveal": "always", "panel": "shared", }, "problemMatcher": [], } ] }
Le type d'une tâche personnalisée. Les tâches de type "shell" sont exécutées à l'intérieur d'un shell
Donc, pour moi, cela implique que si vous avez une tâche de compte à rebours de type "shell" exécutant cette commande seq 10 1
, dans les coulisses, cela ferait:
devbox:~ dev$ bash -c "seq 10 1" 10 9 8 7 6 5 4 3 2 1 devbox:~ dev$
Comme vous pouvez le voir, il sort immédiatement et je ne suis pas sûr que vous puissiez y faire quoi que ce soit. (Je peux me tromper cependant)
Même si vous définissez une tâche de type "process" (la commande étant le chemin vers un exécutable), cela ne vous permet pas de réutiliser le terminal.
Cela dit, vous pouvez le forcer mais VS Code n'en serait pas trop content: (remarquez le && sh
à la fin de la commande)
/** * The description of a task. */ interface TaskDescription { /** * The task's name */ label: string; /** * The type of a custom task. Tasks of type "shell" are executed * inside a shell (e.g. bash, cmd, powershell, ...) */ type: 'shell' | 'process'; //... }
Lorsque vous exécutez la tâche, vous obtenez immédiatement un autre shell:
Cependant, si vous réexécutez la même tâche, VS Code devient grincheux:
Le fait que je ne puisse pas voir une option dans .vscode/settings.json
pour prendre en charge votre cas d'utilisation me fait penser que c'est vraiment un choix par conception :
J'ai trouvé une solution pour cela, ma tâche ressemble à ceci
"tasks": [ { "label": "start server", "type": "shell", "command": "RUN='cd backend && npm run dev' bash", "problemMatcher": [], }, ]
et à la fin de mon .bashrc j'ai eval "$RUN"
Cela ressemble à un double de stackoverflow.com/questions/46899480/ ... Essayez la solution macro, c'est la plus simple - faites-moi savoir si cela fonctionne pour vous.