Je ne partage pas mes dotfile files sur github comme le font pas mal de dev. C’est long et pas forcément optimal. En plus c’est un risque si j’ai dans mes fichiers de données sensibles comme des mots de passes. Pour mes fichiers de configuration, j’utilise un gros playbook ansible qui va installer et configurer mon environnement. Alors je pourrais le mettre lui mais idem, je suis pas sur qu’il n’y ai aucun mot de passe ou données sensible dans je préfère le garder pour l’instant.

Néanmoins, j’ai récement modifié ma configuration tmux et du coup je me dis pourquoi pas en faire part à la foule de développeurs passionnés qui lisent tous les journées mes articles (si si j’en suis sûr).

Les détails principaux

Ajout d’un raccourcis plus simple

Par défaut le préfix de tmux est Ctrl+B mais sur un clavier français c’est pas super efficace, Ctrl+X est plus efficace

# prefix is CTRL-B and CTRL-X
set -g prefix C-b
set -g prefix2 C-x

# enable CTRL-B and CTRL-X under other programs (like vim) - you'll have to press twice le combination to have the old one
bind C-b send-prefix
bind C-x send-prefix

Et on fait en sort que dans un éditeur text on puisse quand même accéder au préfixe en le doublant

Passage en 256 couleurs

Par défaut on a que 16 couleur

# Set 256-colour terminal (default is 16)
set -g default-terminal "screen-256color"

Augmentation de l’historique

# Number of lines held in window history
set -g history-limit 100000

Index de fenêtre

On règle l’index des fenêtres pour le faire commencer à 1, c’est plus simple sur le clavier quand les fenêtres sont dans le bon ordre et que la première est pas a l’autre bout.

# number windows starting from 1 - handy for direct access
set -g base-index 1

Raccourcis de changement de fenêtre

On réajuste les raccourcis pour changer de fenêtre facilement. C’est plus ou moins personnel mais je trouve ça plus intuitif.

# tab like window switching
bind -n S-down new-window -c '#{pane_current_path}'
bind -n S-left prev
bind -n S-right next
bind -n C-S-left swap-window -t -1
bind -n C-S-right swap-window -t +1

Commande de split panel

C’est l’une des plus importantes modification. On change les raccourcis pour découper les panneux, _ et | c’est carrément plus intuitif non ?

bind | split-window -h -c '#{pane_current_path}' # Split panes horizontal
bind _ split-window -v -c '#{pane_current_path}' # Split panes vertical

Presse papier

Par défaut la copie de teste dans tmux reste dans tmux. C’est a dire que ça tmux utilise son propre tampon et que ce qui est copié dans tmux ne peut être collé dans une autre application. Voilà comment configurer tmux pour qu’il écrive dans le tampon système.

# Configure tmux buffer to clipbard
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe 'xclip -in -selection clipboard'

Ca utilise xclip donc pour que ça fonctionne, ce dernier doit être installé, sinon ça ne fonctionnera pas.

Le thème

The last but not the least ! C’est bète mais c’est très important, par défaut le thème de tmux pique un peu les yeux. En cherchant j’ai trouvé le thème Nord qui est plutôt sympa et propre.

Je l’ai un peu customizé par contre parce que j’avais un soucis avec les flèches gauche de powerline.

run-shell "~/.tmux/themes/nord/nord.tmux"

Le fichier complet

# prefix is CTRL-B and CTRL-X
set -g prefix C-b
set -g prefix2 C-x
set-window-option -g xterm-keys on

# enable CTRL-B and CTRL-X under other programs (like vim) - you'll have to press twice le combination to have the old one
bind C-b send-prefix
bind C-x send-prefix

# Set 256-colour terminal (default is 16)
set -g default-terminal "screen-256color"

# Number of lines held in window history
set -g history-limit 100000

# Set status bar
#set -g status-right "#(hostname) #[bold]%d-%m-%Y#[nobold] %H:%M "
#set -g status-fg white
#set -g status-bg colour238
#setw -g window-status-current-style bg=blue

# number windows starting from 1 - handy for direct access
set -g base-index 1

# Set window notifications
setw -g monitor-activity on

# Automatically set window title
setw -g automatic-rename on

# tab like window switching
bind -n S-down new-window -c '#{pane_current_path}'
bind -n S-left prev
bind -n S-right next
bind -n C-S-left swap-window -t -1
bind -n C-S-right swap-window -t +1

# Enhanced next/previous window: ability to press multiple times n/p
bind -r n next-window
bind -r p previous-window

# Synchronize all the panes
bind a setw synchronize-panes

bind | split-window -h -c '#{pane_current_path}' # Split panes horizontal
bind _ split-window -v -c '#{pane_current_path}' # Split panes vertical

# Configure tmux buffer to clipbard
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe 'xclip -in -selection clipboard'

run-shell "~/.tmux/themes/nord/nord.tmux"