-temacs-copy
не опечатка. Ведущий тире означает, что это - опция к bind-keys
команда (наряду с аргументом в пользу опции). Это эквивалентно -t emacs-copy
, если Вам нравится этот лучше.
Режим копии использует другой набор привязки и commands1, чем “нормальный режим”. copy-pipe
команда только доступна в альтернативных таблицах привязки “режима”. Когда mode-keys
emacs
, режим копии будет использовать emacs-copy
таблица, таким образом, необходимо связать M-w с copy-pipe
в той таблице.
bind-key -temacs-copy M-w copy-pipe "xclip -i -selection clipboard"
Будьте тщательным созданием слишком многих “никаких префиксов” привязка. Они будут мешать вводить те связанные ключи к программе, работающей внутри tmux (например, когда Вы захотите ввести C-y к экземпляру tty-режима Emacs, работающего внутри tmux). Можно всегда (снабжать префиксом), связывают некоторый ключ, который делает send-keys C-y
, но это могло бы сделать это более громоздким, чтобы ввести при необходимости в нем достаточно часто.
1 Только перемещение и редактирующие команды доступны. За исключением copy-pipe
, эти команды не берут аргументов (это - то, что страница справочника означает с ним, говорит, что “Одна команда в принимает аргумент”; “в”, вероятно, опечатка или ошибка редактирования).
getopts
начинает синтаксический разбор с первого аргумента и останавливается на первом аргументе без опции. Это стандартное соглашение - некоторые GNU утилиты принимают опции после аргументов, но нормально то, что в somecommand foo -bar qux
, -bar
не обрабатывается как опция.
Если вы хотите начать разбор опций после bootstrap
, вы должны указать это. getts
использует переменную OPTIND
, чтобы запомнить, в какой позиции она находится. OPTIND
начинается со значения 1. Чтобы пропустить первый аргумент, установите его значение 2.
case "$1" in
bootstrap)
OPTIND=2
while getopts ":b:" o; do
…
В качестве альтернативы можно сдвинуть
аргументы, которые вы уже обработали.
subcommand=$1; shift
case "$subcommand" in
bootstrap)
while getopts ":b:" o; do
…