Tmux : Installation et premières étapes. Ma configuration personnelle, Partie 1

Tmux : Installation et premières étapes. Ma configuration personnelle, Partie 1

Quand tu commences à travailler dans le développement de logiciels, il est courant de te concentrer sur l’apprentissage d’une nouvelle pile technologique. Cependant, peu de gens utilisent leurs compétences avec les outils.

L’un de ces outils qui m’aide chaque jour lorsque je travaille avec plusieurs répertoires et projets est Tmux.

Tmux est un multiplexeur de terminaux, ce qui signifie que tu peux avoir différentes sessions dans la même fenêtre. Dans Tmux, tu peux créer plusieurs panneaux dans la même fenêtre de terminal, chacun exécutant sa propre application ou processus. Cela facilite le travail sur plusieurs tâches en même temps sans avoir à changer d’onglets ou de fenêtres dans ton terminal. Tmux prend en charge les fenêtres et les sessions, te permettant de les déplacer et de les redimensionner, de créer de nouvelles fenêtres, d’y accéder et d’en sortir.

📦 Installer Tmux

macOS

Dans Mac, c’est facile d’installer Tmux. Tu auras besoin de Brew, et après, tu pourras l’installer.

Terminal window
brew install tmux

Linux y WSL

Selon la distribution de ta préférence, la façon d’installer Tmux sera différente. Voici quelques commandes pour les distros que j’ai utilisées ces dernières années.

Ces commandes sont les mêmes pour ta distribution de Linux favorite et WSL, tant qu’elles appartiennent à la même version que le système d’exploitation.

Terminal window
# Ubuntu
sudo apt install tmux
# Fedora
sudo dnf install tmux
# Arch Linux
sudo pacman -S tmux
Tmux session

👟 Des sessions, des fenêtres et des panneaux

Imagine que je veux travailler sur deux projets : Le projet Pomme de terre et le projet Tournesol.

On peut profiter des sessions pour en créer deux.

Pour chaque projet, on doit travailler sur le backend et le frontend. On peut utiliser une fenêtre pour chacun d’eux. Dans chaque fenêtre, il faut deux panneaux côte à côte pour exécuter npm run start et npm test en même temps.

Avant de commencer, le raccourci <Préfixe>

La clé préfixe est le raccourci principal pour Tmux. Par défaut, la combinaison des touches est Ctrl + b ou ^ + b sur Mac.

Pour le prochain tutoriel, utilise ce raccourci. Ou, si tu l’as déjà modifié, utilise le nouveau.

Les sessions

On veut travailler sur la configuration dans ce poste, mais en lire les commandes, on peut le imaginer comment ça fonctionne. J’utilise des nommes de session petits parce que si je veux m’attacher à quelqun après, c’est plus facile de l’écrire comme ça.

Terminal window
tmux new-session -s <name-of-your-session>
# Pour les derniers exemples
tmux new-session -d -s potato
tmux new-session -d -s sunflower
# Et ensuite, tu peux choisir quelle session tu veux rejoindre
tmux attach-session -t sunflower
# ou
tmux a -t sunflower
Tmux tabs

Maintenant, notre serveur Tmux a deux sessions en cours d’exécution. L’option -d est utilisée pour éviter d’être attaché à la session, donc on peut continuer à manipuler le terminal. Supprime-la si tu veux rejoindre la session.

Les fenêtres

Quand on est connecté à notre session, on rejoint la première fenêtre en même temps. Le titre de cette fenêtre est régulièrement le nom du shell que tu utilises. Dans ce cas, c’est zsh, mais dans ton cas, ça peut être bash ou autre.

Alors, rappelle-toi que nous sommes dans le projet tournesol. Nous devons créer une fenêtre pour le backend et d’autres pour le frontend.

Un raccourci pour se souvenir des fenêtres est de les comparer aux onglets du navigateur.

Renommer les fenêtres

# Dans la session du projet Tournesol, appuie sur le raccourci suivant
<Préfixe> + ,

Ensuite, tape le nouveau nom de la fenêtre : backend et <Enter>

Créer une nouvelle fenêtre

