4

Я хотел бы привязать Ctrl-`в tmux к select-pane.

Я пробовал: bind -n C-`select-pane -t:.+ Что мне дает: неизвестный ключ C-`

Я также попытался: bind -n 'C-`' select-pane -t:.+ Что дает мне ту же ошибку.

Затем я попробовал просто `: bind -n` select-pane -t:.+ Это работало нормально (но связано `не C-`.

Наиболее запутанно я попытался: bind -n `-C select-pane -t:.+ Который на удивление сработал (мне пришлось сначала нажать backtick, а затем ctrl). Что в Ctrl-`не нравится tmux?

2 ответа2

5

tmux использует эту логику для обработки модификатора ctrl в key-string.c (обратный код - код 96):

    /* Convert the standard control keys. */                               
    if (key < KEYC_BASE && (modifiers & KEYC_CTRL) && !strchr(other, key)) {
            if (key >= 97 && key <= 122)
                    key -= 96;
            else if (key >= 64 && key <= 95)
                    key -= 64;
            else if (key == 32)
                    key = 0;
            else if (key == 63)
                    key = KEYC_BSPACE;
            else
                    return (KEYC_NONE);
            modifiers &= ~KEYC_CTRL;
    }

Хотя некоторые приложения могут обрабатывать весь диапазон от 64 до 126 как действительный для ctrl, tmux исключает backtic, фигурные скобки, вертикальную черту и тильду. Вероятная причина в том, что они менее полезны для привязки клавиш, потому что немодифицированные ключи часто используются в сценариях оболочки.

С другой стороны, ctrl-@ будет иметь такую же ожидаемую интерпретацию, и вы можете использовать ее вместо этого.

0

Я нашел где-то совет использовать cat внутри tmux для проверки escape-последовательности.

  1. Запустить tmux
  2. Беги cat
  3. Нажмите клавиши C-`

На моем терминале у меня есть ^@

Так что в конфиге я поставил

set -g prefix ^@ работал для меня с roxterm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .