-
Notifications
You must be signed in to change notification settings - Fork 0
/
.tmux.conf
155 lines (122 loc) · 5.9 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
# Ctrl-s prefix key. Default => C-b. Send C-s with repeat option via C-s C-s
unbind-key C-b
# Add truecolor support
set-option -ga terminal-overrides ",xterm-256color:Tc"
# Default terminal is 256 colors
set -g default-terminal "screen-256color"
#set -g prefix C-a
#bind -r C-a send-prefix
set -g prefix C-s
bind -r C-s send-prefix
set -g default-command "zsh"
# set -g base-index 1
set -g renumber-windows on
set -g display-panes-time 350
# Keep plenty of history for scrollback
set -g history-limit 10000
# Use emacs / readline key-bindings at the tmux command prompt `<prefix>:`
set -g status-keys emacs
# address vim mode switching delay (http://superuser.com/a/252717/65504)
set -s escape-time 0
set -g mouse off
# Use vim keybindings in copy mode
setw -g mode-keys vi
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "pbcopy"
unbind -T copy-mode-vi Space
bind -T copy-mode-vi Space send -X jump-again
bind-key -T copy-mode-vi 0 send -X back-to-indentation
bind y run 'tmux save-buffer - | pbcopy '
bind C-y run 'tmux save-buffer - | pbcopy '
bind P paste-buffer
# Default to incremental search in copy-mode
bind-key -T copy-mode-vi / command-prompt -i -p "search down" "send -X search-forward-incremental \"%%%\""
bind-key -T copy-mode-vi ? command-prompt -i -p "search up" "send -X search-backward-incremental "%%%""
bind-key / copy-mode\; command-prompt -i -p "search up" "send -X search-backward-incremental "%%%""
bind-key s split-window -v "capture-pane -t 1 -p | sed '/^$/d' | tr ' ' '\n' | awk 'length>10' | sort |uniq | fzf --reverse | pbcopy"
# Simplify status bar display.
set -g status-left-length 40
set -g status-fg black
# set -g status-bg green
set -g status-left '[#S] '
set -g status-right "#{?pane_synchronized,--SYNCED--,} #(is-online) #(battery -t -g black) #(date '+%a, %b %d - %I:%M') "
# Dismiss current pane to background window
bind b break-pane -d
bind C-b send-keys 'tat && exit' 'C-m'
bind-key ! run-shell '(tmux switch-client -l || tmux switch-client -n) && tmux kill-session -t "#S" || tmux kill-session'
#bind-key J command-prompt -p "join pane from: " "join-pane -h -s '%%'"
bind c new-window -c "#{pane_current_path}"
bind C-d split-window -h -c ~/programming/dotfiles/ "vim +Files"
#bind g run-shell "github ."
bind r split-window -h -c ~/ "rcup"
#bind w split-window -h -c ~/wiki "vim +Files"
bind o run-shell "open #{pane_current_path}"
# bind t split-window -h -c "#{pane_current_path}" "source ~/.zsh/configs/navigation.zsh && itree | less -R"
bind-key t send-keys -t 2 "tree -C .git/objects -I 'info|pack'" 'C-m'
bind C-t split-window -v "source ~/.zsh/configs/navigation.zsh && tm-select-session"
# Make C-j display a selectable list of sessions
bind C-j choose-tree
# bind C-j split-window -v "tmux list-sessions -F '#{session_activity}:#{session_name}' | sort -nr | cut -d ':' -f 2 | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
#bind-key O split-window -v "grep \"^$(tail -n +2 ~/.bookmarks.csv | cut -f 1 -d ',' | fzf --reverse)\" ~/.bookmarks.csv | cut -f 2 -d ',' | xargs open"
# Quick session switching back and forth. I never use the built in layouts
# (default mapping for Space), so I reclaimed the key for this
bind-key Space switch-client -l
# more intuitive keybindings for splitting
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
bind-key -T copy-mode-vi 'C-\' select-pane -l
# Secondary binding for C-l to retain redraw
bind C-l send-keys 'C-l'
# Reload tmux.conf with prefix-r
bind C-r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf"
# bind resizing of panes to H,J,K,L (resizes by steps of 10 lines/columns)
# bind -n C-H resize-pane -L 5
# bind -n C-L resize-pane -R 5
# bind -n C-J resize-pane -D 2
# bind -n C-K resize-pane -U 2
bind -r h resize-pane -L 5
bind -r l resize-pane -R 5
bind -r j resize-pane -D 2
bind -r k resize-pane -U 2
#bind -n S-Left resize-pane -L 2
#bind -n S-Right resize-pane -R 2
#bind -n S-Down resize-pane -D 1
#bind -n S-Up resize-pane -U 1
#bind -n C-Left resize-pane -L 10
#bind -n C-Right resize-pane -R 10
#bind -n C-Down resize-pane -D 5
#bind -n C-Up resize-pane -U 5
# List of plugins
#set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'jimeh/tmux-themepack'
# set -g @themepack 'powerline/default'
# set -g @themepack 'powerline/double/blue'
set -g @themepack 'powerline/block/blue'
# set -g @themepack 'powerline/block/cyan'
# set -g status-style "bg=colour234"
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin '[email protected]/user/plugin'
# set -g @plugin '[email protected]/user/plugin'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm'