-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
liuguangtian.1024
committed
Dec 13, 2024
1 parent
6c9d2b4
commit eb1759f
Showing
1 changed file
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |