Skip to content

Instantly share code, notes, and snippets.

@rhovelz
Created December 6, 2019 19:40
Show Gist options
  • Save rhovelz/b81a826db248b552ef71a75d9c6daea9 to your computer and use it in GitHub Desktop.
Save rhovelz/b81a826db248b552ef71a75d9c6daea9 to your computer and use it in GitHub Desktop.
#############################
########## Bindings
#############################
# Set the prefix to `ctrl + a` instead of `ctrl + b`
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on
# Use | and - to split a window vertically and horizontally instead of " and % respoectively
bind h split-window -h -c "#{pane_current_path}"
bind v split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Open ~/.tmux.conf in vim and reload settings on quit
unbind e
bind e new-window -n '~/.tmux.conf' "sh -c 'nvim ~/.tmux.conf && tmux source ~/.tmux.conf'"
# Bind D to resize the window to be 8 lines smaller
bind D resize-pane -D 8
# Switch betewen panes using alt + arrow
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Use shift + arrow key to move between windows in a session
bind -n S-Left previous-window
bind -n S-Right next-window
# Use r to quickly reload tmux settings
unbind r
bind r \
source-file ~/.tmux.conf \;\
display 'RELOADED'
# Mouse mode
set -g mouse on
# Use a to toggle synchronize panes
bind a set-window-option synchronize-panes
# prefix + / to search
bind-key / copy-mode \; send-key ?
# prefix + h to clear screen and history buffer
bind y \
send-keys "C-c; clear && tmux clear-history" \;\
send-keys "Enter" \;\
display 'Screen cleared'
# Setup 'v' to begin selection, just like Vim
bind-key -T copy-mode-vi 'v' send -X begin-selection
# Setup 'y' to yank (copy), just like Vim
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi 'V' send -X select-line
bind-key -T copy-mode-vi 'r' send -X rectangle-toggle
#############################
########## Settings
#############################
# Refresh status line every 5 seconds - Good for when music is playing / update time etc
set -g status-interval 5
# Start window and pane indices at 1.
set -g base-index 1
set -g pane-base-index 1
# length of tmux status line
set -g status-left-length 30
set -g status-right-length 150
# Make active pane border red
set -g pane-active-border-style fg=colour1
#Set the left and right status
set -g status-left '#[bg=colour0]#[fg=colour5]#{?client_prefix,#[bg=colour14],} #S #[bg=colour0]#[fg=colour0]#{?client_prefix,#[fg=colour1],}#{?window_zoomed_flag, 🔍 ,}#[fg=colour11]@corshine_ #(~/dotfiles/tmux_scripts/battery.♥sh) '
set -g status-right '#[fg=colour1]#[bg=colour1] #[fg=colour5]#(~/dotfiles/tmux_scripts/uptime.sh) #[fg=colour5]#[fg=colour14]#[bg=colour14]#[fg=colour14] #(~/dotfiles/tmux_scripts/music.sh) #[bg=colour14]#[fg=colour14]#[bg=colour14]#[fg=colour0] %b %d %H:%M '
# Set the background color
set -g status-bg colour0
# customize how windows are displayed in the status line
set -g window-status-current-format "#[fg=colour]#[bg=colour5]#[fg=colour5]#[bg=colour0] #I* #[fg=colour5] #W #[fg=colour5]#[bg=colour0]"
set -g window-status-format "#[fg=colour5]#[bg=colour0]#I-#[fg=colour11]  #W"
# Set the history limit so we get lots of scrollback.
#setw -g history-limit 500000
#############################
############# Tmux Vars
#############################
# $(echo $USER) - shows the current username
# %a --> Day of week (Mon)
# %A --> Day of week Expanded (Monday)
# %b --> Month (Jan)
# %d --> Day (31)
# %Y --> Year (2017)
# %D --> Month/Day/Year (12/31/2017)
# %v --> Day-Month-Year (31-Dec-2017)
# %r --> Hour:Min:Sec AM/PM (12:30:27 PM)
# %T --> 24 Hour:Min:Sec (16:30:27)
# %X --> Hour:Min:Sec (12:30:27)
# %R --> 24 Hour:Min (16:30)
# %H --> 24 Hour (16)
# %l --> Hour (12)
# %M --> Mins (30)
# %S --> Seconds (09)
# %p --> AM/PM (AM)
# For a more complete list view: https://linux.die.net/man/3/strftime
#colour0 (black)
#colour1 (red)
#colour2 (green)
#colour3 (yellow)
#colour4 (blue)
#colour7 (white)
#colour5 colour6 colour7 colour8 colour9 colour10 colour11 colour12 colour13 colour14 colour15 colour16 colour17
#D ()
#F ()
#H (hostname)
#I (window index)
#P ()
#S (session index)
#T (pane title)
#W (currnet task like vim if editing a file in vim or zsh if running zsh)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment