-
Notifications
You must be signed in to change notification settings - Fork 0
/
.tmux.conf
77 lines (65 loc) · 3.45 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
# Enable OSC 52 clipboard integration.
set -g set-clipboard on
# There are two important TERM values: the outer and the inner one [1,2]. To make
# 24-bit colour work, we need:
#
# 1. tmux to recognize that the outer term is capable of 24-bit colours. We can
# enforce this using terminal-overrides if the Tc bit isn't set on the outer
# terminal (for example: xterm-256color). In the ideal world, we'd be able
# to let tmux force this override whenever the $COLORTERM environment
# variable is set. Sadly the ",*:Tc" override doesn't seem to be respected.
# 2. Applications inside tmux need to recognize the inner terminal. The
# tmux-direct terminfo sets the Tc bit, unlike tmux-256color. Some
# applications also take an override via $COLORTERM (e.g.: Neovim).
#
# [1]: https://github.com/tmux/tmux/issues/696
# [2]: https://unix.stackexchange.com/a/568263
# [3]: https://github.com/tmux/tmux/issues/2370
set -g default-terminal "tmux-direct" # Inner terminal.
# Force RGB (24-bit) color capability if TERM=*-256color. This is imprecise
# because (e.g.) macOS terminal, iterm2 and hterm all claim to be xterm-256color
# by default. Yet, macOS terminal does not support 24-bit. Ideally, we'd base
# this decision on the presence of the $COLORTERM environment variable, which is
# properly set (or not set) for all relevant terminals. Use terminal-features
# instead of terminal-overrides (3.2+ only) [1].
#
# [1]: https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-rgb-colour
set -as terminal-features ",*-256color:RGB" # Outer terminal.
set -as terminal-features ",*-256color:usstyle" # Support undercurl.
set -g history-limit 300000
set -g set-titles on # set terminal title
set -g set-titles-string '#W ● #h'
# Start windows and panes at 1, not 0. Switching windows is <ctrl-b> + 1,2,3...
set -g base-index 1
set -wg pane-base-index 1
set -g display-panes-time 800 # slightly longer pane indicators display time
set -g display-time 1000 # slightly longer status messages display time
# 24 hour clock
setw -g clock-mode-style 24
# Neovim does things correctly, so it must suffer:
# https://github.com/neovim/neovim/issues/2035.
set -sg escape-time 10
# Mouse support so I can click to go to other windows.
set -g mouse on
# In recent tmux versions (I estimate 2.4+), there:
#
# - Is no more need to use reattach-to-user-namespace(1) when using iTerm2
# option "Applications in terminal may use clipboard". In 2.6+, not even that
# will be required anymore, as tmux will include that functionality natively.
# - Copying works cross application without setting up copy-pipe to
# pbcopy(1)/xsel(1). This requires the terminal to be able to write to the
# clipboard (see OSC 52 clipboard control). urxvt on Linux does *not* support
# this. Which means that urxvt still requires copy-pipe instead of
# copy-selection-*, or a Perl extension
# (example:
# https://github.com/parantapa/dotfiles/blob/master/urxvt-perl/52-osc). Also
# see
# https://github.com/tmux/tmux/wiki/FAQ#how-do-i-copy-a-selection-from-tmux-to-the-systems-clipboard.
# Setup 'v' to begin visual selection as in Vim, and 'y' to yank.
bind-key -Tcopy-mode-vi 'v' send -X begin-selection
bind-key -Tcopy-mode-vi 'y' send -X copy-selection-and-cancel
# Set new panes to open in current directory.
# bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
source-file ~/.tmux.gruvbox.theme