Fermer

septembre 21, 2021

Comment créer votre propre environnement de développement sans souris —


Résumé rapide ↬

Construire un environnement de développement avec le shell comme clé de voûte offre de multiples avantages. Vous pouvez utiliser des outils qui s'intègrent bien les uns aux autres, vous pouvez tout personnaliser en fonction de vos propres besoins, et le plus important de tous, vous pouvez contrôler l'ensemble de votre environnement de développement avec votre clavier. Cela peut économiser beaucoup d'énergie cognitive et offrir une expérience utilisateur agréable.

Il était une fois, dans le pays magique du développement logiciel, un jeune développeur, votre humble serviteur, découvrant Linux pour la première fois. Du coup, j'ai eu accès au shell Linux, un outil offrant de nombreuses façons d'automatiser tout ce que je ne voulais pas faire encore et encore.

Mais Ubuntu n'était pas sans inconvénients. J'étais souvent victime de bugs d'affichage et de plantages, et cela devenait de plus en plus lent au fil du temps.

Un jour, quelque chose de terrible s'est produit : j'ai dû mettre à jour Ubuntu vers sa prochaine version majeure. Tout s'est écrasé. Je ne pouvais plus démarrer mon système. Je n'avais aucune idée de comment je pouvais résoudre les problèmes auxquels je faisais face parce que je n'avais aucune idée de la façon dont Linux fonctionnait sous le capot. Ubuntu était abstrait tout ce qu'il y a de plus essentiel pour que je ne m'en soucie pas.

J'ai dû tout réinstaller manuellement – Ubuntu et tous mes outils. Le pire a été de tout reconfigurer. Dans l'ensemble, il m'a fallu des jours pour revenir au système que j'avais avant le crash. Mais je ne connaissais aucune autre alternative, alors j'ai continué à utiliser Ubuntu pendant des années. Pendant ce temps, je n'ai jamais réussi à le mettre à jour vers sa prochaine version majeure sans avoir besoin de tout réinstaller manuellement, encore et encore.

Ma vie en tant que développeur a encore changé lorsque mon entreprise a embauché deux grands développeurs. Ils connaissaient bien Linux et les différentes distributions que je pouvais utiliser. Ils m'ont guidé, m'ont montré les outils qui ont résolu tous les problèmes que j'avais avec Ubuntu. Ces outils ont considérablement amélioré mon flux de travail ; ils m'ont montré à quel point il était pratique pour un développeur de garder les mains sur le clavier autant que possible.

Cela s'est passé il y a six ans. J'utilise toujours le même environnement de développement aujourd'hui. J'utilise le clavier 92,8% du temps pour gérer tous mes outils, en utilisant des frappes qui ont du sens et qui sont faciles à retenir. Je peux réinstaller tout mon système avec un tas de scripts que j'ai écrits, y compris tous les outils que j'utilise et leurs configurations.

Aujourd'hui, j'aimerais partager avec vous ces outils afin que vous puissiez vous aussi augmenter votre efficacité et votre confort dans votre travail quotidien. Ils fonctionnent bien ensemble — façonnant ce que j'appelle mon Environnement de développement sans souris. Plus précisément, nous discuterons :

  • Pourquoi l'utilisation du shell Linux peut être très puissante lorsque vous travaillez avec du texte brut (y compris du code );
  • Pourquoi utiliser le redoutable Arch Linux ;
  • L'avantage d'un gestionnaire de fenêtres en mosaïque ;
  • Comment avoir une excellente expérience de terminal avec URxvt, tmux et tmuxp ;
  • Pourquoi Vim peut devenir votre meilleur ami.

Remarque : Les outils que je préconise dans cet article fonctionnent sur Systèmes basés sur Linux. Vous pouvez également les utiliser avec macOS sauf pour i3. Pour Windows, le moyen le plus simple est d'utiliser le sous-système Windows Linux (WSL) pour les installer et les utiliser.

Je n'aurais jamais découvert cette nouvelle façon de travailler sans essayer ces outils. C'est pourquoi je vous encourage à les installer, à les expérimenter et à voir par vous-même si vous tombez amoureux comme moi.

Mouseless With The Shell

En tant que développeur, il est presque impossible d'éviter d'utiliser un shell. Il s'agit d'un outil puissant qui peut simplifier votre flux de travail en automatisant toutes les tâches ennuyeuses.

Les avantages du shell

Avant de parler des avantages de l'utilisation du shell et du terminal, expliquons brièvement quelle est la différence entre ceux-ci deux idées.

Le terminal est une interface graphique qui permet d'interagir avec le shell. Sous Linux, ce shell est souvent Bash, mais il peut en être un autre aussi, e.h. Zsh. Le shell est un interpréteur. Vous pouvez le nourrir avec des commandes et il les exécutera pour effectuer certaines actions. Il vous donnera aussi, parfois, une sortie en retour. Les termes « ligne de commande » et « coquille » sont des synonymes.

Si nous comparions l'environnement de développement sans souris au système solaire, la coquille serait le soleil et tout le reste tournerait autour de lui. C'est parce que le shell est vraiment puissant : il permet d'exécuter de nombreux petits programmes qui fonctionnent très bien ensemble. On les appelle CLI (Interfaces de Ligne de Commande).

Le gros avantage de ces outils : ils sont très simples et limités en isolation, mais vous pouvez les enchaîner pour des résultats puissants. Par exemple, vous pouvez utiliser simultanément les CLIs « history », « sort », « uniq » et « head » pour afficher les CLI que vous utilisez le plus et la fréquence de leur utilisation.

Le shell Linux

Le Linux Coquille. ( Grand aperçu)

De nombreuses CLI sont disponibles. Premièrement, parce que le shell Linux existe depuis longtemps ; les développeurs ont eu le temps de développer de nombreux outils et de les fiabiliser. Deuxièmement, parce que il est plus facile de développer des CLI que des GUI (Interfaces utilisateur graphiques). Concevoir et implémenter ces interfaces graphiques demande beaucoup plus de travail. Les CLI n'ont que des interfaces textuellesqui sont plus faciles à développer, à modifier et à entretenir.

C'est aussi pourquoi les CLI sont rapides : pas besoin de perturber l'affichage et d'autres éléments graphiques. C'était l'un de mes principaux problèmes avec Ubuntu : son environnement de bureau, Unity, était assez lourd, lent et bogué. Tout du moins selon moi. L'utilisation de plus d'interfaces graphiques a aggravé les choses.

Un autre grand avantage de la ligne de commande : vous pouvez écrire des scripts shell pour automatiser toutes les tâches ennuyeuses que vous répétez jour après jour. Par exemple, si vous devez redimensionner des images à la même taille très souvent, vous pouvez écrire un script pour cela. Si vous effectuez souvent des recherches dans certains types de fichiers spécifiques, vous pouvez également l'automatiser. Le ciel est la limite.

Plus après le saut ! Continuez à lire ci-dessous ↓

Les CLI présentent également des inconvénients. C'est un peu plus difficile à utiliser pour les débutants, mais il existe des moyens d'obtenir rapidement ce dont vous avez besoin même si vous ne savez pas utiliser une CLI spécifique.

Enfin, si vous avez des tâches à effectuer sur des serveurs distants, vous finirez souvent par utiliser le shell. Ils n'ont pas d'interface graphique la plupart du temps, vous n'aurez donc pas le choix. Dans ces cas, il est nécessaire de se familiariser avec la ligne de commande.

Une approche sans souris

Parce que le shell a une interface textuelle, vos mains restent sur votre clavier lorsque vous l'utilisez. C'est quelque chose que je n'ai jamais vraiment envisagé pendant mes premières années en tant que développeur, mais c'est un gros avantage.

D'après mon expérience, éviter les centaines de mouvements de la main entre le clavier et la souris permet énergie cognitive. J'ai été choqué de découvrir à quel point c'était confortable quand j'ai vraiment essayé de m'en tenir à mon clavier. En prime, j'ai l'impression d'être un hacker utilisant uniquement mon clavier avec ma coque, même si je n'écris que ma liste de courses ! À quel point est-ce génial?

Je dois admettre que j'étais très sceptique quant à cette idée "sans souris" avant de l'essayer. Avec les outils que je décris ci-dessous, je n'ai pas eu à changer toutes mes habitudes d'un jour à l'autre : vous pouvez aussi utiliser la souris avec eux. Mais ils brillent vraiment quand ils sont maniés avec le clavier.