Terminal window
# Dans la session tournesol, appuie sur le raccourci suivant
<Préfixe> + c
# Quand tu es déplacé dans cette session, renomme-la à frontend
<Préfixe> + , # Ensuite tape frontend et appuie sur <Enter>
Tmux Window

Se déplacer entre les fenêtres

Maintenant, si tu veux de déplacer entre la fenêtre backend et frontend, tu peux utiliser.

# Se déplacer à la prochaine fenêtre
<Préfixe> + n # n pour next (anglais)
# Se déplacer à la fenêtre précédente
<Préfixe> + p # p pour previous (anglais)

Les panneaux

Un panneau est une division d’une fenêtre. Je pourrais dire que c’est la raison principal d’utiliser Tmux, comment un développeur NodeJS.

Maintenant, nous voulons créer deux panneaux pour exécuter npm start dans l’un et npm test dans l’autre. Tu peux créer un panneau horizontal pour cela.

<Préfixe> + " # Je n'ai aucune idée pourquoi

Mais si tu préfères une disposition verticale, utilise cette commande.

<Préfixe> + % # Peut-être car il est similaire à 0|0
Vertical split

Se déplacer entre les panneaux

Pour te déplacer entre les panneaux que nous avons créés, tu peux utiliser la clé <Préfixe> combinée avec les touches des flèches. Cela donne un total de quatre combinaisons : Haut, Gauche, Droite et Bas.

<Préfixe> + <la-direction-des-flèches>

📦 Ma configuration personnelle

Après un an d’utilisation de Tmux, j’ai essayé de trouver différentes façons d’améliorer ma productivité au travail. J’ai découvert quelques améliorations dont tu peux profiter.

Chacune de ces améliorations nécessite de créer un fichier nommé .tmux.conf dans ton répertoire racine. Cela s’applique à tous les systèmes d’exploitation, y compris Windows, mais si tu utilises WSL, c’est là que ça se passe.

Changer le préfixe

Je sais que pour presser Ctrl + b (ou l’équivalent sur Mac), ça peut être difficile, et les deux touches sont éloignées l’une de l’autre. Je l’ai remplacé par Ctrl + Espace car je peux appuyer sur les deux touches avec mon premier et dernier doigt de ma main gauche.

Pour effectuer ce changement, mets à jour ton fichier ~/.tmux.conf avec le contenu suivant. Nous allons désactiver Ctrl + b avant d’utiliser le nouveau préfixe.

tmux.conf
unbind C-b
set-option -g prefix C-Space
bind-key C-Space send-prefix

Une manière simple de recharger la configuration

Puisque on va apporter des modifications à ce fichier, on a besoin d’un moyen rapide de recharger la configuration. On va d’abord montrer la méthode originale, puis ce que j’ai.

La méthode originale

Tu peux utiliser <Préfixe> + : pour ouvrir le mode commande dans Tmux et écrire:

source-file ~/.tmux.conf # Et appuie sur <Enter> ensuite

Mon raccourci personnel

Dans ton fichier ~/.tmux.conf, ajoute la ligne suivante. Ensuite, si tu es déjà dans ta session Tmux, utilise la méthode originale pour recharger la configuration. Seulement une fois.

tmux.conf
bind-key r source-file ~/.tmux.conf \\; display-message "La configuration est rafraîchie"

Mettre à jour l’index de zéro à un

Peut-être que tu le sais, peut-être que non, mais il y a cette blague sur les développeurs qui utilisent 0 plutôt que 1 pour commencer à compter. Cependant, quand tu utilises Tmux, si tu veux te déplacer directement vers la première fenêtre, tu dois croiser les doigts sur ton clavier pour exécuter le raccourci. Heureusement, tu peux utiliser le numéro 1 comme index. De plus, si tu supprimes une fenêtre, par défaut Tmux laissera le numéro de fenêtre vide. Tu peux également le changer, ce que je recommande de faire.

Renuméroter une fenêtre si elle est supprimée

tmux.config
set -g renumber-windows on

Mettre l’index de base des fenêtres à 1, et pour les panneaux aussi

tmux.conf
set -g base-index 1
setw -g pane-base-index 1

Configuration pour un shell (l’interface système) différente

J’ai utilisé Zsh au lieu de Bash. Tu peux initialiser tes sessions de Tmux sur Zsh en faisant référence au répertoire du shell.

Tu peux exécuter which zsh avant pour connaître le répertoire de ton shell et le remplacer dans Tmux avec le script suivant. Pour moi, c’est /bin/zsh.

tmux.conf
set-option -g default-shell "/bin/zsh"

Naviguer entre les panneaux comme Vim

Et ceci est une autre étape additionnelle. Comme on l’a dit, tu peux te déplacer entre les panneaux en utilisant <Préfixe> + <Flèche> . Mais, si tu préfères avoir un raccourci de déplacement similaire à Vim, utilise <Préfixe> + <h | j | k | l> comme raccourcis de déplacement.

Comme tu peux le voir, en utilisant <Préfixe> après la première fois, on n’a pas besoin d’ajouter l’option -r, ce qui évite d’y appuyer.

tmux.conf
bind -r k select-pane -U
bind -r j select-pane -D
bind -r h select-pane -L
bind -r l select-pane -R

Redimensionner les panneaux depuis le clavier

De plus, si tu ne voulais pas utiliser le souris pour redimensionner les panneaux, utilise la version majuscule des mêmes lettres que tu utilises pour te déplacer en Vim. Aussi, utiliser l’option -r nous permet d’éviter l’usage du préfixe pour une durée limitée.

Le numéro 5, dans l’exemple suivant, représente la mesure de ce que tu redimensionnes. Tu peux l’augmenter et le diminuer selon tes besoins.

tmux.conf
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r U resize-pane -U 5
bind -r L resize-pane -R 5

Mes raccourcis personnels

Ajouter le support de true colors pour tes sessions Tmux.

Pour que ta session Tmux fonctionne avec les thèmes et les couleurs modernes que tu as probablement vus sur Reddit, il faut la modifier. Voici les instructions pour ajouter true colors à Tmux.

tmux.conf
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"

Utiliser la souris

Si tu veux utiliser la souris pour redimensionner tes panneaux ou faire un clic sur le nom d’une fenêtre, fais-le avec la ligne suivante.

tmux.conf
set -g mouse on

Appliquer le format à la barre de statut

Pour afficher la barre de statut et le numéro de fenêtre avec la commande exécutée, utilise le code suivant.

tmux.conf
set -g pane-border-format "#P: #{pane_current_command}"
set -g status on

Le mode Vi

Pour utiliser des raccourcis similaires à Vim pour copier et coller, active le mode Vi.

tmux.conf
setw -g mode-keys vi

Ouvrir un panneau dans le même répertoire que le panneau source

Pour ouvrir une division verticale ou horizontale dans le même répertoire où tu travailles, j’ai deux raccourcis personnels pour le faire. J’utilise la clé | pour créer un panneau vertical et - pour un horizontal. Aussi, je pense que c’est une meilleure combinaison que % et " .

tmux.conf
bind-key | split-window -h -c "#{pane_current_path}"
bind-key - split-window -v -c "#{pane_current_path}"

🛠️ Installer TPM et des plugins

Installer TPM

TPM est le Tmux Plugin Manager. Tout comme ton langage de programmation préféré, tu peux l’utiliser pour ajouter ou étendre les fonctionnalités de Tmux.

Pour l’installer, copie les lignes de code suivantes à la fin de ton ~/.tmux.conf. Assure-toi de rafraîchir la configuration ensuite.

tmux.conf
# Charger TPM lors de la prochaine recharge de configuration
set -g @plugin 'tmux-plugins/tpm'
# Si TPM n'est pas installé, l'installer
if "test ! -d ~/.tmux/plugins/tpm" \\
"run 'git clone <https://github.com/tmux-plugins/tpm> ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
# Initialiser TPM (placer cette ligne en dernier dans votre .tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Quelques plugins utiles

Dans certains cas, tu voudras étendre les fonctionnalités de Tmux. Voici ma liste préférée de plugins qui t’aideront avec cela.

Tmux sensible

Il fournit des raccourcis et des améliorations à la configuration qui vient par défaut. Selon moi, c’est la meilleure option comparée à celle par défaut.

Jetez un œil au dépôt original : https://github.com/tmux-plugins/tmux-sensible

Tmux resurrect

Pour gérer un espace de travail avec plusieurs fenêtres et panneaux que tu ne veux pas perdre lorsque tu redémarres ton ordinateur, Tmux a ce plugin qui permet de stocker l’organisation de tes sessions et de la restaurer ensuite avec des combinaisons sur le clavier.

Les raccourcis les plus importants pour se souvenir de ce plugin sont : Sauvegarder la session <Préfixe> + Ctrl + s et pour la restaurer <Préfixe> + Ctrl + r.

Plus d’information https://github.com/tmux-plugins/tmux-resurrect

Tmux yank

Il est possible d’utiliser Tmux avec la fonctionnalité de partage du presse-papiers dans le système d’exploitation. Fais attention, car tu pourrais avoir besoin de bibliothèques supplémentaires selon ton système. Ensuite, utilise <Préfixe> + y pour copier le contenu sélectionné dans le terminal et le coller où tu le souhaites.

Tu peux lire plus d’informations ici : https://github.com/tmux-plugins/tmux-yank

Vim Tmux Navigator

Si tu es un utilisateur de Vim, comme moi, tu voudras un flux simple pour te déplacer entre tes panneaux et divisions de Vim. Par défaut, ça ne va pas fonctionner comme tu veux. Heureusement, on a ce plugin qui doit être installé dans Vim et Tmux, et les deux se complémenteront parfaitement. Ça fonctionne aussi avec Nvim.

Tu peux suivre les instructions ici : https://github.com/christoomey/vim-tmux-navigator

Tous les plugins dans un même bloc de code

Voici la liste de tous les plugins, place-les après la ligne set -g @plugin 'tmux-plugins/tpm. Sauvegarde-le, recharge ta configuration, et ensuite appuie sur <Préfixe> + I pour les installer. Si tu veux les mettre à jour plus tard, utilise <Préfixe> + U.

tmux.conf
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'christoomey/vim-tmux-navigator'

Installer des thèmes

Comme autres outils de développement, tu peux modifier l’interface de Tmux avec des thèmes. Je vais montrer mon thème préféré. De plus, je vais laisser un lien à la fin de cet article où tu peux accéder à un grand nombre de thèmes.

Thème de Dracula

C’est un thème agréable à l’œil qui se complète dans les terminales claires et noires. Je l’ai testé dans les deux. La combinaison de gris noir avec du vert, du rose et de l’orange, fait contraster les sections où je vois mes ressources du système. Je l’ai également configuré pour afficher la charge de travail de mon CPU, GPU et de RAM. Il vient aussi avec le support pour Nerdfont, ce que j’utilise dans mon terminal.

Pour installer ce thème, suis les mêmes instructions que celles-ci:

tmux.conf
set -g @plugin 'dracula/tmux'

À propos de ma configuration personnalisée, voici comment j’ai configuré le thème de Dracula pour m’accommoder à mes besoins personnels. Copie et colle après la ligne où tu installes le plugin. Si tu veux des carrés au lieu des icônes, tu peux également les copier.

tmux.conf
set -g @dracula-plugins "cpu-usage gpu-usage ram-usage network-vpn"
set -g @dracula-show-flags true
set -g @dracula-show-left-icon " #S"
set -g @dracula-show-powerline false
set -g @dracula-border-contrast true
set -g @dracula-show-empty-plugins false
set -g @dracula-cpu-usage-label " CPU"
set -g @dracula-gpu-usage-label " GPU"
set -g @dracula-ram-usage-label " RAM"z`

Plus de thèmes

Tu peux trouver plus de thèmes dans ce dépôt de Tmux

Mes articles ne sont pas generés par l'IA, cependant ils pourrait y être corrigés. Le premier brouillon est ma création originale

Tags

Auteur

Écrit par Helmer Davila

Dans d'autres langues

And how I increased my productivity

Tmux: Setup and first steps. My personal development setup Part 1

Y cómo incrementé mi productividad

Tmux: Instalación y primeros pasos. My configuración personal para desarrollo Parte 1

Articles connexes

Une solution qui plaira aux utilisateurs

Tmux: Le préfixe Ctrl-Space ne fonctionne pas sur macOS