Skip to content

Instantly share code, notes, and snippets.

@arielcr
Last active May 3, 2026 18:02
Show Gist options
  • Select an option

  • Save arielcr/acb596509a5502adc315a083c82ab3c7 to your computer and use it in GitHub Desktop.

Select an option

Save arielcr/acb596509a5502adc315a083c82ab3c7 to your computer and use it in GitHub Desktop.
MY TMUX.CONF
# ═══════════════════════════════════════════════════════════════
# TERMINAL Y PROTOCOLO
# ═══════════════════════════════════════════════════════════════
# tmux-256color es la recomendación oficial (cursivas, undercurl, etc.)
# set -g default-terminal "tmux-256color"
# set -ag terminal-overrides ",xterm-256color:RGB"
# Extended keys (Shift+Enter, etc) — necesario para Claude Code en Kitty
set -s extended-keys on
set -as terminal-features 'tmux-256color:extkeys'
# Passthrough para notificaciones de Claude Code y otras apps
set -g allow-passthrough on
# Eventos de focus para nvim (:autoread, FocusGained/FocusLost)
set -g focus-events on
# Clipboard vía OSC52 (funciona también por SSH)
set -g set-clipboard on
# Scrollback grande
set -g history-limit 50000
# Si cerrás la última window de una sesión, te lleva a otra en vez de detach
set -g detach-on-destroy off
# tmux 3.5+ tiene extended-keys on por default, lo cual rompe
# bracketed paste con Claude Code. Lo desactivamos explícitamente.
set -s extended-keys off
# ═══════════════════════════════════════════════════════════════
# PREFIX Y RECARGA
# ═══════════════════════════════════════════════════════════════
unbind C-b
set -g prefix C-a
bind C-a send-prefix
unbind r
bind r source-file ~/.tmux.conf \; display-message "Config recargada ✓"
# ═══════════════════════════════════════════════════════════════
# WINDOWS Y PANES
# ═══════════════════════════════════════════════════════════════
# Numeración desde 1 + renumerar al cerrar windows
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows on
# Splits y nuevas windows abren en el directorio actual del panel
unbind '"'
unbind %
bind \\ split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
bind x kill-pane
# Resize panes (vim-style, repetible con -r)
bind -r H resize-pane -L 3
bind -r J resize-pane -D 3
bind -r K resize-pane -U 3
bind -r L resize-pane -R 3
# Navegar paneles con Ctrl+Shift+flecha (sin prefijo)
bind -n C-S-Left select-pane -L
bind -n C-S-Right select-pane -R
bind -n C-S-Up select-pane -U
bind -n C-S-Down select-pane -D
# Cambiar de window con Shift+flecha (sin prefijo)
bind -n S-Left previous-window
bind -n S-Right next-window
# Zoom con prefijo (antes era C-z global, lo cual rompía SIGTSTP)
bind z resize-pane -Z
# Shift+Enter manda CSI u nativo (para Claude Code y similares)
# bind -n S-Enter send-keys Escape "[13;2u"
# ═══════════════════════════════════════════════════════════════
# MOUSE
# ═══════════════════════════════════════════════════════════════
set -g mouse on
# ═══════════════════════════════════════════════════════════════
# COPY MODE (vi)
# ═══════════════════════════════════════════════════════════════
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
# ═══════════════════════════════════════════════════════════════
# THEME (tmux-power)
# ═══════════════════════════════════════════════════════════════
set -g @tmux_power_theme 'snow'
set -g @tmux_power_show_host false
set -g @tmux_power_show_user false
set -g status-position bottom
# ═══════════════════════════════════════════════════════════════
# PLUGINS
# ═══════════════════════════════════════════════════════════════
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'sainnhe/tmux-fzf'
set -g @plugin 'wfxr/tmux-power'
# Resurrect: capturar contenido visible + procesos a restaurar
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-processes 'ssh psql mysql sqlite3 nvim "~claude" "~lazygit" "~npm run *"'
# Si usás sesiones de nvim, descomentá para que las restaure:
# set -g @resurrect-strategy-nvim 'session'
# Continuum: autosave cada 15min y restaurar al arrancar tmux
set -g @continuum-save-interval '15'
set -g @continuum-restore 'on'
# tmux-fzf: launcher con prefix+f, switchers con prefix+s y prefix+W
set-environment -g TMUX_FZF_LAUNCH_KEY "f"
bind s run-shell -b "~/.tmux/plugins/tmux-fzf/scripts/session.sh switch"
bind W run-shell -b "~/.tmux/plugins/tmux-fzf/scripts/window.sh switch"
# ═══════════════════════════════════════════════════════════════
# INICIALIZAR TPM (siempre la última línea)
# ═══════════════════════════════════════════════════════════════
run '~/.tmux/plugins/tpm/tpm'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment