Skip to content

Instantly share code, notes, and snippets.

@nathanph
Created November 15, 2021 17:29
Show Gist options
  • Select an option

  • Save nathanph/8ee9c8897d1a6819ebf81a67b2be6851 to your computer and use it in GitHub Desktop.

Select an option

Save nathanph/8ee9c8897d1a6819ebf81a67b2be6851 to your computer and use it in GitHub Desktop.
Configuration for navigating panes in tmux.
# vim: ft=tmux
set-option -g -w @PASSTHROUGH_PREDICATE '#{||:#{==:vim,#{pane_current_command}},#{==:tmux,#{pane_current_command}}}'
set-option -g -w @PASSTHROUGH_WHEN '#{pane_current_command}'
set-option -g -w @PASSTHROUGH_MATCHES 'nvim|vim|tmux'
set-option -g -w @PASSTHROUGH_PREDICATE '#{m/ri:#{@PASSTHROUGH_MATCHES},#{E:#{@PASSTHROUGH_WHEN}}}'
%hidden SELECT_PANE_COMMAND_NAME_LEFT='select-pane-left'
%hidden SELECT_PANE_COMMAND_ID_LEFT=2050
%hidden select_pane_left_key=C-h
%hidden SELECT_PANE_COMMAND_NAME_RIGHT='select-pane-right'
%hidden SELECT_PANE_COMMAND_ID_RIGHT=2150
%hidden select_pane_right_key=C-l
%hidden SELECT_PANE_COMMAND_NAME_ABOVE='select-pane-above'
%hidden SELECT_PANE_COMMAND_ID_ABOVE=2250
%hidden select_pane_above_key=C-k
%hidden SELECT_PANE_COMMAND_NAME_BELOW='select-pane-below'
%hidden SELECT_PANE_COMMAND_ID_BELOW=2350
%hidden select_pane_below_key=C-j
%hidden SELECT_PANE_COMMAND_NAME_LAST='select-pane-last'
%hidden SELECT_PANE_COMMAND_ID_LAST=2450
%hidden select_pane_last_key=C-\\
%hidden passthrough_predicate="#{E:#{@PASSTHROUGH_PREDICATE}}"
set-option -g command-alias[${SELECT_PANE_COMMAND_ID_LEFT}] \
"${SELECT_PANE_COMMAND_NAME_LEFT}=
if-shell -F '${passthrough_predicate}' \
{ send-keys '${select_pane_left_key}' } \
{ select-pane -L } \
"
set-option -g command-alias[${SELECT_PANE_COMMAND_ID_RIGHT}] \
"${SELECT_PANE_COMMAND_NAME_RIGHT}=
if-shell -F '${passthrough_predicate}' \
{ send-keys '${select_pane_right_key}' } \
{ select-pane -R } \
"
set-option -g command-alias[${SELECT_PANE_COMMAND_ID_ABOVE}] \
"${SELECT_PANE_COMMAND_NAME_ABOVE}=
if-shell -F '${passthrough_predicate}' \
{ send-keys '${select_pane_above_key}' } \
{ select-pane -U } \
"
set-option -g command-alias[${SELECT_PANE_COMMAND_ID_BELOW}] \
"${SELECT_PANE_COMMAND_NAME_BELOW}=
if-shell -F '${passthrough_predicate}' \
{ send-keys '${select_pane_below_key}' } \
{ select-pane -D } \
"
set-option -g command-alias[${SELECT_PANE_COMMAND_ID_LAST}] \
"${SELECT_PANE_COMMAND_NAME_LAST}=
if-shell -F '${passthrough_predicate}' \
{ send-keys '${select_pane_last_key}' } \
{ select-pane -l } \
"
bind-key -T prefix -r "${select_pane_left_key}" { select-pane -L }
bind-key -T root "${select_pane_left_key}" "${SELECT_PANE_COMMAND_NAME_LEFT}"
bind-key -T tmux-nest "${select_pane_left_key}" "${SELECT_PANE_COMMAND_NAME_LEFT}"
bind-key -T prefix -r "${select_pane_right_key}" { select-pane -R }
bind-key -T root "${select_pane_right_key}" "${SELECT_PANE_COMMAND_NAME_RIGHT}"
bind-key -T tmux-nest "${select_pane_right_key}" "${SELECT_PANE_COMMAND_NAME_RIGHT}"
bind-key -T prefix -r "${select_pane_above_key}" { select-pane -U }
bind-key -T root "${select_pane_above_key}" "${SELECT_PANE_COMMAND_NAME_ABOVE}"
bind-key -T tmux-nest "${select_pane_above_key}" "${SELECT_PANE_COMMAND_NAME_ABOVE}"
bind-key -T prefix -r "${select_pane_below_key}" { select-pane -D }
bind-key -T root "${select_pane_below_key}" "${SELECT_PANE_COMMAND_NAME_BELOW}"
bind-key -T tmux-nest "${select_pane_below_key}" "${SELECT_PANE_COMMAND_NAME_BELOW}"
bind-key -T root "${select_pane_last_key}" "${SELECT_PANE_COMMAND_NAME_LAST}"
bind-key -T tmux-nest "${select_pane_last_key}" "${SELECT_PANE_COMMAND_NAME_LAST}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment