Last active
May 3, 2026 18:02
-
-
Save arielcr/acb596509a5502adc315a083c82ab3c7 to your computer and use it in GitHub Desktop.
MY TMUX.CONF
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ═══════════════════════════════════════════════════════════════ | |
| # 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