tmux/tmux.conf
Kenneth Benzie (Benie) a6b8580ef0 Support changing cursor shape in iTerm2
Use iTerm2 proprietary escape sequence for changing cursor shape per
pane. Apps like vim or zsh should emit VTE compatible escape sequences
for this to work.
2018-01-02 16:17:20 +00:00

104 lines
3.2 KiB
Bash

# Enable utf-8
set -g utf8 on
set -g status-utf8 on
# Use vim keybindings in copy mode
set -g mode-keys vi
# Change prefix to C-Space
unbind C-b
set -g prefix C-Space
bind Space send-prefix
# Address vim mode switching delay
set -s escape-time 0
# Increase scrollback buffer size
set -g history-limit 50000
# Set tmux messages display time to 4 seconds
set -g display-time 4000
# Refresh 'status-left' and 'status-right' more often
set -g status-interval 5
# Upgrade $TERM
set -g default-terminal "screen-256color"
# Focus events enabled for terminals that support them
set -g focus-events on
# TODO: Change this comment to something that explains the setting
# super useful when using "grouped sessions" and multi-monitor setup
setw -g aggressive-resize on
# Start window & pane index at 1
set -g pane-base-index 1
# Enable mouse support
set-option -g mouse on
# Enable changing cursor shape per pane in iTerm2 or VTE compatible terminals,
# vim or zsh should emit VTE compatible escape sequences to change cursor shape
if -b '[ -n $ITERM_PROFILE ]' \
"set -ga terminal-overrides '*:Ss=\E]1337;CursorShape=%p1%d\7'" \
"set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[2 q'"
# Set only on OS X where it's required
if -b '[ "`uname`" = "Darwin" ]' \
"set -g default-command 'reattach-to-user-namespace -l $SHELL'"
# Make new splits open in current directory
bind "\"" split-window -c "#{pane_current_path}"
bind "%" split-window -h -c "#{pane_current_path}"
# Integrate pane selection with vim
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Integrate urlview
bind-key u capture-pane \; split-window "tmux show-buffer | urlview -"
# Enter copy mode with C-U
bind-key C-u copy-mode -u
# Left status style
set-window-option -g status-left " #S"
set-window-option -g status-left-fg colour240
set-window-option -g status-left-bg colour233
# Centre status style
set-window-option -g status-fg colour240
set-window-option -g status-bg colour233
# Right status style
set-window-option -g status-right "%a %d-%m-%y %H:%M "
set-window-option -g status-right-fg white
set-window-option -g status-right-bg colour233
# Active window status style
set-window-option -g window-status-current-format " #I: #W"
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg colour233
# Inactive window status style
set-window-option -g window-status-format " #I: #W"
set-window-option -g window-status-fg colour240
set-window-option -g window-status-bg colour233
# Active pane border
set-option -g pane-active-border-fg colour235
set-option -g pane-active-border-bg colour235
# Inactive pane border
set-option -g pane-border-fg colour233
set-option -g pane-border-bg colour233
# Command line window list selection
set-window-option -g mode-style fg=colour233,bg=colour30
set-option -g message-style fg=colour233,bg=colour30