From 69ab5dfc75d4adcc5a0d3a83de7487aa5cae0e7b Mon Sep 17 00:00:00 2001 From: _N0x Date: Mon, 11 Oct 2021 17:53:06 +0200 Subject: [PATCH] Added tmux.conf --- tmux/.tmux.conf | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 tmux/.tmux.conf diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf new file mode 100644 index 0000000..3dbb770 --- /dev/null +++ b/tmux/.tmux.conf @@ -0,0 +1,75 @@ +# ========================== +# === General settings === +# ========================== +set -g default-terminal "screen-256color" + +# Change prefix key to C-a, easier to type, same to "screen" +unbind C-b +set -g prefix C-a + +# Set parent terminal title to reflect current window in tmux session +set -g set-titles on +set -g set-titles-string "#I:#W" + +# Start index of window/pane with 1, because we're humans, not computers +set -g base-index 1 +setw -g pane-base-index 1 + +# Enable mouse support +set -g mouse on + +# ================================================ +# === Copy mode, scroll and clipboard === +# ================================================ +set -g @copy_use_osc52_fallback on + +# Prefer vi style key table +setw -g mode-keys vi + +bind p paste-buffer +bind C-p choose-buffer + +# trigger copy mode by +bind -n M-Up copy-mode + +# Scroll up/down by 1 line, half screen, whole screen +bind -T copy-mode-vi M-Up send-keys -X scroll-up +bind -T copy-mode-vi M-Down send-keys -X scroll-down +bind -T copy-mode-vi M-PageUp send-keys -X halfpage-up +bind -T copy-mode-vi M-PageDown send-keys -X halfpage-down +bind -T copy-mode-vi PageDown send-keys -X page-down +bind -T copy-mode-vi PageUp send-keys -X page-up + +# When scrolling with mouse wheel, reduce number of scrolled rows per tick to "2" (default is 5) +bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 2 scroll-up +bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 2 scroll-down + +# wrap default shell in reattach-to-user-namespace if available +# there is some hack with `exec & reattach`, credits to "https://github.com/gpakosz/.tmux" +# don't really understand how it works, but at least window are not renamed to "reattach-to-user-namespace" +if -b "command -v reattach-to-user-namespace > /dev/null 2>&1" \ + "run 'tmux set -g default-command \"exec $(tmux show -gv default-shell) 2>/dev/null & reattach-to-user-namespace -l $(tmux show -gv default-shell)\"'" + +yank="~/.tmux/yank.sh" + +# Copy selected text +bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "$yank" +bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "$yank" +bind -T copy-mode-vi Y send-keys -X copy-line \;\ + run "tmux save-buffer - | $yank" +bind-key -T copy-mode-vi D send-keys -X copy-end-of-line \;\ + run "tmux save-buffer - | $yank" +bind -T copy-mode-vi C-j send-keys -X copy-pipe-and-cancel "$yank" +bind-key -T copy-mode-vi A send-keys -X append-selection-and-cancel \;\ + run "tmux save-buffer - | $yank" + +# Copy selection on drag end event, but do not cancel copy mode and do not clear selection +# clear select on subsequence mouse click +bind -T copy-mode-vi MouseDragEnd1Pane \ + send-keys -X copy-pipe "$yank" +bind -T copy-mode-vi MouseDown1Pane select-pane \;\ + send-keys -X clear-selection + +# iTerm2 works with clipboard out of the box, set-clipboard already set to "external" +# tmux show-options -g -s set-clipboard +# set-clipboard on|external