Last active
July 19, 2019 20:16
-
-
Save mmm/3879853 to your computer and use it in GitHub Desktop.
tmux config
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
# Our .tmux.conf file | |
# Setting the prefix from C-b to C-a | |
# START:prefix | |
set -g prefix C-a | |
set -g prefix2 C-b | |
# END:prefix | |
# Free the original Ctrl-b prefix keybinding | |
# START:unbind | |
unbind C-b | |
# END:unbind | |
#setting the delay between prefix and command | |
# START:delay | |
set -sg escape-time 0 | |
# END:delay | |
# Ensure that we can send Ctrl-A to other apps | |
# START:bind_prefix | |
bind C-a send-prefix | |
# END:bind_prefix | |
# Set the base index for windows to 1 instead of 0 | |
# START:index | |
set -g base-index 1 | |
# END:index | |
set -g history-limit 10000 | |
unbind A | |
bind A command-prompt "rename-window %%" | |
# Set the base index for panes to 1 instead of 0 | |
# START:panes_index | |
#setw -g pane-base-index 1 | |
# END:panes_index | |
# Reload the file with Prefix r | |
# START:reload | |
bind r source-file ~/.tmux.conf \; display "Reloaded!" | |
# END:reload | |
# splitting panes | |
# START:panesplit | |
bind | split-window -h | |
bind - split-window -v | |
# END:panesplit | |
# moving between panes | |
# START:paneselect | |
bind h select-pane -L | |
bind j select-pane -D | |
bind k select-pane -U | |
bind l select-pane -R | |
# END:paneselect | |
unbind Tab | |
bind Tab last-pane | |
unbind BTab | |
bind BTab last-pane | |
# Quick pane selection | |
# START:panetoggle | |
bind -r C-h select-window -t :- | |
bind -r C-l select-window -t :+ | |
# END:panetoggle | |
# Pane resizing | |
# START:paneresize | |
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 | |
# END:paneresize | |
# mouse support - set to on if you want to use the mouse | |
# START:mouse | |
setw -g mode-mouse off | |
set -g mouse-select-pane off | |
set -g mouse-resize-pane off | |
set -g mouse-select-window off | |
# not really sure what this does, but with it, the scrollwheel works inside Vim | |
set -g mouse-utf8 off | |
# END:mouse | |
# Set the default terminal mode to 256color mode | |
# START:termcolor | |
set -g default-terminal "screen-256color" | |
# | |
#attrcolor b ".I" | |
# Tell screen how to set colors. AB = background, AF=foreground | |
# termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' | |
# # Erase background with current bg color. Not needed if TERM=screen-256color | |
# defbce "on" | |
# | |
# END:termcolor | |
# enable activity alerts | |
#START:activity | |
setw -g monitor-activity on | |
#set -g visual-activity on | |
#END:activity | |
# set the status line's colors | |
# START:statuscolor | |
set -g status-fg white | |
set -g status-bg black | |
# END:statuscolor | |
# set the color of the window list | |
# START:windowstatuscolor | |
setw -g window-status-fg cyan | |
setw -g window-status-bg default | |
setw -g window-status-attr dim | |
#setw -g window-status-format "#[fg=normal]#I#F$ #W" | |
setw -g window-status-format "#[fg=normal]#I:#W#F " | |
# END:windowstatuscolor | |
# set colors for the active window | |
# START:activewindowstatuscolor | |
setw -g window-status-current-fg white | |
setw -g window-status-current-bg default | |
setw -g window-status-current-attr bright | |
setw -g window-status-current-format "#[fg=red](#[fg=white]#I:#W#F#[fg=red]) " | |
# END:activewindowstatuscolor | |
#setw -g window-status-alert-fg cyan | |
#setw -g window-status-alert-bg default | |
#setw -g window-status-alert-attr bright | |
setw -g window-status-bell-fg cyan | |
setw -g window-status-bell-bg black | |
setw -g window-status-bell-attr bright | |
setw -g window-status-content-fg cyan | |
setw -g window-status-content-bg black | |
setw -g window-status-content-attr bright | |
setw -g window-status-activity-fg cyan | |
setw -g window-status-activity-bg black | |
setw -g window-status-activity-attr bright | |
# pane colors | |
# START:panecolors | |
set -g pane-border-fg green | |
set -g pane-border-bg black | |
set -g pane-active-border-fg white | |
set -g pane-active-border-bg yellow | |
# END:panecolors | |
# Command / message line | |
# START:cmdlinecolors | |
set -g message-fg white | |
set -g message-bg black | |
set -g message-attr bright | |
# END:cmdlinecolors | |
# Status line left side | |
# START:statusleft | |
set -g status-left-length 40 | |
#set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P" | |
set -g status-left "#[fg=green][#S] #[fg=yellow]#I #[fg=cyan]#P" | |
# END:statusleft | |
#START:utf8 | |
set -g status-utf8 on | |
#END:utf8 | |
# Status line right side | |
# 15% | 28 Nov 18:15 | |
# START: statusright | |
#set -g status-right "#[fg=cyan]%d %b %R" | |
set -g status-right "#[fg=cyan]#(date -u +'%%F %%R')" | |
set -g status-right "#[fg=green][ #[fg=cyan]#(date -u +'%%F %%R') #[fg=green]]" | |
# END:statusright | |
# Update the status bar every sixty seconds | |
# START:updateinterval | |
set -g status-interval 60 | |
# END:updateinterval | |
# Center the window list | |
# START:centerwindowlist | |
set -g status-justify centre | |
# END:centerwindowlist | |
# enable vi keys. | |
# START:vikeys | |
setw -g mode-keys vi | |
# END:vikeys | |
# ok, now set up the zoom functionality.. | |
unbind O | |
bind O new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \; swap-pane -s tmux-zoom.0 \; select-window -t tmux-zoom | |
unbind o | |
bind o last-window \; swap-pane -s tmux-zoom.0 \; kill-window -t tmux-zoom | |
# or maybe just bind to a single key | |
#bind C-k run "if [[ $(tmux list-window) =~ ZOOM ]]; then tmux last-window; tmux swap-pane -s ZOOM.2; tmux kill-window -t ZOOM; else tmux new-window -d -n ZOOM; tmux swap-pane -s ZOOM.1; tmux select-window -t ZOOM;fi" | |
#mmm not sure if this is working or not | |
#smart pane switching with awareness of vim splits | |
#bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L" | |
#bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D" | |
#bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U" | |
#bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R" | |
#bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l" | |
bind C-s set-window-option synchronize-panes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment