Reputation: 1025
Right now my tmux keybindings are set such that prefix + h/j/k/l (i.e vim-style bindings) are used to move focus of the panes left/down/up/right. However, sometimes when I switch to a pane running vim and I immediately start navigating with h/j/k/l, I get stuck in "tmux mode" where it will continue switching panes instead of navigating in vim. I have similar issues when switching to a normal terminal pane and listing files (i.e by using "l"). To avoid this, I would like to force tmux to require the prefix key for every pane switch I do.
Is there a way to do this?
Edit: In case its needed, here is my .tmux.conf
# Bind CTRL+a to the prefix button
set -g prefix C-a
unbind C-b
bind C-a send-prefix
bind a send-prefix
# Remove the delay of escape key
set -s escape-time 0
# Bind PREFIX + r to reload the .conf file
unbind r
bind r source-file ~/.tmux.conf
# Quick pane cycling
unbind ^A
bind ^A select-pane -t :.+
set -g base-index 1
setw -g pane-base-index 1
set-option -g default-shell "/bin/bash"
# List of tmux plugins
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Plugin manager
run '~/.tmux/plugins/tpm/tpm'
# Enable mouse support on tmux
set -g mouse on
# Rebind the pane switching to vim-like shortcuts
bind -r k select-pane -U
bind -r j select-pane -D
bind -r h select-pane -L
bind -r l select-pane -R
unbind Up
unbind Down
unbind Left
unbind Right
unbind C-Up
unbind C-Down
unbind C-Left
unbind C-Right
# Set the tmux colors to default
set -g default-terminal screen-256color
Upvotes: 1
Views: 2870
Reputation: 5720
I disagree with @filbranden's assertion that "Requiring the prefix for every pane switch is the normal behavior". This demonstrably false: on a fresh install, you can create a window with two panes, type the prefix (C-b), and then jump between the panes as many times as you like by pressing arrow keys.
This answer on StackExchange seems correct. The feature that results in the prefix not being required is controlled by setting the option repeat-time
. It is set to 500 by default (which is why the default behaviour is that the prefix is not required).
To disable this behaviour, simply add this line to your config:
set-option -g repeat-time 0
Upvotes: 2
Reputation: 8908
This is being caused by your use of -r
when creating the key bindings for h/j/k/l.
From the entry for bind-key
in the tmux man page:
The -r flag indicates this key may repeat, see the repeat-time option.
And about the repeat-time
option:
Allow multiple commands to be entered without pressing the prefix-key again in the specified time milliseconds (the default is 500). Whether a key repeats may be set when it is bound using the
-r
flag tobind-key
. Repeat is enabled for the default keys bound to theresize-pane
command.
Just drop the -r
from those four commands to have it require the prefix key every time.
Upvotes: 4