Last active
March 14, 2016 16:37
-
-
Save code4rain/374c53829bea88cbe328 to your computer and use it in GitHub Desktop.
My tmux configuration
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
# use UTF8 | |
set -g utf8 | |
set-window-option -g utf8 on | |
# make tmux display things in 256 colors | |
# set -g default-terminal "screen-256color" | |
set -g default-terminal "xterm" | |
set-window-option -g xterm-keys on | |
# set scrollback history to 10000 (10k) | |
set -g history-limit 10000 | |
# set Ctrl-a as the default prefix key combination | |
# and unbind C-b to free it up | |
set -g prefix C-j | |
unbind C-b | |
unbind C-a | |
# use send-prefix to pass C-a through to application | |
bind C-j send-prefix | |
# shorten command delay | |
set -sg escape-time 1 | |
# set window and pane index to 1 (0 by default) | |
set-option -g base-index 1 | |
setw -g pane-base-index 1 | |
# reload ~/.tmux.conf using PREFIX r | |
bind r source-file ~/.tmux.conf \; display "Reloaded!" | |
# use PREFIX | to split window horizontally and PREFIX - to split vertically | |
bind | split-window -h | |
bind \ split-window -h | |
bind - split-window -v | |
# Make the current window the first window | |
bind T swap-window -t 1 | |
# map Vi movement keys as pane movement keys | |
# bind h select-pane -L | |
# bind j select-pane -D | |
# bind k select-pane -U | |
# bind l select-pane -R | |
bind w select-pane -l #select last pane | |
bind-key -n M-W last-pane | |
# and use C-h and C-l to cycle thru panes | |
bind -r C-h select-window -t :- | |
bind -r C-l select-window -t :+ | |
# resize panes using PREFIX H, J, K, L | |
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 | |
# explicitly disable mouse control | |
set -g mode-mouse on | |
set -g mouse-resize-pane on | |
set -g mouse-select-pane on | |
set -g mouse-select-window on | |
set-option -g mouse on | |
set-option -g mouse-utf8 on | |
# --------------------- | |
# Copy & Paste | |
# --------------------- | |
# provide access to the clipboard for pbpaste, pbcopy | |
# set-option -g default-command "reattach-to-user-namespace -l zsh" | |
# set-option -g default-command "bash" | |
set-option -g default-command "zsh" | |
set-window-option -g automatic-rename on | |
# use vim keybindings in copy mode | |
setw -g mode-keys vi | |
# setup 'v' to begin selection as in Vim | |
bind-key -t vi-copy v begin-selection | |
#bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy" | |
bind-key -t vi-copy y copy-pipe "xclip -selection clipboard -i" | |
# update default binding of 'Enter' to also use copy-pipe | |
unbind -t vi-copy Enter | |
# bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy" | |
bind-key -t vi-copy Enter copy-pipe "xclip -selection clipboard -i" | |
# bind y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy ' | |
# bind C-y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy ' | |
bind y run "tmux show-buffer | xclip -i -selection clipboard" | |
bind C-y run "tmux show-buffer | xclip -i -selection clipboard" | |
# ---------------------- | |
# set some pretty colors | |
# ---------------------- | |
# set pane colors - hilight the active pane | |
# set-option -g pane-border-fg colour235 #base02 | |
# set-option -g pane-active-border-fg colour240 #base01 | |
# colorize messages in the command line | |
# set-option -g message-bg black #base02 | |
# set-option -g message-fg brightred #orange | |
# ---------------------- | |
# Status Bar | |
# ----------------------- | |
set-option -g status on # turn the status bar on | |
set -g status-utf8 on # set utf-8 for the status bar | |
set -g status-interval 5 # set update frequencey (default 15 seconds) | |
set -g status-justify centre # center window list for clarity | |
set-option -g status-position top # position the status bar at top of screen | |
# visual notification of activity in other windows | |
setw -g monitor-activity on | |
set -g visual-activity on | |
# set color for status bar | |
#set-option -g status-bg colour235 #base02 | |
# set-option -g status-bg default | |
# set-option -g status-fg yellow #yellow | |
# set-option -g status-fg white | |
# set-option -g status-attr dim | |
# set window list colors - red for active and cyan for inactive | |
#set-window-option -g window-status-fg white | |
#set-window-option -g window-status-bg colour236 | |
#set-window-option -g window-status-attr bright | |
#set-window-option -g window-status-current-fg black | |
#set-window-option -g window-status-current-bg yellow | |
#set-window-option -g window-status-current-attr bright | |
# show host name and IP address on right side of status bar | |
set -g status-right-length 70 | |
set -g status-right "#[fg=green]#h@#[fg=yellow]#(ifconfig eth0 | grep 'inet ' | awk '{print $2}')" | |
# show session name, window & pane number, date and time on right side of | |
# status bar | |
set -g status-left-length 60 | |
set -g status-left "#[fg=green]::%l:%M %p#[fg=yellow]::%Y-%m-%d::#[fg=blue]#S #[fg=colour255]Tab#[fg=yellow]#I#[fg=colour255]:Pane#[fg=yellow]#P" | |
#### COLOUR (Solarized 256) | |
# default statusbar colors | |
set-option -g status-bg colour235 #base02 | |
set-option -g status-fg colour136 #yellow | |
set-option -g status-attr bright | |
# default window title colors | |
set-window-option -g window-status-fg colour244 #base0 | |
set-window-option -g window-status-bg default | |
set-window-option -g window-status-attr dim | |
# active window title colors | |
set-window-option -g window-status-current-fg yellow | |
set-window-option -g window-status-current-bg default | |
set-window-option -g window-status-current-attr bright | |
# set-window-option -g window-status-current-format "#[fg=colour235, bg=colour166]#[fg=colour255, bg=colour166]#I:#W #[fg=colour166, bg=colour235]" | |
# set-window-option -g window-status-format "#[fg=colour235, bg=colour244]#[fg=colour255, bg=colour244]#I:#W#F#[fg=colour244, bg=colour235]" | |
# pane border | |
set-option -g pane-border-fg colour235 #base02 | |
set-option -g pane-active-border-fg colour240 #base01 | |
# message text | |
set-option -g message-bg colour235 #base02 | |
set-option -g message-fg colour166 #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 colour64 #green | |
# Smart pane switching with awareness of vim splits | |
# bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-h) || tmux select-pane -L" | |
# bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-j) || tmux select-pane -D" | |
# bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-k) || tmux select-pane -U" | |
# bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-l) || tmux select-pane -R" | |
# bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys 'C-\\') || tmux select-pane -l" | |
# key binding for ALT+num | |
# switch windows alt+number | |
bind-key -n M-1 select-window -t 1 | |
bind-key -n M-2 select-window -t 2 | |
bind-key -n M-3 select-window -t 3 | |
bind-key -n M-4 select-window -t 4 | |
bind-key -n M-5 select-window -t 5 | |
bind-key -n M-6 select-window -t 6 | |
bind-key -n M-7 select-window -t 7 | |
bind-key -n M-8 select-window -t 8 | |
bind-key -n M-9 select-window -t 9 | |
bind-key -n M-q display-panes | |
bind C-k rotate-window | |
bind k rotate-window | |
bind C-j last-pane | |
bind j last-pane | |
# List of plugins | |
set -g @plugin 'tmux-plugins/tpm' | |
set -g @plugin 'tmux-plugins/tmux-sensible' | |
set -g @plugin 'tmux-plugins/tmux-yank' | |
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) | |
run '~/.tmux/plugins/tpm/tpm' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment