diff --git a/home/benk/.tmux.conf b/home/benk/.tmux.conf index 303ad14..3daec08 100644 --- a/home/benk/.tmux.conf +++ b/home/benk/.tmux.conf @@ -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'