Même si cela n'a jamais été vraiment prouvé, je pense aussi que rester sur le clavier nous rend plus efficaces. Comme l'a souligné le livre The Pragmatic Programmer :

« N'utiliser que des frappes au clavier pour les opérations d'édition courantes est plus efficace que les commandes à la souris ou par menu, car vos mains ne quittent jamais le clavier ».

Cela étant, dit, l'efficacité n'est pas l'objectif principal ici. J'aime rester sur mon clavier et utiliser tous ces outils car je peux me concentrer entièrement sur les tâches à accomplir. Cela me motive à commencer à travailler et à accomplir mes tâches. Ubuntu. Encore une fois, le scepticisme s'installait, les doutes envahissaient mon pauvre cerveau. Arch Linux ? Cette horrible distribution Linux que vous devez installer et configurer entièrement manuellement ? Ce système instable est devenu une blague pour beaucoup ?

Parfois, les stéréotypes n'ont rien à voir avec la réalité, et Arch Linux est l'exemple parfait de cette idée. J'ai utilisé Windows (de 98 à 7), macOS et j'ai également essayé d'autres distributions Linux. Ma conclusion, sans aucun doute: Arch Linux est le plus stable de tous.

Cela étant dit, Arch Linux n'est pas une exigence pour un environnement de développement sans souris. Vous pouvez également utiliser tous les autres outils décrits dans cet article avec d'autres distributions Linux. Vous pouvez également les utiliser avec macOS (sauf i3) ou Windows si vous disposez du sous-système Windows pour Linux (WSL). Mais, avant de le faire, laissez-moi vous dire pourquoi vous devriez sérieusement envisager Arch Linux.

Un système de version évolutive

Arch Linux a un système de version évolutive. Cela signifie que vous devez mettre à jour l'ensemble de votre système souvent, chaque semaine ou toutes les deux semaines. Pour revenir à Ubuntu, il dispose d'un système de support à long terme : vous n'avez besoin de le mettre à jour que quelques fois par an, voire moins si vous le souhaitez.

De nombreux développeurs pensent qu'un Le système de publication continue rend votre environnement de développement instable, ce qui explique en partie la réputation d'Arch Linux. Mais je n'ai jamais eu de problème en six ans d'utilisation quotidienne, et mes amis l'utilisaient non plus. D'un autre côté, les avantages d'un système de roulement sont grands :

  • Toutes les applications que j'utilise sont constamment à jour. Pas besoin de les compiler manuellement pour avoir la version la plus récente en cas de besoin.
  • La mise à jour de votre système signifie souvent que moins de changements seront introduits à la fois. En conséquence, il y a aussi moins de risques de plantages.

Je vous ai raconté mon expérience avec Ubuntu et les plantages que j'ai eus lors de sa mise à jour. Je n'ai jamais eu de problème avec Arch Linux.

Tout ce dont vous avez besoin

De plus, les référentiels d'Arch Linux sont énormes. Il est très probable que vous y trouverez tous les outils dont vous avez besoin. Si vous ne le faites pas, vous pouvez regarder l'AUR (Arch User Repositories), où il y a tout le reste. L'AUR n'est pas un référentiel officiel, il pourrait donc y avoir des problèmes de sécurité avec les applications qui s'y trouvent. Encore une fois, je n'ai jamais eu de problème avec eux, mais c'est possible. Tant que vous vous en tenez aux référentiels officiels et que vous n'installez pas tout et n'importe quoi de l'AUR, vous n'aurez aucun problème.

Une opportunité d'apprentissage

Mentionnons également qu'Arch Linux est une distribution très minimale. . Il n'impose pas beaucoup d'applications inutiles lorsque vous l'installez. En parlant de cela, vous devez installer toute la distribution manuellement à l'aide du shell. La tâche peut sembler intimidante mais, d'un autre côté, vous apprendrez beaucoup de l'expérience.

Comme je l'ai mentionné au début de cet article, connaître un minimum de hood peut vous aider lorsque votre système se comporte bizarrement ou lorsqu'il plante. Ce n'est pas aussi complexe que cela puisse paraître et, si vous êtes un développeur, je dirais que c'est obligatoire. Le Web, votre téléphone ou votre Raspberry Pie fonctionnent sous Linux de nos jours.

