# At the moment Tmux doesn't support mappings with multiple keys, e.g. prefix
# ;0, prefix ;1 etc. (where ; is the common secondary prefix key). But this
# works in GNU screen and is very useful to switch to windows quickly, e.g.
-# prefix ;3 to switch to window 13 or ;;5 to switch to window 25.
+# prefix ;3 to switch to window 13 or prefix ;;5 to switch to window 25.
#
# To simulate this missing feature ; and 0-9 must be rebound when prefix ; is
# used, and unbound when ; or 0-9 was pressed and the window selected. This
#
# For each number (0-9) the following mapping is generated (example with 0):
#
-# bind-key -n 0 select-window -t :10 \; \
-# unbind-key -n 0 \; \
+# bind-key -n 0 unbind-key -n 0 \; \
# ...
# unbind-key -n 9 \; \
-# unbind-key -n \\; # this unmaps ;
+# unbind-key -n \\; \ # this unmaps ;
+# select-window -t :10 \;
+#
+# Due to Tmux's handling of errors, they abort the rest of the mapping, the
+# select-window command is executed as last part of the mapping.
#
# If a secondary chaining (e.g. prefix ;;3) is requested, a second file like
# the generated one must be loaded with ; to jump to windows 20-29. Therefore
# bind-key \; source-file "/path/to/tmux-window1.conf"
#
# tmux-window1.conf automatically contains the path to tmux-window2.conf,
-# therefore chaining for ;;3 will work to jump to window 33.
+# therefore chaining for ;;3 will work to jump to window 23.
-# Copyright (C) 2012 Simon Ruderich
+# Copyright (C) 2012-2013 Simon Ruderich
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
for (my $i = 0; $i < 10; $i++) {
- print "bind-key -n $i select-window -t :$level$i \\; ";
+ print "bind-key -n $i ";
for (my $j = 0; $j < 10; $j++) {
print "unbind-key -n $j \\; ";
}
- print "unbind-key -n \\\\;\n";
+ print "unbind-key -n \\\\; \\; ";
+ # Do the select-window last. If the window doesn't exist the failing
+ # select-window command prevents unbinding the other keys.
+ print "select-window -t :$level$i\n";
}
if (defined $path) {