J'ai fait quelques essais avec VSCode aujourd'hui. Essentiellement, je l'ai utilisé dans le contexte de développement d'un petit outil Python mono-fichier, sans git, et aussi dans le contexte d'un papier (Latex) avec git et multi-user.
Tout d'abord, VSCode est effectivement plus rapide qu'Atom au chargement, que ça soit en activant ou désactivant les extensions. C'est assez surprenant, car les deux éditeurs proposent grosso-modo les mêmes features de base et reposent sur la même technologie (Electron), mais il y a facilement un facteur 2 sur le temps d'ouverture des deux cotés. Le fait que VSCode affiche la fenêtre plus vite (même si le contenu n'est pas encore visible) doit jouer également sur cette impression.
Au niveau du feeling global (ergonomie, etc.) c'est fort comparable. On retrouve la merveilleuse command-palette, la sidebar et la statusbar avec grosso-modo le même genre d'informations dedans. La command-palette me semble plus réactive que celle d'Atom, et probablement plus simple à utiliser (même si les commandes sont malheureusement triées par "frequently used", ce qui signifie qu'il faut quand même lire les résultats avant d'en choisir un
). Coté réglages, VSCode travaille avec un fichier de config global et en parallèle, la config utilisateur. C'est moins ergonomique qu'un vrai "panneau de settings", mais ça fait le job. A noter qu'il y a une option permettant d'utiliser le panneau de settings qui sera prochainement intégré. Dans les deux cas (Atom et VSCode), on est en terrain connu et ça reste simple à manipuler.
Coté extensions, elles sont moins nombreuses dans VSCode, mais beaucoup plus riches. Par exemple, il ne faut qu'une seule extension (et ses dépendances) pour avoir un full support de Python (environnements virtuels, linter, autocompletion, ...). Pour Latex, c'est pareil (latex-workshop pour VSCode, contre linter-latex, language-latex et latexer pour Atom). Ca a ses avantages et inconvénients, mais ça permet de rentrer plus rapidement dans le "vif du sujet".
Pour le support de git, c'est intégré dès deux cotés. VSCode semble proposer d'autres providers, mais je n'ai pas essayé (et je suppose qu'Atom a sensiblement la même chose, même si je ne sais pas si c'est "compatible" avec l'ergonomie/UI de git dans Atom). Dans les deux cas, on a accès à tout ce qu'il faut pour "naivement" utiliser git. Il y a une extension sympa pour VSCode (gitlens) pour avoir rapidement accès à l'historique des modifications et au "blame" notamment. Je ne sais pas si je vais la laisser active ou pas, on verra à l'usage.
La gestion de projets est une question délicate pour moi. J'ai toujours détesté, sur ce type d'éditeurs, devoir configurer mes projets. Dans Atom, j'utilisais un addon qui considérait chaque répertoire comme un projet potentiel, ce qui permettait (via CTRL+P) de passer rapidement (fuzzy search) d'un fichier à l'autre, ou d'avoir accès à la completion sur base des fichiers présents dans le même répertoire. Ca marchait bien, même si c'est un peu chiant parfois quand on a un folder "fourre-tout". Je retrouve le même feeling du coté de VSCode, sauf qu'il faut impérativement "ouvrir un répertoire" au préalable (si on ouvre un fichier, les autres fichiers dans le même répertoire ne sont pas considérés comme étant "disponibles" immédiatement). Ce ne sera pas problématique, vu que le raccourci CTRL+R permet d'ouvrir un répertoire récent en un clin d'oeil.
Au niveau de Latex, j'ai du chipoter un petit peu. Le workflow dans Atom est simple pour moi : je travaille sur un fichier, je fais CTRL+ALT+B pour produire le PDF, le PDF est ouvert dans Evince, et synctex me place directement au bon endroit dans le PDF. En cas de modification, j'ai juste à sauver puis refaire CTRL+ALT+B. Dans VSCode, j'ai du chipoter un petit peu au niveau de la configuration de latex-workshop pour avoir quelque chose de sensiblement comparable. Premièrement, il n'est pas possible d'utiliser un visionneur de PDF externe. On a deux options : soit un tab directement dans l'éditeur (mais ça ne colle pas avec mon travail sur plusieurs moniteurs, surtout que les tabs ne sont pas facilement détachables quand ce ne sont pas des fichiers), ou alors via le browser. Avec ce dernier, le workflow est simple : CTRL+ALT+V pour lancer l'ouverture du pdf, puis à chaque fois que je sauve, le PDF se met à jour à l'emplacement du curseur. On verra à l'usage si c'est "tout aussi pratique", mais ça ne devrait pas fondamentalement changer les choses (on est vite attaché à ses habitudes, hein ?
).
Pour l'instant, j'ai donc configuré VSCode pour que ça soit l'éditeur par défaut, le temps de me faire la main avec ce dernier. C'est surtout sa vitesse à l'ouverture qui m'intéresse.
Il reste cependant quelques "détails" :
- Le gutter semble être placé à droite, dans la scrollbar du document. Or j'ai l'habitude d'avoir les infos de linting affichées à gauche. Je n'ai pas trouvé la possibilité de changer ça.
- La barre d'activité (quelques boutons pour ouvrir l'explorateur de fichiers, le scm, les extensions, etc. en gros, la sidebar) est par défaut à gauche. Il m'a fallu chercher pour la placer à droite (hint : y a une commande "toggle side" !). Je n'aime pas la sidebar à gauche car je la cache dans 90% des cas, et quand on l'ouvre, ça "décale" le fichier sur lequel on travaille, donc on perd ses repères visuels.
- Bonus point pour le support des environnements virtuels en Python, même s'il est impossible de configurer un linter/mypy spécifique pour chaque environnement (j'ai donc un linter python3 global, quelque soit l'environnement, et je ne peux pas utiliser mypy pour l'inférence de type, vu que chaque environnement dispose de ses propres librairies, ce qui n'aurait pas beaucoup de sens pour mypy).
- Si tout se charge plus rapidement, il faut quand même signaler qu'à l'ouverture d'un fichier, il faut bien 3 à 4 secondes avant que certains plugins ne se mettent en route (par ex, l'affichage des lignes modifiées ou même le linting). C'est du détails, mais quand même
Au final, Atom est sans doute plus rapide sur ce point car l'éditeur est dans un état "totalement utilisable" un peu plus rapidement.