Last but not least, le Arch Wiki est le meilleur endroit que vous puissiez trouver pour tout ce qui concerne Linux. Cela m'a beaucoup aidé au fil des ans, même lorsque j'utilisais Ubuntu. C'est un endroit idéal pour dépanner votre système et trouver de nouveaux outils.

Gérer votre Windows avec i3

Maintenant que nous avons examiné pourquoi Arch Linux peut être une base solide pour votre environnement de développement sans souris, voyons ce qu'on peut ajouter par dessus.

Mais d'abord, un peu de théorie. Les systèmes d'exploitation ont souvent trois couches, plus ou moins couplées les unes aux autres :

  1. Le noyauqui touche directement au matériel de votre ordinateur ;
  2. Le shellun interface pour vous, ou certaines applications, pour interagir avec le noyau ;
  3. Une couche d'affichage au-dessus, comme un gestionnaire de bureau ou un gestionnaire de fenêtres en mosaïque.

Gnome ou Unity sont tous deux des gestionnaires de bureau pour Systèmes basés sur Linux. Ils gèrent vos fenêtres et bien d'autres choses, comme votre barre d'état ou votre lanceur d'applications. Les gestionnaires de fenêtres en mosaïque sont une alternative aux gestionnaires de bureau, et ils sont souvent plus petits et plus axés sur la manipulation des fenêtres. un ordinateur de dix ans (Lenovo x220) et il ne ralentit pas. C'est aussi simple à utiliser, la documentation est excellente, et surtout, vous pouvez gérer vos fenêtres avec votre clavier uniquement (si vous le souhaitez).

Les bases de i3 sont simples : vous pouvez ouvrir des fenêtres dans différentes des espaces de travail représentant un écran entier. C'est très similaire aux bureaux virtuels de nombreux gestionnaires de bureaux Linux. Ensuite, lorsque vous ouvrez vos applications préférées, l'écran sera automatiquement partagé en fonction du nombre de fenêtres à l'écran.

Par exemple, si vous ouvrez Firefox, sa fenêtre occupera 100% de l'écran. Si vous ouvrez trois instances de Firefox, chacune d'entre elles occupera 33% de l'écran.

i3 avec fenêtre firefox

i3 avec fenêtre firefox. ( Grand aperçu)

Vous pouvez également modifier la disposition des fenêtres. Au lieu d'avoir toute la fenêtre visible à l'écran, vous pouvez les empiler les unes sur les autres et les parcourir d'une simple frappe. Si vous avez besoin de fenêtres flottantes "normales", vous pouvez également les configurer.

i3 avec des fenêtres firefox empilées

i3 avec des fenêtres firefox empilées. ( Grand aperçu)

Le but d'i3 est de simplifier la gestion de toutes vos fenêtres. Au lieu d'utiliser votre souris pour les déplacer et les redimensionner à chaque fois que vous en ouvrez de nouveaux, vous pouvez utiliser des touches pour effectuer la même opération uniquement lorsque vous en avez besoin.

Cela semble-t-il trop compliqué ? J'ai été efficace avec i3 deux jours après l'avoir essayé. Je ne suis pas un génie ; si je pouvais le faire, vous pouvez le faire aussi.

La cerise sur le gâteau : comme tous les outils décrits dans cet article, vous pouvez personnaliser i3 et ses frappes à votre guise.

]Le seul inconvénient d'i3 : il n'est pas disponible pour macOS. Mais il existe d'excellentes alternativescomme le gestionnaire de fenêtres en mosaïque Amethyst ou Divvy.

Mettez à niveau votre terminal avec URxvt, tmux et tmuxp

Le terminal est l'interface vous donnant accès au shell. Même si le shell est la vraie affaire, nous pouvons le rendre plus facile à utiliser avec quelques outils.

Le chemin de la simplicité avec URxvt

J'aime la simplicité, et c'est en partie pourquoi j'aime l'environnement de développement que je décris dans Cet article. En parlant de cela, URxvt est l'un des terminaux les plus simples que vous puissiez trouver. C'est aussi rapide et fiable. En six ans, je ne l'ai jamais vu s'écraser ou même ralentir. Il fait ce qu'il est censé faire : vous permettre d'utiliser le shell. Ni plus, ni moins.

Le multiplexeur de terminal avec tmux

