-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtmux.conf
133 lines (108 loc) · 4.23 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
# Hugely inspired by https://github.com/mscoutermarsh/dotfiles
# and poorly modified by me.
# Bind escape to copy mode
unbind [
bind Escape copy-mode
# p = paste
unbind p
bind p paste-buffer
# no escape delay
set -sg escape-time 0
# remap prefix to Control + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Renumber windows after removing one
set -g renumber-windows on
# use 256 colors
set -g default-terminal "xterm-256color-italic"
set-option -ga terminal-overrides ",xterm-256color-italic:Tc"
if '[[ $TERM = 'xterm-kitty']]' 'set -g default-terminal "xterm-kitty"'
if '[[ $TERM = 'xterm-kitty']]' 'set-option -ga terminal-overrides ",xterm-kitty:Tc"'
set -g pane-border-style 'fg=brightblack,bg=black'
set -g pane-active-border-style 'fg=brightwhite,bg=black'
set -g status-style 'fg=brightblack,bg=black'
set -g message-style 'fg=cyan, bg=black'
set -g clock-mode-colour cyan
# -------------
# status line
# -------------
set -g status-justify left
set -g status-bg colour234
set -g status-fg white
# Simplify status bar display.
set -g status-right-length 150
set -g status-left-length 40
set -g status-left '[#S]'
set -g status-right '#(tmux-spotify-info) %d/%m %H:%M '
set -g status-interval 5
# -------------
# window status
# -------------
setw -g window-status-format "#[fg=black]#[bg=colour7] #I #[fg=black]#[bg=colour15] #W "
setw -g window-status-current-format "#[fg=colour8]#[bg=white] #I #[bg=colour69]#[fg=white] #W "
setw -g window-status-current-bg black
setw -g window-status-current-fg yellow
setw -g window-status-current-attr bold
setw -g window-status-bg black
setw -g window-status-fg blue
setw -g window-status-attr default
# Keep plenty of history for scrollback
set -g history-limit 50000
# mouse
set -g mouse on
# Act like vim in copy mode
set -g status-keys vi
setw -g mode-keys vi
bind-key -Tcopy-mode-vi 'v' send -X begin-selection
bind-key -Tcopy-mode-vi 'y' send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
# 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"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Secondary binding for C-l to retain redraw
bind C-l send-keys 'C-l'
# Easy rotating of panes
bind C-k swap-pane -U
# increase display time
set -g display-panes-time 1200
# Dismiss current pane to background window
bind b break-pane -d
bind-key j command-prompt -p "join pane from: " "join-pane -h -s '%%'"
# more intuitive keybindings for splitting
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Easy return to Vim from tmux runner zoom runner pane
bind C-p run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys ':VtrZoomRunnerPane' 'C-m') || tmux send-keys 'C-c' && tmux select-pane -l"
# Make C-j display a selectable list of sessions
bind C-j choose-tree
# Keep window names as I set them
setw -g automatic-rename off
# Reload tmux.conf with prefix-r
bind C-r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf"
# Provide access to the clipboard for pbpaste, pbcopy (details: http://goo.gl/DN82E)
set-window-option -g automatic-rename on
# Enable VI mode
set-window-option -g mode-keys vi
# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on
# bind resizing of panes to H,J,K,L (resizes by steps of 10 lines/columns)
# # Note, bindings are repeatable (within the default 500ms time limit) so that
# # you don't have to keep entering the prefix. (Prefix-H-H-H resizes by 15)
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
unbind -n C-Left
unbind -n C-Down
unbind -n C-Up
unbind -n C-Right
bind -n M-Left resize-pane -L 10
bind -n M-Right resize-pane -R 10
bind -n M-Down resize-pane -D 5
bind -n M-Up resize-pane -U 5