Binding a command in tmux without using the prefix key

46

15

Is it possible to bind a tmux command to a key combination and use it directly without first pressing the prefix?

I find C-b + n too cumbersome to switch panes, so I was wondering whether I could bind C-1 for example, to switch to pane #1.

Or perhaps there may be a way to make the shortcut in the terminal emulator to send C-b + 1 when I press C-1?

Thanks!

Ivan

Posted 2011-01-27T15:54:39.743

Reputation: 3 639

1I just use set -g prefix C-a. – user1686 – 2011-01-27T20:31:04.043

Me too, I just put C-b on my question because that's the default. – Ivan – 2011-01-27T23:05:35.593

Answers

48

for your example, use:

bind-key -n C-1 select-pane -t 1

the -n argument to bind-key means no prefix.

Autoplectic

Posted 2011-01-27T15:54:39.743

Reputation: 938

1Thanks! That almost gets it done, except it doesn't recognize numbers, it says unknown key: C-1. If I use a letter it works. Do you know how I can specify a number key? – Ivan – 2011-02-03T12:36:19.997

7@Ivan: The usual codes for Control keystrokes come from ASCII. ASCII does not define codes for C-1..C-9. The standard ASCII control characters are C-@, C-a..C-z, C-[, C-, C-], C-^, C-_, and C-?. Most terminals just do not support distinct codes for most modified keystrokes (though many support some modifiers for arrow keys and functions keys). You are probably better off using F1 in place of C-1 (also note that the pane numbers start at 0, not 1: bind F1 to selecting pane 0, F2 to 1, etc.). – Chris Johnsen – 2011-02-24T05:22:29.757

2

I have a quibble with the accepted answer here.

According to tmux(1), -n is an alias for -T root. So including -n doesn't actually mean that there is "no prefix" as much as it means the command will be bound to the root table, which is "not recommended".

tmux(1):

The root table is used for keys pressed without the prefix key: binding ‘c’ to new-window in the root table (not recommended) means plain ‘c’ will create a new window

What this seems to be saying is that:

bind -n c new-window

Will create a new window when c is pressed, and indeed, it does.

The dry humor in the author's phrase "not recommended" is the fact that "c" will of course be pressed many times in the average tmux session, given that "c" is the third-most frequent letter in English.

For another example, here is fast tmux window switching (using PageUp/PageDown keys):

unbind NPage
unbind PPage
bind -n PPage previous-window
bind -n NPage next-window

g33kz0r

Posted 2011-01-27T15:54:39.743

Reputation: 284