Même si j'aime la simplicité d'URxvt, j'aime aussi avoir un bon multiplexeur de terminal sur lequel je peux compter, comme tmux.[19659003]Qu'est-ce qu'un multiplexeur de terminaux ? Il vous permet d'ouvrir des sessions contenant plusieurs shells . Ces sessions sont persistantes en arrière-plan : même si votre terminal plante ou si vous le fermez par accident, vos shells ne disparaîtront pas. Vous pouvez les récupérer dans un autre terminal quand vous le souhaitez (comme si de rien n'était).

C'est utile sur votre ordinateur local, mais c'est encore mieux sur un serveur distant. Vous pouvez, par exemple, vous connecter à un serveur via SSH, exécuter un script, fermer votre connexion SSH et votre terminal sur votre machine locale, et rentrer chez vous. Parce que votre shell s'exécute toujours sur votre serveur grâce à tmux, votre script s'exécutera également.

Ce n'est pas tout : tmux est un peu un touche-à-tout, dans le bon sens du terme. Vous pouvez l'utiliser pour ouvrir plusieurs fenêtres contenant plusieurs volets dans un seul terminal. Vous pouvez considérer une fenêtre comme le terminal entier et un volet comme un shell prenant un pourcentage de la fenêtre.

Cela vous rappelle-t-il i3 ? Il suit les mêmes principes, mais il ne peut que créer de nouvelles coques. C'est pourquoi de nombreux utilisateurs satisfaits d'i3 ne voient aucun intérêt à utiliser tmux. Personnellement, j'aime utiliser les deux.

Tmux avec 4 fenêtres et 4 volets

Tmux avec 4 fenêtres et 4 volets. ( Grand aperçu)

Comme toujours, vous pouvez manipuler les fenêtres et les volets de tmux avec votre clavier, et vous pouvez configurer tmux lui-même selon vos souhaits les plus fous.

tmuxp

Imaginons que vous souhaitiez utiliser tmux pour l'application perturbatrice que vous êtes en développement en ce moment. Vous devez d'abord ouvrir un terminal. Ensuite, vous devez créer autant de fenêtres tmux que vous le souhaitez et diviser ces fenêtres avec les volets souhaités.

Rappelez-vous : Un volet représente un shell. Dans chacun de ces shells, vous pouvez ensuite exécuter toutes les CLI dont vous avez besoin pour un projet spécifique : par exemple, exécuter un conteneur Docker ou afficher des journaux.

Mais vous pouvez également automatiser tout cela, et c'est où la vraie puissance de tmux — dans le contexte d'un environnement de développement — brille vraiment. À l'aide d'une autre CLI appelée tmuxpvous pouvez noter dans un fichier de configuration YAML les fenêtres, les volets et la commande que vous souhaitez. Ensuite, vous pouvez charger cette configuration et créer automatiquement votre session tmux personnalisée.

J'ai un de ces fichiers de configuration pour chacun de mes projets. Cela me fait gagner beaucoup de temps et d'énergie. Comme je le disais ci-dessus, c'est l'un des principaux avantages de l'utilisation du shell. Pourquoi ne pas utiliser Vim ?

Comme Arch Linux, Vim a la réputation d'être difficile à apprendre. C'est plus subtil : c'est assez facile d'être productif avec, mais c'est long à maîtriser. Si vous exécutez Linux et que Vim est installé, vous pouvez apprendre les bases en 20 minutes en exécutant vimtutor dans votre shell.

Vim offre de nombreuses fonctionnalités qui peuvent être étendues davantage avec d'innombrables plugins. De plus, vous pouvez interagir directement avec votre shell à l'aide de Vim, en utilisant la CLI de votre choix directement dans votre éditeur. Il transformera Vim en un IDE complet.

Vim a un autre gros avantage : vous pouvez l'utiliser pour développer dans de nombreux langages de programmation. Je n'aime pas basculer entre différents IDE chaque fois que j'ai besoin de programmer en PHP, Golang ou Clojure. L'interface est différente, je dois configurer chacun de ces éditeurs séparément, et je ne peux pas vraiment enregistrer les configurations quelque part pour les réutiliser lorsque je réinstalle ces outils.

Avec Vim, je peux coder dans n'importe quelle langue que je veux pendant que restant dans le même éditeur. Comme VS Code, vous pouvez utiliser des LSP (Language Server Providers) pour activer l'auto-complétion, le linting et la refactorisation automatique pour les langages de programmation les plus courants (et même les plus ésotériques).

Vim en action

Vim en action . ( Grand aperçu)

Vim est également rapide. Il ne nécessite pas beaucoup de ressources pour fonctionner. J'ai souvent 6 ou 7 instances de l'éditeur ouvertes en permanence sur mon ancien ordinateur – sans aucun problème. En comparaison, j'ai utilisé des IDE IntelliJ pendant des années et, lorsque j'en ouvrais deux, tout mon système commençait à ralentir. C'est vraiment pratique quand je travaille sur différents projets en même temps, comme un tas de microservices par exemple.

Devrais-je ajouter que Vim est hautement configurable ? Au lieu d'avoir de nombreuses fonctionnalités directement dans votre IDE (y compris certaines que vous n'utiliserez jamais), vous pouvez choisir ce dont vous avez exactement besoin et ignorer ce dont vous n'avez pas besoin.

