En tant que développeur, il est commun d’avoir recours à un IDE différent afin de pratiquer une nouvelle technologie. Dans un cas général, nous commençons notre travail sur ce nouvel outil qui semble être adapté à notre nouveau besoin, mais nous nous retrouvons vite rattrapé par la réalité. L’interface graphique est différente, les raccourcis claviers ne nous sont pas familiers en dépit de quelques paramétrages. Nous sommes en réalité en train de perdre de la productivité à cause de ces changements brutaux. Si vous avez en effet déjà connu cette sensation, c’est que vous vous êtes retrouvés à être dépendant de votre IDE initial. En soit, ce n’est pas aussi grave que ça en à l’air, le métier de développeur exerce sans cesse notre capacité à apprendre sur le tas, mais en y réfléchissant, est-ce la bonne chose d’autant bouleverser notre manière de travailler ?
Pour répondre à cette problématique, l’objectif serait de réduire cette marche que nous empruntons lorsque nous changeons d’éditeur en centralisant un maximum de fonctionnalités sur des outils fonctionnant de manière indépendante et n’ayant pas la lourdeur d’un IDE. L’idéal serait que notre système d’exploitation devienne petit à petit notre IDE et qu’au fil de ces changements nous arrivions à devenir indépendants de ces outils gourmands et sujet à changements.
Le terminal répond parfaitement à cette problématique (même s’il n’en est pas l’unique réponse !). Au premier abord, cette application n’est pas attrayante, pour certaines personnes elle n’est utile qu’en cas de dernier recours, mais pourtant, elle est présente avec nous peu importe la technologie utilisée. Prenons l’exemple de la gestion des versions avec Git. Ce concept est omniprésent au sein d’un projet et peut être géré avec le terminal. Avec quelques astuces / outils, il est possible d’obtenir un meilleur résultat qu’une interface graphique d’un IDE tout en accélérant notre façon de travailler.
Dans un premier temps, on peut utiliser des alias de shell permettant d’écrire nos commandes plus rapidement sans à avoir à s’en souvenir intégralement. Ces alias peuvent être définis dans le fichier ~/.bashrc si vous utilisez un shell bash ou bien le fichier ~/.zshrc pour un shell zsh. Voici quelques exemples d’alias que j’utilise me facilitant mon utilisation de Git et de Maven :
# Alias Git
alias gcmsg="git commit -m"
alias gp="git push"
alias gl="git pull"
alias gpristine="git reset --hard && git clean -dffx"
# Maven
alias mci="mvn clean install"
alias msbr="mvn spring-boot:run"
Libre à votre imagination de trouver les commandes que vous tapez le plus souvent afin d’accélérer votre travail. Pour une configuration plus approfondie de votre shell, il est possible de se tourner vers des framework telle que https://ohmyz.sh. On peut aussi se tourner vers un multiplexeur de terminal tel que tmux pour une gestion de sessions / d’onglets / de fenêtres au sein du terminal.
Dans le cas où vous passerez du temps à configurer votre terminal, il est possible de synchroniser vos configurations à l’aide d’un dépot git que vous pouvez cloner afin de créer des liens symboliques vers ces fichiers de configurations. Un simple pull permettra de récupérer la dernière version de vos configurations. (Il est très agréable d’avoir sa configuration git et ses hôtes SSH de versionné). Pour automatiser cette synchronisation, il est possible de se tourner vers le logiciel chezmoi.
Mon dépôt personnel de configurations contient les éléments suivants :
- Les configurations vu précédemment : Git / SSH / Tmux.
- Mes configurations des logiciels GNU/Linux que j’utilise sur mon environnement personnel (i3, imwheel).
- Mes configurations de terminaux (Windows Terminal / Alacritty).
- Mes configurations Vim (Neovim / Vim / IdeaVIM).
- Ma clé publique GPG que j’utilise pour signer certains commits.
- Un script d’automatisation des créations des liens symboliques.
Les applications avec TUI (Terminal User Interface) sont des excellentes alternatives aux outils que vous pouvez trouver dans vos IDE. En plus d’un meilleur esthétisme, ces applications possèdent un support souris rendant la courbe de progression de ces outils moins raide. Lazygit et LazyDocker sont deux de ces outils, le premier permet d’effectuer la majorité des opérations git de façon très fluide et le second offre une gestion de ses conteneurs Docker.
Pour les curieux, voici une liste répertoriant des applications de ce type : https://github.com/rothgar/awesome-tuis
Le terminal n’est pas la solution absolue à cette problématique. Prenons le cas de Meld un outil de résolutions de conflits de merge. Cet outil permet de gérer efficacement les conflits entre deux branches avec une interface graphique claire. Il est donc indépendant d’un quelconque IDE et peut être renseigné en tant merge.tool
dans le fichier de configuration ~/.gitconfig
.
L’important est de ne pas suivre à la lettre les exemples cités dans cet article mais de comprendre le sens de la démarche exprimée. En cas de question, vous pouvez toujours me contacter !
Arnaud Peralta
Ingénieur d’Etude et Développement
Proxiad Axe Seine