Last active
July 25, 2024 09:22
-
-
Save LuisPalacios/065f4f0491d472d65ef62f67f1f418a1 to your computer and use it in GitHub Desktop.
My .tmux.conf 2024
This file contains 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
# .tmux.conf LuisPa 2024 | |
# | |
# Referencias: | |
# - https://www.luispa.com/administraci%C3%B3n/2024/04/25/tmux.html | |
# - https://www.luispa.com/administraci%C3%B3n/2024/04/23/zsh.html | |
# | |
# LuisPa: -------------------------------------------------------------- START | |
# | |
# Pongo Ctrl+A como PREFIX_KEY y dejo Ctrl+B como backup. | |
unbind C-b | |
set-option -g prefix C-a | |
set-option -g prefix2 C-b | |
bind-key C-a send-prefix | |
## Opciones | |
# Uso screen-256color para $TERM | |
set -g default-terminal "screen-256color" | |
# Soporte de True color | |
set -ga terminal-overrides ",xterm-256color:Tc" | |
# History | |
set -g history-limit 100000 | |
# Las numeración de las sesiones empiezan con 1 | |
#set -g base-index 1 | |
set-option -g base-index 1 # window index will start with 1 | |
set-window-option -g pane-base-index 1 # pane index will start with 1 | |
set-option -g renumber-windows on | |
# No molestes (sin pitidos) | |
set -g bell-action any | |
# Bell | |
set-window-option -g window-status-bell-style bg=colour167,fg=colour235 # bg=red, fg=bg | |
# Mostrar los mensajes un poco más en patalla | |
set -g display-time 2000 | |
# Título | |
set -g set-titles on | |
set -g set-titles-string "#T" | |
# Redimensionar ventanas al cliente más pequeño | |
setw -g aggressive-resize on | |
# Gestión del ratón | |
setw -g mouse on | |
# Esto controla qué variables de entorno se actualizarán en las nuevas sesiones de Tmux. | |
# Se establece inicialmente para actualizar varias variables relacionadas con la visualización, | |
# pero luego se desactiva para evitar conflictos o problemas con sesiones ya existentes | |
set -g update-environment "DISPLAY SSH_CONNECTION SSH_TTY SSH_AUTH_SOCK XAUTHORITY" | |
set -g update-environment "" | |
# Esto define los caracteres que se consideran separadores de palabras dentro de Tmux, | |
# lo que puede afectar al comportamiento de la navegación y la selección de texto. | |
# Por defecto es: !"#$%&'()*+,-./:;<=>?@[\\]^`{|}~. Quito -./?%&_=+@~:. | |
set -g word-separators "!\"#$'()*,;<>?[\\]^`{|} " | |
## Asignaciones de teclas | |
# Recargar el fichero de configuración | |
bind-key r source-file ~/.tmux.conf \; display-message "recargado el fichero ~/.tmux.conf" | |
# Estas asignaciones de teclas controlan el comportamiento al crear nuevos paneles | |
# y ventanas dentro de Tmux, asegurando que se abran en el directorio actual. | |
bind '-' split-window -v -c "#{pane_current_path}" | |
bind '|' split-window -h -c "#{pane_current_path}" | |
bind c new-window -c "#{pane_current_path}" | |
## Portapapeles (Work in Progress...) | |
# Estas líneas definen cómo se maneja la selección y copia de texto dentro de Tmux, | |
# asegurando que se integre correctamente con el portapapeles del sistema. | |
#bind-key -T copy-mode MouseDragEnd1Pane \ | |
# send -X copy-pipe "sed -e 's/.*/❱/' -e 's/^ *//' | xsel --clipboard --input" \;\ | |
# send -X clear-selection \; display-message "Se salvó la selección en el portapapeles!" | |
#bind-key -T copy-mode M-w \ | |
# send -X copy-pipe "sed -e 's/.*/❱/g' -e 's/^ *//' | xsel --clipboard --input" \;\ | |
# display-message "Se salvó la selección en el portapapeles!" | |
#bind p paste-buffer -p # Pegar | |
# Configuro la tecla Enter para salir fácilmente del modo de copia en Tmux. | |
# Cuando estás en modo de copia (por ejemplo, después de presionar prefix + [ para ingresar al modo de copia), | |
# presionar Enter cancelará el modo de copia, lo que te permitirá volver al modo normal | |
#bind-key -T copy-mode Enter send -X cancel | |
# To navigating through output in quick way, enable vim navigation keys | |
#set-window-option -g mode-keys vi | |
setw -g mode-keys vi | |
# Vim Style in Copy-Mode "<prefix> [" | |
# Interacting with Paste Buffer | |
#bind-key Escape copy-mode | |
#bind-key -T copy-mode-vi 'v' send-keys -X begin-selection -N "start visual mode for selection" | |
#bind-key -T copy-mode-vi 'y' send-keys -X copy-selection-and-cancel -N "yank text into the buffer" | |
#bind-key C-b choose-buffer # view the buffer stack | |
#unbind-key p | |
#bind-key p paste-buffer # default "<prefix> ]" | |
# Alt+C: To copy from the current buffer to the sys clipboard . | |
#bind-key M-c run "tmux save-buffer - | xclip -i -sel clipboard" | |
# Alt+V: To paste text from sys clipboard into current buffer | |
#bind-key M-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"" | |
# Ctr+C: Make it even better -just one step to move from sys->buffer->editor vice versa | |
#bind-key -Tcopy-mode-vi C-c send -X copy-pipe "xclip -i -sel p -f | xclip -i -sel c" \; display-message "copied to system clipboard" | |
# Ctr+V: To paste text from sys clipboard into the view | |
#bind-key C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\";tmux paste-buffer" | |
# To take ASCII screenshots (tmux-resurrect uses C-s for saving, here binding to Alt-s ) . | |
# create the dir for storing screenshots | |
#bind-key M-s run "tmux capture-pane; tmux save-buffer ~/.mytmux/pane_screenshots/\"$(date +%FT%T)\".screenshots" | |
# Activar la sincronización de paneles, lo que permite replicar la entrada | |
# en todos los paneles de la ventana actual simultáneamente. PREFIX_KEY Ctrl+s | |
bind C-s setw synchronize-panes | |
# Anulo el menú de contexto con el ratón | |
unbind-key -n M-MouseDown3Pane | |
unbind-key -n MouseDown3Pane | |
unbind-key -n MouseDown3Status | |
unbind-key -n MouseDown3StatusLeft | |
# Kill panel y sesión | |
unbind-key x # unbind-key “x” de su opción por defecto "preguntar y luego cerrar" | |
bind-key x kill-pane # rebind-key a cerrar sin preguntar (PREFIX_KEY + x) | |
bind-key X kill-session # cuando la X es en mayúsculas cierra la sesión entera (PREFIX_KEY + Shift + x) | |
bind-key k choose-tree "kill-session -t '%%'" # Mostrar sesiones para poder matar una sesión concreta | |
# Paneles: Movimiento con las flechas | |
bind-key Up select-pane -U | |
bind-key Down select-pane -D | |
bind-key Left select-pane -L | |
bind-key Right select-pane -R | |
# Window: movimiento | |
bind-key L last-window | |
#bind-key -r C-h select-window -t :- # cycle through the windows for quick window selection | |
#bind-key -r C-l select-window -t :+ | |
# Creación y ubicación de los paneles | |
# https://gist.github.com/sdondley/b01cc5bb1169c8c83401e438a652b84e | |
# set-hook -g session-created '\ | |
# split-window -h -l 100 -t 1;\ | |
# split-window -v;\ | |
# selectp -t 1' | |
if-shell '[ "$(uname)" = "Darwin" ]' \ | |
'set-hook -g session-created "split-window -h -l 70 -t 1; split-window -v; selectp -t 1"' \ | |
'set-hook -g session-created "split-window -h -p 40 -t 1; split-window -v; selectp -t 1"' | |
## Mensajes de estado y ayuda | |
set -g message-style fg=colour16,bg=colour221,bold | |
## Divisores de paneles | |
set-window-option -g pane-border-style fg=colour248 #,bg=colour234 | |
set-window-option -g pane-active-border-style fg=colour118,bg="#380C2A" | |
set-window-option -g window-style fg=colour248,dim,bg="#280C2A" | |
# Panel desactivado (dimmed), más apagado que el activo | |
set-window-option -g window-active-style fg=colour255,bold,bg="#380C2A" | |
## Línea de estado | |
################### | |
# | |
# Condicionales {?xxx} man 1 tmux -> buscar por "Variable name Ta Alias Ta Replaced with" | |
# | |
# Estas configuraciones controlan el estilo y la longitud de la línea de estado de Tmux, | |
# incluidos aspectos como la longitud de la parte izquierda y derecha de la línea de estado, | |
# los estilos de los diferentes elementos y los bordes de las divisiones de paneles. | |
set -g status-left-length 52 | |
set -g status-right-length 451 | |
set -g status-style fg=white,bg=colour234 | |
set -g window-status-activity-style bold | |
# LADO IZDO | |
# Nombre sesión y highlight si está pulsado PREFIX_KEY | |
#set-option -g status-left "\ | |
#[fg=white,bg=black](@#[fg=green,bg=black]#h#[fg=white,bg=black]) \ | |
set-option -g status-left "#I:#W#F" # Pongo el default porque a veces lo siguiente no funciona | |
set-option -g status-left "\ | |
#[fg=colour235, bg=colour252]\ | |
#{?client_prefix,#[fg=colour237 bg=colour221],} ❐ #S \ | |
#[fg=colour252, bg=black]\ | |
#{?client_prefix,#[fg=colour221 bg=black],}" | |
# Formato y el estilo de los paneles no activos. | |
set -g window-status-format "\ | |
#[fg=black,bg=colour237]\ | |
#[fg=white,bg=colour237] \ | |
#I#{?pane_pipe,#[fg=red]●#[fg=white],} #W\ | |
#{?window_last_flag,-, }\ | |
#[fg=colour237,bg=black]" | |
# Formato y el estilo del separador entre paneles | |
set-window-option -g window-status-separator "" | |
# Formato y el estilo de los paneles activos. | |
set -g window-status-current-format "\ | |
#{?window_zoomed_flag, 🔍,}\ | |
#[fg=black, bg=colour39]\ | |
#[fg=colour235,bg=colour39,noreverse,bold] #I\ | |
#{?pane_pipe,#[fg=red]●#[fg=colour235],} \ | |
#[nobold]#[bold] #W \ | |
#{?#{==:#{window_index},#{session_windows}}, #[fg=colour39 bg=black nobold], #[fg=colour39 bg=black nobold]}" | |
# LADO DERECHO | |
# Configuración de la línea de estado según el OS en el que estemos. | |
if-shell '[[ "$(uname)" == "Darwin" ]]' \ | |
'set -g status-right "#[fg=colour4,bg=black,nobold]#[fg=white,bg=colour4](@#[fg=yellow,bg=colour4,bold]#h#[fg=white,bg=colour4])"' \ | |
'set -g status-right "#[fg=colour4,bg=black,nobold]#[fg=white,bg=colour4](@#[fg=green,bg=colour4,bold]#h#[fg=white,bg=colour4])"' | |
# Enable Activity Alerts | |
#set-option -g status-interval 60 # Update the status line every 60 seconds (15 is default) | |
#set-window-option -g monitor-activity on # highlights the window name in the status line | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment