Split pane switching in tmux: switch once per command

Tmux

Tmux Problem Overview


I've been a happy tmux user for a while now but there's one behaviour that's bugging me. When I switch panes using ^b-arrow, and then immediately press arrow-up (to get a command from history, for example), the window pane switches again. I understand this can be useful if you want to move through multiple panes quickly, but for me it's a pain in the backside since I keep ending up in panes I never meant to be in.

So, is there a way to set tmux so that the ^b-arrow command only switches pane once and ignores any following arrow key presses?

Tmux Solutions


Solution 1 - Tmux

That happens because the default bindings for the arrow keys are setup with bind-key -r, specifying that they may be repeated. There are two ways that you can disable this.

First, you can use set-option repeat-time 0 to disable repeating entirely. This will affect all bindings. I find that to be very annoying when resizing panes.

Secondly, you can change the bindings for the arrow keys to use bind-key without the -r option:

bind-key Up    select-pane -U
bind-key Down  select-pane -D
bind-key Left  select-pane -L
bind-key Right select-pane -R

Solution 2 - Tmux

If you spend a lot of times navigating panes, why not set up global mappings so you don't have to use prefixes at all, e.g. bind -n C-h select-pane -L to map ctrl-h to switching left, same as Vim.

See http://robots.thoughtbot.com/seamlessly-navigate-vim-and-tmux-splits for an even better solution that also navigates across Vim windows.

Solution 3 - Tmux

Another option is to make a binding to jump to the previous pane, if you are flicking back and forth between the same two panes.

bind-key C-a last-pane

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSteakTartaarView Question on Stackoverflow
Solution 1 - TmuxqqxView Answer on Stackoverflow
Solution 2 - TmuxmahemoffView Answer on Stackoverflow
Solution 3 - TmuxDecoyView Answer on Stackoverflow