From eb1759fcba296e5d975d1eb4ab276835a2c3a1bf Mon Sep 17 00:00:00 2001 From: "liuguangtian.1024" Date: Fri, 13 Dec 2024 10:27:54 +0800 Subject: [PATCH] add seperate tmux conf. --- tmux/tmux.conf | 130 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 tmux/tmux.conf diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100644 index 00000000..76970b1e --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,130 @@ +setw -g xterm-keys on +set-option -g default-terminal "tmux-256color" +set-option -a terminal-overrides ",*256col*:RGB" + +set -s escape-time 10 # faster command sequences +set -s focus-events on +set -sg repeat-time 600 # increase repeat timeout + +set -g history-limit 32768 +set -g monitor-activity on +set -g visual-activity off + +# start with mouse mode enabled +set -g mouse on + +# force Vi mode +# really you should export VISUAL or EDITOR environment variable, see manual +set -g status-keys vi +set -g mode-keys vi + +set -g base-index 1 # start windows numbering at 1 +set -g set-titles on # set terminal title +set -g renumber-windows on # renumber windows when a window is closed +set -g display-panes-time 800 # slightly longer pane indicators display time +set -g display-time 1000 # slightly longer status messages display time + +setw -g pane-base-index 1 # make pane numbering consistent with windows +setw -g automatic-rename on # rename window to reflect current program + +# replace C-b by C-x instead of using both prefixes +set -gu prefix2 +unbind C-a +unbind C-b +set -g prefix C-x +bind C-a send-prefix + +# move status line to top +# set -g status-position top +# split current window horizontally +bind s split-window -v +# split current window vertically +bind v split-window -h +# open new tmux window +bind w new-window +# rename window +bind e command-prompt -I "#W" "rename-window '%%'" +# kill current window +bind q killp + + +# reload configuration +bind r source-file ~/.tmux.conf \; display '~/.tmux.conf sourced' + +# maximize current pane +bind + run 'cut -c3- ~/.tmux.conf | sh -s _maximize_pane "#{session_name}" #D' + +# pane resizing +bind -r H resize-pane -L 2 +bind -r J resize-pane -D 2 +bind -r K resize-pane -U 2 +bind -r L resize-pane -R 2 + +# pane navigation +bind -r h select-pane -L # move left +bind -r j select-pane -D # move down +bind -r k select-pane -U # move up +bind -r l select-pane -R # move right +bind > swap-pane -D # swap current pane with the next one +bind < swap-pane -U # swap current pane with the previous one + +# window navigation +unbind n +unbind p +bind -r C-h previous-window # select previous window +bind -r C-l next-window # select next window +bind Tab last-window # move to last active window + +# vi-choice is gone in tmux >= 2.4 +run -b 'tmux bind -t vi-choice h tree-collapse 2> /dev/null || true' +run -b 'tmux bind -t vi-choice l tree-expand 2> /dev/null || true' +run -b 'tmux bind -t vi-choice K start-of-list 2> /dev/null || true' +run -b 'tmux bind -t vi-choice J end-of-list 2> /dev/null || true' +run -b 'tmux bind -t vi-choice H tree-collapse-all 2> /dev/null || true' +run -b 'tmux bind -t vi-choice L tree-expand-all 2> /dev/null || true' +run -b 'tmux bind -t vi-choice Escape cancel 2> /dev/null || true' + +# vi-edit is gone in tmux >= 2.4 +run -b 'tmux bind -ct vi-edit H start-of-line 2> /dev/null || true' +run -b 'tmux bind -ct vi-edit L end-of-line 2> /dev/null || true' +run -b 'tmux bind -ct vi-edit q cancel 2> /dev/null || true' +run -b 'tmux bind -ct vi-edit Escape cancel 2> /dev/null || true' + +# -- copy mode ----------------------------------------------------------------- + +bind Enter copy-mode # enter copy mode +run -b 'tmux bind -t vi-copy v begin-selection 2> /dev/null || true' +run -b 'tmux bind -T copy-mode-vi v send -X begin-selection 2> /dev/null || true' +run -b 'tmux bind -t vi-copy C-v rectangle-toggle 2> /dev/null || true' +run -b 'tmux bind -T copy-mode-vi C-v send -X rectangle-toggle 2> /dev/null || true' +run -b 'tmux bind -t vi-copy y copy-selection 2> /dev/null || true' +run -b 'tmux bind -T copy-mode-vi y send -X copy-selection-and-cancel 2> /dev/null || true' +run -b 'tmux bind -t vi-copy Escape cancel 2> /dev/null || true' +run -b 'tmux bind -T copy-mode-vi Escape send -X cancel 2> /dev/null || true' +run -b 'tmux bind -t vi-copy H start-of-line 2> /dev/null || true' +run -b 'tmux bind -T copy-mode-vi H send -X start-of-line 2> /dev/null || true' +run -b 'tmux bind -t vi-copy L end-of-line 2> /dev/null || true' +run -b 'tmux bind -T copy-mode-vi L send -X end-of-line 2> /dev/null || true' + +# copy to X11 clipboard +if -b 'command -v xsel > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | xsel -i -b"' +if -b '! command -v xsel > /dev/null 2>&1 && command -v xclip > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | xclip -i -selection clipboard >/dev/null 2>&1"' +# copy to macOS clipboard +if -b 'command -v pbcopy > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | pbcopy"' +if -b 'command -v reattach-to-user-namespace > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | reattach-to-user-namespace pbcopy"' +# copy to Windows clipboard +if -b 'command -v clip.exe > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | clip.exe"' +if -b '[ -c /dev/clipboard ]' 'bind y run -b "tmux save-buffer - > /dev/clipboard"' + +# -- buffers ------------------------------------------------------------------- +bind b list-buffers # list paste buffers +bind p paste-buffer # paste from the top paste buffer +bind P choose-buffer # choose which buffer to paste from + +# toggle mouse +bind m run "cut -c3- ~/.tmux.conf | sh -s _toggle_mouse" + +# -- urlview ------------------------------------------------------------------- +bind U run "cut -c3- ~/.tmux.conf | sh -s _urlview #{pane_id}" + +run ~/.config/tmux/plugins/nord/nord.tmux