-
Notifications
You must be signed in to change notification settings - Fork 0
/
.tmux.conf
156 lines (124 loc) · 5.82 KB
/
.tmux.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# ^^ Crazy hack to be able to run conf file as an inline script for some fancy
# scripting action, shamelessly borrowed from:
# https://github.com/gpakosz/.tmux/blob/master/.tmux.conf
#
# Text icons at http://www.amp-what.com/
# Binding to reload config file, useful for tweaking tmux
bind R source ~/.tmux.conf \; display-message "Tmux configuration reloaded..."
# Force UT8 on no matter the locale (for iTerm2 vs. remot SSH weiedness on Mac)
set -g default-terminal "tmux-256color"
# Use <Alt>+a as command prefix
#set -g prefix M-a
# Keep all sessions
set-option -g destroy-unattached off
# Number from 1 for easier key bindings
set -g base-index 1
setw -g pane-base-index 1
# Don't listen for extended escape sequences
set -s escape-time 0
# Visual alert to activity in other pane
set -g visual-activity on
setw -g monitor-activity on
# Auto-scroll mode in xterms
set -g xterm-keys on
set -g history-limit 100000
set -g mouse on
# Allow naming panes by term codes
setw -g automatic-rename on
set -g set-titles on
# Renumber panes on closeures
set -g renumber-windows on
# Let different clients have different sizes
setw -g aggressive-resize on
# For nested tmux'es
bind a send-prefix
# Shortcut for window switching
# prefix + Alt + key
bind M-a last-window
bind -n M-p previous-window
bind -n M-n next-window
# Bindings for Juice SSH (set to send WeeChat next/previous)
bind -n F7 previous-window
bind -n F8 next-window
bind -n F9 new-window -c "#{pane_current_path}"
bind -n F12 send-prefix
#bind -n F11 run "tmux split-window -p 40 'zsh -ci fs'"
# Shortcut for session related actions
unbind c
bind c command-prompt "new-session -A -s '%1'"
bind r command-prompt "rename-session %1"
# Switch to a new cloned session linked to the current one
#unbind M-c
#bind M-c run "cut -c3- ~/.tmux.conf | sh -s clone #S"
# Shortcut for new window using PWD of focused window
unbind n
bind n new-window -c "#{pane_current_path}"
# Send keys to all panes in paralles
bind e setw synchronize-panes on
bind E setw synchronize-panes off
# What do you think this is, emacs?
setw -g mode-keys vi
unbind [
unbind ]
bind Escape copy-mode
# Clipboard integration stuff (Linux only ATM)
#bind -t vi-copy v begin-selection
#bind -t vi-copy V rectangle-toggle
#bind -t vi-copy y copy-pipe "xclip -selection clipboard -in"
#bind -t vi-copy Y copy-selection
unbind p
bind p run "tmux set-buffer \"$(xclip -selection clipboard -out)\" ; tmux paste-buffer"
bind P paste-buffer
# Shortcuts for pane management
bind v split-window -h -c "#{pane_current_path}"
bind V split-window -v -c "#{pane_current_path}"
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r H resize-pane -L 5
bind -r L resize-pane -R 5
bind -r h select-pane -L
bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R
# Smart pane switching with awareness of vim splits ala http://robots.thoughtbot.com/seamlessly-navigate-vim-and-tmux-splits
# original concept from Mislav Marohnić, https://gist.github.com/mislav/5189704
bind -n M-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys M-h) || tmux select-pane -L"
bind -n M-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys M-j) || tmux select-pane -D"
bind -n M-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys M-k) || tmux select-pane -U"
bind -n M-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys M-l) || tmux select-pane -R"
bind -n M-\\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'M-\\') || tmux select-pane -l"
bind -n M-o select-pane -t :.+
# Toggle mouse mode on or off
#bind m set -g mouse on \; display 'Mouse: ON'
#bind M set -g mouse off \; display 'Mouse: OFF'
bind M set -g mouse
# Status bar settings adapted from powerline
set -g status on
set -g status-interval 10
set -g status-fg colour231
set -g status-bg colour234
set -g status-left-length 120
set -g status-left '#{?client_prefix,#[fg=colour254]#[bg=colour31]#[bold],#[fg=colour16]#[bg=colour254]#[bold]} #S#{?window_zoomed_flag,⭕, }#{?client_prefix,#[fg=colour31]#[bg=colour234]#[nobold],#[fg=colour254]#[bg=colour234]#[nobold]}'
set -g status-right '#[fg=#696969,bg=default]#[fg=colour231,bg=#696969,bold] %a #[nobold]%-d %b #[bold]CW#[nobold] %-V.%-u ⚡ #(cut -d " " -f 1-1 /proc/loadavg) #[fg=colour31,bg=#696969,nobold]#[fg=colour231,bg=colour31,nobold] %H:%M #[fg=colour252,bg=colour31,nobold]#[fg=colour16,bg=colour252,bold] 🖳 #h '
set -g status-right-length 150
set -g window-status-format "#[fg=colour244,bg=colour234] #I #[fg=colour240] #[default]#W "
set -g window-status-current-format "#[fg=colour234,bg=colour31]#[fg=colour117,bg=colour31] #I #[fg=colour231,bold]#W #[fg=colour31,bg=colour234,nobold]"
# Mark the last window
#set -g window-status-last-style fg=colour31,bold
# Fix activity color reversed by default. Set to default to fix
set -g window-status-activity-style default
# Hack Terminfo to force 24 bit color support flags for some terminals
set -ga terminal-overrides ",xterm-termite:Tc,rxvt-unicode-256color:Tc"
# Use FZF for finding windows, sessions, and for pasting file names (from PWD or /)
#bind-key w run "tmux split-window -p 40 'zsh -ci ftpane'"
#bind-key s run "tmux split-window -p 40 'zsh -ci fs'"
#bind-key 'f' run "tmux split-window -p 40 'tmux send-keys -t #{pane_id} \"$(locate $PWD| fzf -m | paste -sd\\ -)\"'"
#bind-key 'M-f' run "tmux split-window -p 40 'tmux send-keys -t #{pane_id} \"$(locate / | fzf -m | paste -sd\\ -)\"'"
# Pane border. binded [b] for border toggle
set -g pane-border-format "[#T]"
bind b set pane-border-status
# tmux command bar style
set -g message-style bg=colour31,fg=colour231
# pane border style
set -g pane-border-style fg=colour231,bg=default
set -g pane-active-border-style fg=colour31,bg=default