Skip to content

Instantly share code, notes, and snippets.

@slaykovsky
Created August 22, 2018 09:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save slaykovsky/f4ab4629ee09d731d35007c7c64efed7 to your computer and use it in GitHub Desktop.
Save slaykovsky/f4ab4629ee09d731d35007c7c64efed7 to your computer and use it in GitHub Desktop.
# Ring the bell if any background window rang a bell
set -g bell-action any
# Default termtype. If the rcfile sets $TERM, that overrides this value.
set -g default-terminal screen-256color
# Keep your finger on ctrl, or don't
bind-key ^D detach-client
# Create splits and vertical splits
bind-key v split-window -h -p 50 -c "#{pane_current_path}"
bind-key ^V split-window -h -p 50 -c "#{pane_current_path}"
bind-key s split-window -p 50 -c "#{pane_current_path}"
bind-key ^S split-window -p 50 -c "#{pane_current_path}"
# Pane resize in all four directions using vi bindings.
# Can use these raw but I map them to shift-ctrl-<h,j,k,l> in iTerm.
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# Smart pane switching with awareness of vim splits.
# Source: https://github.com/christoomey/vim-tmux-navigator
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?x?)(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"
# Use vi keybindings for tmux commandline input.
# Note that to get command mode you need to hit ESC twice...
set -g status-keys emacs
# Use vi keybindings in copy and choice modes
setw -g mode-keys emacs
# easily toggle synchronization (mnemonic: e is for echo)
# sends input to all panes in a given window.
bind e setw synchronize-panes on
bind E setw synchronize-panes off
# set first window to index 1 (not 0) to map more to the keyboard layout...
set-option -g base-index 1
set-window-option -g pane-base-index 1
set-window-option -g mouse on
# Screen like binding
unbind C-b
set -g prefix C-a
bind a send-prefix
# No escape time for vi mode
set -sg escape-time 0
# Screen like binding for last window
unbind l
bind C-a last-window
# Bigger history
set -g history-limit 10000
# New windows/pane in $PWD
bind c new-window -c "#{pane_current_path}"
# Fix key bindings broken in tmux 2.1
set -g assume-paste-time 0
# force a reload of the config file
unbind r
bind r source-file ~/.tmux.conf \; display "Reloaded!"
set -g set-titles on
set -g status on
set -g status-interval 5
set -g status-justify left
set -g status-position bottom
set -g status-style fg=green,bg=black
set -g status-left "#[fg=brightblack,bold]λ% #[fg=brightblack,nobold](#{session_name}) "
set -g status-right "#[fg=brightblack]%H:%M:%S %d/%m/%Y"
set -g window-status-current-style fg=yellow
set -g window-status-current-format "[#[fg=red,bold]#I: #W#[default]]"
set -g window-status-format "#[fg=blue][#I: #W]"
set -g pane-active-border-style fg=red
set -g pane-border-style fg=yellow
set -g pane-border-status top
set -g pane-border-format "[#{pane_current_command}]"
set -g mode-style bg=black
set -g visual-activity off
set -g monitor-activity off
set -g monitor-bell off
set -g xterm-keys on
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment