add tmux config
This commit is contained in:
parent
5e96ea0563
commit
6b18c0f9b7
156
.tmux.conf
Normal file
156
.tmux.conf
Normal file
@ -0,0 +1,156 @@
|
||||
# =============================
|
||||
|
||||
run-shell "tmux setenv -g TMUX_VERSION $(tmux -V | sed 's/[^0-9.]//g')"
|
||||
run-shell "tmux setenv -g TMUX_VERSION_29 $(awk 'BEGIN {print (\"'$(tmux -V | sed 's/[^0-9.]//g')'\" >= 2.9)}')"
|
||||
|
||||
# -----------------------------
|
||||
# Global settings
|
||||
# -----------------------------
|
||||
set -g default-terminal xterm-256color
|
||||
set-option -ga terminal-overrides ",*256col*:Tc"
|
||||
|
||||
# scrollback buffer n lines
|
||||
set -g history-limit 10000
|
||||
|
||||
# listen for activity on all windows
|
||||
set -g bell-action any
|
||||
|
||||
# start window indexing at 1 window so the <prefix> 1 is easier to reach
|
||||
set -g base-index 1
|
||||
|
||||
# tell tmux to use 256 colour terminal
|
||||
set -g default-terminal "screen-256color"
|
||||
|
||||
# xterm-style function key sequences
|
||||
setw -g xterm-keys on
|
||||
|
||||
# control automatic window renaming
|
||||
setw -g automatic-rename off
|
||||
|
||||
# enable wm window titles
|
||||
set -g set-titles on
|
||||
|
||||
# remove <esc> key press delay
|
||||
set -sg escape-time 0
|
||||
|
||||
# -----------------------------
|
||||
# Key bindings
|
||||
# -----------------------------
|
||||
unbind-key C-v
|
||||
|
||||
# Create window
|
||||
bind-key C-n new-window
|
||||
# use C-n to create new windows because C-c is to interrupt
|
||||
|
||||
# split windows (create pane)
|
||||
bind-key _ split-window -v -c '#{pane_current_path}'
|
||||
bind-key | split-window -h -c '#{pane_current_path}'
|
||||
|
||||
# kill current pane when the inner process is unable to exit for whatever reason
|
||||
# bind-key q confirm-before kill-pane
|
||||
|
||||
# <prefix> or Ctrl- or <prefix> Ctrl-
|
||||
# k --- previous pane
|
||||
# h l --- previous window / next window
|
||||
# j --- next pane
|
||||
|
||||
# navigate windows
|
||||
unbind-key l
|
||||
bind-key h select-window -t :-
|
||||
bind-key C-h select-window -t :-
|
||||
bind-key -n C-h select-window -t :-
|
||||
bind-key l select-window -t :+
|
||||
bind-key C-l select-window -t :+
|
||||
bind-key -n C-l select-window -t :+
|
||||
|
||||
# navigate panes
|
||||
bind-key j select-pane -t :.-
|
||||
bind-key C-j select-pane -t :.-
|
||||
bind-key -n C-j select-pane -t :.-
|
||||
bind-key k select-pane -t :.+
|
||||
bind-key C-k select-pane -t :.+
|
||||
bind-key -n C-k select-pane -t :.+
|
||||
|
||||
# Copy-mode (vi-mode)
|
||||
#
|
||||
|
||||
# vi-style controls for copy mode
|
||||
setw -g mode-keys vi
|
||||
|
||||
# C-v (the original '[' is still availible) to enter vi-mode
|
||||
bind-key [ copy-mode
|
||||
|
||||
# select and copy like vi in vi-mode
|
||||
bind-key -T copy-mode-vi v send -X begin-selection
|
||||
bind-key -T copy-mode-vi y send -X copy-selection
|
||||
# if encounter incompatible with send-keys/send -X, use lagacy setting:
|
||||
# bind-key -t vi-copy 'v' begin-selection
|
||||
# bind-key -t vi-copy 'y' copy-selection
|
||||
|
||||
# enable navigation in vi mode
|
||||
bind-key -T copy-mode-vi C-h select-window -t :-
|
||||
bind-key -T copy-mode-vi C-l select-window -t :+
|
||||
bind-key -T copy-mode-vi C-j select-pane -t :.-
|
||||
bind-key -T copy-mode-vi C-k select-pane -t :.+
|
||||
|
||||
# reload settings
|
||||
bind-key R source-file ~/.tmux.conf
|
||||
|
||||
# -----------------------------
|
||||
# Statusbar settings
|
||||
# -----------------------------
|
||||
|
||||
# use vi-style key bindings in the status line
|
||||
set -g status-keys vi
|
||||
|
||||
# amount of time for which status line messages and other indicators
|
||||
# are displayed. time is in milliseconds.
|
||||
set -g display-time 2000
|
||||
|
||||
# default statusbar colors
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
|
||||
"set -g status-fg white \
|
||||
set -g status-bg default \
|
||||
set -g status-attr default"
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
|
||||
"set -g status-style fg=white,bg=default"
|
||||
|
||||
# default window title colors
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
|
||||
"setw -g window-status-fg white \
|
||||
setw -g window-status-bg default \
|
||||
setw -g window-status-attr dim"
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
|
||||
"set -g window-status-style fg=white,bg=default,dim"
|
||||
|
||||
# active window title colors
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
|
||||
"setw -g window-status-current-fg cyan \
|
||||
setw -g window-status-current-bg default \
|
||||
setw -g window-status-current-attr bright \
|
||||
setw -g window-status-current-attr underscore"
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
|
||||
"set -g window-status-current-style fg=cyan,bg=default,bright,underscore"
|
||||
|
||||
# command/message line colors
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 0 ]' \
|
||||
"set -g message-fg white \
|
||||
set -g message-bg black \
|
||||
set -g message-attr bright"
|
||||
if-shell -b '[ "$TMUX_VERSION_29" = 1 ]' \
|
||||
"set -g message-style fg=white,bg=black,bright"
|
||||
|
||||
# what to be displayed on the right status
|
||||
set -g status-interval 1
|
||||
set -g status-right ' } %Y-%m-%d %H:%M:%S'
|
||||
set -g status-right-length 60
|
||||
|
||||
# what to be displayed on the left status
|
||||
set -g status-left-length 30
|
||||
set-option -g status-left "#[fg=green]#(echo $USER)#[default].#[fg=blue]#h#[default] { "
|
||||
|
||||
# -----------------------------
|
||||
# Platform fix
|
||||
# -----------------------------
|
||||
|
||||
if-shell "hash reattach-to-user-namespace 2> /dev/null" 'set-option -g default-command "reattach-to-user-namespace bash"'
|
Loading…
Reference in New Issue
Block a user