Un ensemble de frappes cohérentes

Si Arch Linux est le fondement de mon environnement de développement sans souris, puis i3, Zsh, tmux et Vim sont les établis pour mes besoins créatifs. Cela me donne un niveau de confort que je n'ai jamais connu avec d'autres outils.

Mais vous vous demandez peut-être pourquoi vous devriez utiliser tous ces nouveaux outils et leurs frappes alors que vous pouvez déjà utiliser les raccourcis pour les outils que vous connaissez déjà ?[19659003]Eh bien, les raccourcis de la plupart des applications sont souvent dénués de sens. C'est une soupe de clés qui n'ont aucun rapport entre elles. En conséquence, ils sont difficiles à mémoriser et ils peuvent être très différents d'un outil à l'autre.

Les outils que je décris dans cet article sont censés s'adapter parfaitement les uns aux autres. Vous pouvez presque utiliser la même frappe pour chacun d'eux. Une seule clé différera, pour que le système sache sur quel outil vous voulez agir. Cela rend les différentes frappes plus faciles à mémoriser.

De plus, Vim a été conçu pour avoir des frappes qui ont du sens en créant un langage simple sur lequel vous pouvez compter. Par exemple, pour supprimer un mot, vous pouvez appuyer sur daw. Pour supprimer un paragraphe, c'est dap. Étant donné que de nombreuses CLI sont basées sur les frappes de Vim, l'apprentissage de Vim ouvrira la porte à de nombreuses autres CLI . -basé sur des systèmes, mais il vieillit lorsque vous devez le faire chaque fois que vous souhaitez installer votre système sur un nouvel ordinateur. C'est pourquoi J'ai créé mes propres scripts pour installer l'intégralité de mon environnement de développement sans souris. Ils installent Arch Linux ainsi que tous les outils que j'utilise avec leurs configurations. Lorsque j'ai besoin d'utiliser un nouvel ordinateur, je peux simplement exécuter ces scripts, et le tour est joué !

Êtes-vous prêt à devenir un développeur sans souris ?

En raison de la flexibilité dont je dispose avec mon environnement de développement, je peux également changer outils facilement. Par exemple, si je ne veux plus utiliser tmux, je peux le remplacer par un autre multiplexeur de terminal. Si je n'aime pas la barre d'état d'i3 ou mon lanceur d'applications, je peux aussi les remplacer. C'est pourquoi j'ai écrit un livre intitulé «  Construire votre environnement de développement sans souris  ». Il décrit en détail comment configurer tous les outils, comment créer des scripts pour installer l'ensemble du système avec une seule commande et comment tout personnaliser pour vos besoins personnels. Si vous ne connaissez pas grand-chose au shell Linux, il vous permet de créer un projet personnalisé pour vous familiariser avec.

Si vous êtes intéressé, vous trouverez un exemple du livre ici ainsi que toute sa table des matières.

Je pense que la meilleure façon de savoir si vous aimeriez ce genre de système est simplement de l'essayer. Je peux vous garantir une chose : vous apprendrez beaucoup en cours de route !

Autres lectures sur Smashing Magazine

Smashing Editorial" width="35" height="46" loading="lazy" decoding="async (vf, yk, il)




Source link