psoxizsh/tmux/fragment/ctrl-alt-movement.conf

34 lines
1.4 KiB
Plaintext

# This fragmenet is meant to be used with a Vim plugin and provides unified movement
# between Vim window/panes and tmux panes. It requires you install the following in
# Vim to function correctly:
#
# github.com/christoomey/vim-tmux-navigator
#
# Include it by adding the following snippet to your early (or late) tmux.conf:
#
# source-file "$PSOXIZSH/tmux/fragment/ctrl-alt-movement.conf"
### --- This uses Ctrl-Alt-<arrow> movement --- ###
# Integration with vim-tmux-navigator & fzf
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
is_fzf="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?fzf$'"
bind -n C-M-Left run "($is_vim && tmux send-keys C-h) \
|| tmux select-pane -L"
bind -n C-M-Down run "($is_vim && tmux send-keys C-j) \
|| ($is_fzf && tmux send-keys C-j) \
|| tmux select-pane -D"
bind -n C-M-Up run "($is_vim && tmux send-keys C-k) \
|| ($is_fzf && tmux send-keys C-k) \
|| tmux select-pane -U"
bind -n C-M-Right run "($is_vim && tmux send-keys C-l) \
|| tmux select-pane -R"
bind-key -T copy-mode-vi 'C-M-Left' select-pane -L
bind-key -T copy-mode-vi 'C-M-Down' select-pane -D
bind-key -T copy-mode-vi 'C-M-Up' select-pane -U
bind-key -T copy-mode-vi 'C-M-Right' select-pane -R