-
Notifications
You must be signed in to change notification settings - Fork 0
/
.tmux.conf
143 lines (109 loc) · 4.4 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
# Usage:
# - All prefixed with Ctrl-f
# - Last used window: /
# - Last used pane: ;
# - Vertical split: v
# - Horizontal split: s
# - Previous window: [
# - Next window: ]
# - Choose session: Ctrl-s
# - Quick window: Ctrl-q
################################################################################
# Config
################################################################################
# No delay on prefix
set -sg escape-time 0 # defatult 500
# Count windows and panes from 1
set -g base-index 1
setw -g pane-base-index 1
# vi keys
set-option -g status-keys vi
set-option -g mode-keys vi
# Mouse mode
set -g mouse on
# Auto renumber windows and maintain a gapless sequence for window numbers
set-option -g renumber-windows on
################################################################################
# Look
################################################################################
# Make status bar is default
# set status-bg default
# Fix colors
set -g default-terminal "xterm-256color" # NOTE: Not officially supported
# set -g default-terminal "screen-256color"
# set-option -g pane-active-border-fg red
# set-option -g pane-border-fg grey
# run-shell "powerline-daemon -q"
# source "/Users/Andrew/Library/Python/2.7/lib/python/site-packages/powerline/bindings/tmux/powerline.conf"
# Show wemux users
set -g status-right "#(wemux status_users)"
################################################################################
# Key Bindings
################################################################################
# Set prefix
# C-a, C-f, C-Space
unbind C-b
set -g prefix C-f
bind C-f send-prefix
# Smart pane switching with awareness of vim splits
# bind u run "display (tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|n?emacs-24.5?)(diff)?$'"
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|n?emacs-25.1?|n?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 '(^|\/)g?(view|n?emacs-25.1?|n?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 '(^|\/)g?(view|n?emacs-25.1?|n?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 '(^|\/)g?(view|n?emacs-25.1?|n?vim?)(diff)?$' && tmux send-keys C-l) || tmux select-pane -R"
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|n?emacs-25.1?|n?vim?)(diff)?$' && tmux send-keys 'C-\\') || tmux select-pane -l"
unbind /
bind / last-window
unbind %
bind s split-window -v -c "#{pane_current_path}"
unbind '"'
bind v split-window -h -c "#{pane_current_path}"
# Easier pane resizing
bind -r H resize-pane -L 2
bind -r J resize-pane -D 2
bind -r K resize-pane -U 2
bind -r L resize-pane -R 2
unbind {
bind { swap-pane -D
unbind }
bind } swap-pane -U
# Force reload of tmux config
unbind r
bind r source-file ~/.tmux.conf\; display "Reloaded"
# Copy mode and window navigation
bind Escape copy-mode
bind p paste-buffer
unbind [
bind [ previous-window
unbind ]
bind ] next-window
# Cycle through panes
unbind o
bind o select-pane -t :.-
bind -n C-o select-pane -t :.-
bind C-q command-prompt -I "htop" -p "Quick window command: " "new-window '%%'"
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
bind C-c run "tmux save-buffer - | pbcopy"
bind C-v run "tmux set-buffer \"$(pbpaste)\"; tmux paste-buffer"
# Session list/choose
bind c-s choose-tree
# Move windows around
bind -n C-S-Left swap-window -t -1
bind -n C-S-Right swap-window -t +1
# Show current wemux connected users
unbind u
bind u run-shell 'wemux display_users'
set-option -g default-shell /usr/local/bin/zsh
# # Copy-paste integration
# set-option -g default-command "reattach-to-user-namespace -l zsh"
# # 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"
# # 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 ']' to use pbpaste
# bind ] run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"