Skip to content

Instantly share code, notes, and snippets.

@terrywang
Last active May 19, 2025 10:56
Show Gist options
  • Save terrywang/3950393 to your computer and use it in GitHub Desktop.
Save terrywang/3950393 to your computer and use it in GitHub Desktop.
~/.tmux.conf
# /home/terrywang/.tmux.conf
# Based on tmux book written by Brian P. Hogan
# c-a o to switch to another panel
# c-d to close shell
# c-a ! to close panel
# c-a w to list windows
# c-a " split pane horizontally
# c-a % split pane vertically
# Hierarchy
# Server
# ㄴ Session
# ㄴ Window
# ㄴ Pane
# Options
# - Session options (set-option [-g]) set
# - Window options (set-window-option [-g]) setw
# Free the original Ctrl-b prefix keybinding
unbind c-b
# Setting the prefix from c-b to c-a
set -g prefix c-a
# prefix c
bind-key c new-window -c "#{pane_current_path}"
# Setting the delay between prefix and command
set -s escape-time 1
# Ensure that we can send Ctrl-a to other apps
bind c-a send-prefix
# readline beginning-of-line behaviour Ctrl-a a
bind a send-prefix
# history buffer - max number of lines for each window
set -g history-limit 102400
# tmux history file loaded on start and written on exit
# set -g history-file ~/.tmux_history
# Set Terminal Emulator Titles - OFF by default
# set -g set-titles on
# Set the base index for windows to 1 instead of 0
set -g base-index 1
# Set the base index for panes to 1 instead of 0
setw -g pane-base-index 1
# Renumber windows when a window is closed
set -g renumber-windows on
# Don't rename windows automatically
# use prefix ,
set -g allow-rename off
# Repeat time limit (ms)
set -g repeat-time 500
# Switch to last window
unbind l
bind-key c-a last-window
# unbind o
# bind-key c-a select-pane
# Reload the file with Prefix r
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# Clear scrollback buffer
# bind-key c-l send-keys c-l \; clear-history
# Splitting panes replace % and "
# bind | split-window -h
# bind - split-window -v
# prefix |
# bind-key | split-window -h -c "#{pane_current_path}"
# prefix -
# bind-key - split-window -c "#{pane_current_path}"
# moving between panes
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Quick pane selection
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
# Pane resizing
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# Synchronize panes
bind-key * set-window-option synchronize-pane
# Mouse support
# setw -g mode-mouse on
# set -g mouse-select-pane off
# set -g mouse-resize-pane off
# set -g mouse-select-window off
# incompatible since tmux 2.1
set -g mouse on
# Set the default terminal mode to 256color mode
# set -g default-terminal "screen-256color"
# nova-tmux
set -g default-terminal "xterm-256color"
# Add trucolor support (tmux info | grep Tc)
set -ga terminal-overrides ",xterm-256color:Tc"
set -g pane-border-style 'bg=black,fg=#1E272C'
set -g pane-active-border-style 'bg=black,fg=#1E272C'
set -g status-style 'bg=#1E272C,fg=#6A7D89'
set -wg mode-style 'bg=cyan,fg=black'
set -g message-style 'bg=black,fg=cyan'
set -g clock-mode-colour cyan
# Enable activity alerts
setw -g monitor-activity on
set -g visual-activity on
# tmux coloring
# Set the status line's colors
set -g status-style fg=white,bg=black
# Set the color of the window list
set-window-option -g window-status-style fg=cyan,bg=default,dim
# Set colors for the active window
set-window-option -g window-status-current-style bg='#1E272C',fg=cyan,fg=white,bg=red,bright
# Pane colors
set-option -g pane-border-style fg=green,bg=black
set-option -g pane-active-border-style fg=white,bg=yellow
# Command / message line
set-option -g message-style fg=white,bg=black,bright
# Status line left side
set-option -g status-left-length 40
set-option -g status-left "#[fg=green]Session: #S #[fg=yellow]W#I #[fg=cyan]P#P"
# No longer necessary since tmux 2.1
# set-option -g status-utf8 on
# Status line right side
# 15% | 25 Oct 14:50
# set -g status-right "#[fg=cyan]%d %b %R #[fg=magenta]#H | #[fg=red]CPU:#{cpu_percentage} |#[fg=blue] MEM:#{ram}"
# set -g status-right "#S #[fg=green,bg=black]#(tmux-mem-cpu-load --colors --interval 2)#[default]"
set -g status-right "#[fg=cyan]%d %b %R #[fg=magenta]#H"
# Update the status bar every sixty seconds
set -g status-interval 60
# Center the window list
set -g status-justify centre
# Enable vi keys
setw -g mode-keys vi
# -------------------------------------------------------------------
# Be dragons!
# -------------------------------------------------------------------
# Backslash bind-key
if-shell "test $USER = jg" \
"unbind C-a; set-option -g prefix \\ ; bind-key ] send-prefix; bind-key p paste-buffer; bind-key \\ last-window"
# Bind-key switch
bind-key F9 set-option -g prefix C-a \;\
bind-key a send-prefix \;\
bind-key p previous-window \;\
bind-key C-a last-window
bind-key F10 set-option -g prefix "\\" \;\
bind-key ] send-prefix \;\
bind-key p paste-buffer \;\
bind-key "\\" last-window
# TPM
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'pwittchen/tmux-plugin-ram'
set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @plugin 'tmux-plugins/tmux-sidebr'
set -g @plugin 'tmux-plugins/tmux-fpp'
# set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'laktak/extrakto'
set -g @plugin 'Morantron/tmux-fingers'
set -g @plugin 'christoomey/vim-tmux-navigator'
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin '[email protected]/user/plugin'
# set -g @plugin '[email protected]/user/plugin'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
# set -g @plugin 'junegunn/tmux-fzf-url'
run '~/.tmux/plugins/tpm/tpm'
# oh my tmux
# https://github.com/gpakosz/.tmux
@g-i-o-r-g-i-o
Copy link

g-i-o-r-g-i-o commented May 25, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment