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.
104 lines
3.2 KiB
Bash
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
|