Perfect
This commit is contained in:
@@ -11,35 +11,77 @@ if-shell "test -x /opt/homebrew/bin/fish" \
|
||||
|
||||
unbind C-Enter
|
||||
|
||||
# smart pane switching
|
||||
# --- Windows start at 1, auto-renumber ---
|
||||
set -g base-index 1
|
||||
setw -g pane-base-index 1
|
||||
set -g renumber-windows on
|
||||
|
||||
# --- Mouse ---
|
||||
set -g mouse on
|
||||
|
||||
# --- Pane navigation (prefix + hjkl) ---
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
bind l select-pane -R
|
||||
|
||||
# --- Pane resizing (prefix + C-hjkl, repeatable) ---
|
||||
bind -r C-h resize-pane -L 4
|
||||
bind -r C-j resize-pane -D 2
|
||||
bind -r C-k resize-pane -U 2
|
||||
bind -r C-l resize-pane -R 4
|
||||
|
||||
# --- Window navigation ---
|
||||
bind C-p previous-window
|
||||
bind C-n next-window
|
||||
|
||||
set -g repeat-time 1000
|
||||
|
||||
# split panes using v and x
|
||||
bind v split-window -h
|
||||
bind x split-window -v
|
||||
# --- Splits open in same directory ---
|
||||
bind v split-window -h -c "#{pane_current_path}"
|
||||
bind x split-window -v -c "#{pane_current_path}"
|
||||
unbind '"'
|
||||
unbind %
|
||||
|
||||
# --- i3-style pane moving (prefix + H/J/K/L swaps panes) ---
|
||||
bind H swap-pane -s '{left-of}'
|
||||
bind J swap-pane -s '{down-of}'
|
||||
bind K swap-pane -s '{up-of}'
|
||||
bind L swap-pane -s '{right-of}'
|
||||
|
||||
# --- Window moving (prefix + < / > shifts window position) ---
|
||||
bind -r < swap-window -t -1\; select-window -t -1
|
||||
bind -r > swap-window -t +1\; select-window -t +1
|
||||
|
||||
# --- Break pane out / join pane back ---
|
||||
# prefix + ! = break current pane into its own window (built-in)
|
||||
# prefix + @ = pick a window and pull it back as a pane
|
||||
bind @ command-prompt -p "join pane from window:" "join-pane -s '%%'"
|
||||
|
||||
# --- New window in same directory ---
|
||||
bind c new-window -c "#{pane_current_path}"
|
||||
|
||||
# --- SSH into new window ---
|
||||
bind S command-prompt -p "ssh:" "new-window -n '%1' 'ssh %1'"
|
||||
|
||||
# --- Reload config ---
|
||||
bind r source-file ~/.tmux.conf \; display "Config reloaded"
|
||||
|
||||
# --- Status bar ---
|
||||
set -g status-right ""
|
||||
set -g status-style 'bg=#f5bde6 fg=#24273a'
|
||||
set -g pane-active-border-style "bg=default fg=#f5bde6"
|
||||
|
||||
# --- Copy/paste (system clipboard via OSC 52 — works over SSH) ---
|
||||
set -g set-clipboard on
|
||||
setw -g mode-keys vi
|
||||
bind -T copy-mode-vi v send -X begin-selection
|
||||
bind -T copy-mode-vi y send -X copy-selection
|
||||
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-selection
|
||||
|
||||
# --- Plugins ---
|
||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||
set -g @resurrect-strategy-nvim 'session'
|
||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||
|
||||
run '~/.tmux/plugins/tpm/tpm'
|
||||
|
||||
Reference in New Issue
Block a user