Skip to content

Instantly share code, notes, and snippets.

@pagpires
Last active June 16, 2023 07:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pagpires/2bf9cd84cddd5b8f89d745a48779d467 to your computer and use it in GitHub Desktop.
Save pagpires/2bf9cd84cddd5b8f89d745a48779d467 to your computer and use it in GitHub Desktop.
tmux configuration
unbind C-b
set -g prefix C-s
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded"
# set default terminal model to 256 color mode
set -g default-terminal "screen-256color"
bind-key -n C-h select-pane -L
bind-key -n C-l select-pane -R
bind-key -n C-k select-pane -U
bind-key -n C-j select-pane -D
bind-key - split-window -v -c '#{pane_current_path}'
bind-key \\ split-window -h -c '#{pane_current_path}'
#bind -n S-Left resize-pane -L 2
#bind -n S-Right resize-pane -R 2
#bind -n S-Down resize-pane -D 1
#bind -n S-Up resize-pane -U 1
bind -n C-Left resize-pane -L 10
bind -n C-Right resize-pane -R 10
bind -n C-Down resize-pane -D 5
bind -n C-Up resize-pane -U 5
# create new window under current path
unbind n
bind n new-window -c '#{pane_current_path}'
set-option -g base-index 1
set-option -g pane-base-index 1
set-option -g renumber-windows on
# move current pane into a window and detach
bind-key b break-pane -d
# bind-key C-j choose-tree
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
bind-key -T copy-mode-vi v send -X begin-selection
# this is specific to Win, should use if-shell to separate this config
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "tmux show-buffer | clip.exe"
unbind p
bind p paste-buffer
# capture buffer in whole pane
bind-key M-s capture-pane \; save-buffer '#{pane_current_path}/buffer.tmp'
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "tmux show-buffer | clip.exe"
# panw with htop, keybinding
bind-key h split-window -h "htop"
bind-key w split-window -h -c ~/scratch "vim +CtrlP"
bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
bind-key C-b send-keys 'tat && exit' 'C-m'
bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session'
set -g mouse on
# coloring
set -g status-style fg=white,bold,bg=black
setw -g window-status-current-style fg=white,bold,bg=red
setw -g pane-border-style fg=green,bg=black
setw -g pane-active-border-style fg=white,bg=yellow
# active pane normal, others shaded
setw -g window-style fg=colour240,bg=colour235
setw -g window-active-style fg=white,bg=black
# status bar
set -g status-left-length 40
set -g status-left "#[fg=green]Session:#S #[fg=yellow]#I "
set -g status-right "#H: %Y/%m/%d %H:%M"
# save pane to log
bind P pipe-pane -o "cat >> ~/#W.log" \; display "Toggled logging to ~#W.log"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment