# vim: set ft=conf # Behave like screen unbind-key C-b set-option -g prefix C-a bind-key a send-prefix # Handle Window splitting a little more human-like. unbind % bind-key | split-window -h bind-key \ split-window -h bind-key - split-window -v # Helpers bind-key C-a last-window bind-key r source-file ~/.tmux.conf \; display-message 'source-file done' # Reload tmux configuration # Basic Options set-option -g base-index 1 set-option -g bell-action any set-option -g visual-bell off set-window-option -g xterm-keys on #setw -g xterm-keys on # Enable mouse setw -g mouse on # make scrolling with wheels work bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'" bind -n WheelDownPane select-pane -t= \; send-keys -M #set-window-option -g mode-mouse on #set-window-option -g mouse-select-pane on #set-window-option -g mouse-resize-pane on #set-window-option -g mouse-select-window on # Use zsh set-option -g default-shell /usr/bin/zsh #set-option -g default-command /usr/bin/zsh # Use 256 color set-option -g default-terminal 'screen-256color' #set-option -g default-terminal 'screen-256color-bce' # Monitor and highlight window with activity set-window-option -g monitor-activity on # Act like vim set -gs escape-time 0 set-option -g set-titles on set-window-option -g automatic-rename on #set-option -g allow-rename off set-window-option -g mode-keys vi #bind-key -r h select-pane -L #bind-key -r j select-pane -D #bind-key -r k select-pane -U #bind-key -r l select-pane -R #bind-key s split-window -v #bind-key v split-window -h #bind-key -r C-h select-window -t :- #bind-key -r C-l select-window -t :+ #bind-key -r > resize-pane -R 10 #bind-key -r < resize-pane -L 10 #bind-key -r + resize-pane -D 10 #bind-key -r - resize-pane -U 10 # displays * bind * list-clients # Helpful commands bind / command-prompt -p "man" "split-window -h 'exec man %%'" bind-key S command-prompt -p ssh: "new-window -n %1 'ssh %1'" # Open a ssh session in a new window with input host # Join pane into a new split in current window bind-key C-j command-prompt -p "join pane from:" "join-pane -h -s '%%'" bind-key C-s command-prompt -p "send pane to:" "join-pane -h -t '%%'" # Powerline #source ~/.local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf # # Override Powerline config #set -g status-interval 5 # move x clipboard into tmux paste buffer #bind C-p run "xclip -o | tmux load-buffer -" # move tmux copy buffer into x clipboard #bind C-y run "tmux save-buffer - | xclip -i -selection clipboard" #bind-key C-y run "tmux show-buffer | xsel -i -b" \; display-message "Copied tmux buffer to system clipboard" #bind-key C-p run "tmux set-buffer -- \"$(xsel -o -b)\"; tmux paste-buffer" \; display-message "Copied system clipboard to tmux" #disabled for tmux-yank plugin #bind -t vi-copy 'y' copy-selection #bind -t vi-copy 'y' copy-pipe "xclip" #bind -t vi-copy 'y' copy-pipe "xclip --clipboard" bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' bind-key -T copy-mode-vi Y send-keys -X copy-pipe-and-cancel 'tmux paste-buffer' bind-key -T copy-mode-vi M-y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard; tmux paste-buffer' bind-key -T copy-mode-vi ! send-keys -X copy-pipe-and-cancel "tr -d '\n' | xclip -in -selection clipboard" bind-key -T copy-mode-vi Home send-keys -X start-of-line bind-key -T copy-mode-vi End send-keys -X end-of-line #bind-key y run "tmux send-keys 'C-a'; tmux copy-mode; tmux send-keys 'v150j$be'; tr -d '\n' | xclip -in -selection clipboard; tmux send-keys 'C-e'; display_message 'Line copied to clipboard!'" bind Space next-window #bind -n M-NPage copy-mode ; send-keys NPage #bind -n M-PPage copy-mode ; send-keys PPage bind -n M-Right next-window bind -n M-Left previous-window # 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 -n C-PPage run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-PPage') || tmux select-pane -L" bind -n C-NPage run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-NPage') || tmux select-pane -D" #source /usr/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf #source /usr/share/tmux/powerline.conf # Powerline #source ~/.local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf # Override Powerline config #set -g status-interval 5 # Alternative to Powerline: set -g status on # No longer necessary ##set -g status-utf8 on #set -g status-interval 2 #set -g status-fg colour247 #set -g status-bg colour232 #set -g status-right '#[bg=colour233] #[fg=white,bg=colour234] %T #[fg=yellow,bg=colour233] #[bg=colour232]' #set -g status-left '#[fg=colour16,bg=colour237,bold] #S #[fg=colour254,bg=colour234,nobold]' #set -g window-status-format "#[fg=colour43,bg=colour234] #I #[fg=colour231,bold]#W #[fg=colour31,bg=colour234,nobold]" #set -g window-status-current-format "#[fg=colour117,bg=colour31] #I #[fg=colour231,bold]#W #[fg=colour31,bg=colour234,nobold]" #set -g window-status-separator ">" source $HOME/.tmux/tmuxline.conf # List of plugins set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-pain-control' set -g @plugin 'tmux-plugins/tmux-copycat' #set -g @plugin 'tmux-plugins/tmux-yank' #set -g @yank_selection 'primary' # Other examples: #set -g @plugin 'github_username/plugin_name' #set -g @plugin 'git@github.com/user/plugin' #set -g @plugin 'git@bitbucket.com/user/plugin' # ZSH Integrations bind h run-shell -b "$ZNT_REPO_DIR/doc/znt-tmux.zsh" # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) run '~/.tmux/plugins/tpm/tpm'