Last active
November 8, 2020 14:24
-
-
Save mclarkson/357dc3674f1ab896275b7ad54139e77e to your computer and use it in GitHub Desktop.
tmux config that looks similar to the default gnu screen
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
# https://github.com/seebi/tmux-colors-solarized/blob/master/tmuxcolors-256.conf | |
#set-option -g status-style bg=colour235,fg=colour136,default # bg=base02, fg=yellow | |
# zsh as default shell | |
set-option -g default-shell /bin/zsh | |
# set window split | |
bind-key v split-window -h | |
bind-key b split-window | |
# default window title colors | |
set-window-option -g window-status-style fg=colour237,bg=white # fg=base0 | |
# active window title colors | |
set-window-option -g window-status-current-style fg=colour255,bg=colour31 # fg=orange | |
# pane border | |
set-option -g pane-border-style fg=colour235 #fg=base02 | |
set-option -g pane-active-border-style fg=colour240 #fg=base01 | |
# message text | |
set-option -g message-style bg=colour235,fg=colour151 # bg=base02, fg=orange | |
# pane number display | |
set-option -g display-panes-active-colour colour33 #blue | |
set-option -g display-panes-colour colour166 #orange | |
# clock | |
set-window-option -g clock-mode-colour green #green | |
set -g status-bg white | |
set -g status-interval 1 | |
#set -g status-justify centre # center align window list | |
#set -g status-left-length 20 | |
set -g status-right-length 0 | |
#set -g status-left '#[fg=green]#H #[fg=black]• #[fg=green,bright]#(uname -r | cut -c 1-6)#[default]' | |
set -g status-left '#[fg=green,bg=blue]' | |
#set -g status-right '#[fg=green,bg=default,bright]#(tmux-mem-cpu-load) #[fg=red,dim,bg=default]#(uptime | cut -f 4-5 -d " " | cut -f 1 -d ",") #[fg=white,bg=default]%a %l:%M:%S %p#[default] #[fg=blue]%Y-%m-%d' | |
#set -g status-right '#[fg=blue]%Y-%m-%d' | |
set -g status-right '' | |
# C-b is not acceptable -- Vim uses it | |
set-option -g prefix C-a | |
bind-key C-a last-window | |
# Start numbering at 1 | |
set -g base-index 0 | |
# Allows for faster key repetition | |
set -s escape-time 0 | |
# Rather than constraining window size to the maximum size of any client | |
# connected to the *session*, constrain window size to the maximum size of any | |
# client connected to *that window*. Much more reasonable. | |
setw -g aggressive-resize on | |
# Allows us to use C-a a <command> to send commands to a TMUX session inside | |
# another TMUX session | |
bind-key a send-prefix | |
# Activity monitoring | |
setw -g monitor-activity on | |
set -g visual-activity off | |
# hjkl pane traversal | |
bind h select-pane -L | |
bind j select-pane -D | |
bind k select-pane -U | |
bind l select-pane -R | |
# set to main-horizontal, 66% height for main pane | |
bind m run-shell "~/.tmux/scripts/resize-adaptable.sh -l main-horizontal -p 66" | |
# Same thing for verical layouts | |
bind M run-shell "~/.tmux/scripts/resize-adaptable.sh -l main-vertical -p 50" | |
bind-key C command-prompt -p "Name of new window: " "new-window -n '%%'" | |
# reload config | |
bind r source-file ~/.tmux.conf \; display-message "Config reloaded..." | |
# auto window rename | |
set-window-option -g automatic-rename | |
# https://github.com/edkolev/dots/blob/master/tmux.conf | |
# Updates for tmux 1.9's current pane splitting paths. | |
# from powerline | |
run-shell "tmux set-environment -g TMUX_VERSION_MAJOR $(tmux -V | cut -d' ' -f2 | cut -d'.' -f1 | sed 's/[^0-9]*//g')" | |
run-shell "tmux set-environment -g TMUX_VERSION_MINOR $(tmux -V | cut -d' ' -f2 | cut -d'.' -f2 | sed 's/[^0-9]*//g')" | |
# Vi copypaste mode | |
set-window-option -g mode-keys vi | |
if-shell "test '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -ge 4 \)'" 'bind-key -Tcopy-mode-vi v send -X begin-selection; bind-key -Tcopy-mode-vi y send -X copy-selection-and-cancel' | |
if-shell '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -lt 4\) -o #{$TMUX_VERSION_MAJOR} -le 1' 'bind-key -t vi-copy v begin-selection; bind-key -t vi-copy y copy-selection' | |
# status bar | |
if-shell '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -lt 2\) -o #{$TMUX_VERSION_MAJOR} -le 1' 'set-option -g status-utf8 on' | |
# rm mouse mode fail | |
if-shell '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -ge 1\)' 'set -g mouse off' | |
if-shell '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -lt 1\) -o #{$TMUX_VERSION_MAJOR} -le 1' 'set -g mode-mouse off' | |
# fix pane_current_path on new window and splits | |
if-shell "test '#{$TMUX_VERSION_MAJOR} -gt 1 -o \( #{$TMUX_VERSION_MAJOR} -eq 1 -a #{$TMUX_VERSION_MINOR} -ge 8 \)'" 'unbind c; bind c new-window -c "#{pane_current_path}"' | |
if-shell "test '#{$TMUX_VERSION_MAJOR} -gt 1 -o \( #{$TMUX_VERSION_MAJOR} -eq 1 -a #{$TMUX_VERSION_MINOR} -ge 8 \)'" "unbind '\"'; bind '\"' split-window -v -c '#{pane_current_path}'" | |
if-shell "test '#{$TMUX_VERSION_MAJOR} -gt 1 -o \( #{$TMUX_VERSION_MAJOR} -eq 1 -a #{$TMUX_VERSION_MINOR} -ge 8 \)'" 'unbind v; bind v split-window -h -c "#{pane_current_path}"' | |
#if-shell "test '#{$TMUX_VERSION_MAJOR} -gt 1 -o \( #{$TMUX_VERSION_MAJOR} -eq 1 -a #{$TMUX_VERSION_MINOR} -ge 8 \)'" 'unbind %; bind % split-window -h -c "#{pane_current_path}"' | |
# Colors | |
# How to use true colors in vim under tmux? #1246 for 2.6 and higher | |
# https://github.com/tmux/tmux/issues/1246: | |
# set -g default-terminal "tmux-256color" | |
# set -ga terminal-overrides ",*256col*:Tc" | |
# 2.5 and lower: | |
# set -g default-terminal "screen-256color" | |
# Doesn't work on iterm2 / mac | |
# if-shell "test '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -ge 6 \)'" 'set -g default-terminal "tmux-256color"' | |
# if-shell "test '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -ge 6 \)'" 'set -ga terminal-overrides ",*256col*:Tc"' | |
# Try screen256-color (https://github.com/tmux/tmux/issues/622): | |
#if-shell "test '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -ge 6 \)'" 'set -g default-terminal "screen-256color"' | |
#if-shell "test '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -ge 6 \)'" 'set -ga terminal-overrides ",screen-256color:Tc"' | |
#if-shell '\( #{$TMUX_VERSION_MAJOR} -eq 2 -a #{$TMUX_VERSION_MINOR} -lt 6\) -o #{$TMUX_VERSION_MAJOR} -le 1' 'set -g default-terminal "screen-256color"' | |
set -g default-terminal "tmux-256color" | |
# Change xterm-256color to the value of TERM before tmux is started | |
set-option -sa terminal-overrides ',xterm-256color:RGB' | |
# For older tmux, use this INSTEAD: | |
#set-option -ga terminal-overrides ',xterm-256color:Tc' | |
bind-key C-x setw synchronize-panes | |
# Smart pane switching with awareness of Vim splits. | |
# See: https://github.com/christoomey/vim-tmux-navigator | |
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ | |
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" | |
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' | |
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' | |
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' | |
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' | |
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' | |
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ | |
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" | |
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ | |
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" | |
bind-key -T copy-mode-vi 'C-h' select-pane -L | |
bind-key -T copy-mode-vi 'C-j' select-pane -D | |
bind-key -T copy-mode-vi 'C-k' select-pane -U | |
bind-key -T copy-mode-vi 'C-l' select-pane -R | |
bind-key -T copy-mode-vi 'C-\' select-pane -l |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment