Como diminuir o tempo limite entre a chave de prefixo e a chave de comando no tmux?

45

Meu ~/.tmux.conf:

set -g prefix C-a
unbind C-b
bind C-a send-prefix

bind-key o split-window -v
bind-key e split-window -h

bind-key w kill-pane

(para tornar as chaves de comando iguais ao GNOME Teminator)

A situação: após dividir a janela horizontal em 2 painéis, alternar para um painel com seta Ctrl+ a Up, devo esperar um pouco (2-3 segundos) para exibir os comandos do histórico do shell nesse painel. Porque se eu pressionar Upnovamente, ele voltará para o outro painel em vez de me mostrar um comando de histórico do shell. Como posso recusar isso?

quanta
fonte
Uma alternativa potencialmente útil é usar CTRL + B q, isso mostra os números das janelas no tmux. Pressionar CTRL + B q <número> levará você a essa janela; para cima / para baixo estará disponível imediatamente. Você deve digitar o número após q rapidamente. Há um tempo limite controlando isso também.
Spacen Jasset

Respostas:

53

Cima, Baixo, Esquerda e Direita ( select-paneligações; e Control e Meta- das mesmas teclas para resize-pane) são ligações "repetíveis" por padrão (feitas via bind-key -r). Após digitar a tecla prefixo e qualquer tecla repetível, você pode digitar qualquer outra tecla repetível (sem precisar digitar o prefixo novamente) dentro do número de milissegundos especificado pela repeat-timeopção de sessão (o padrão é 500 ms).

Você pode examinar o valor atual repeat-timecom estes comandos do shell:

tmux show-options -g | grep \^repeat-time     # global
tmux show-options    | grep \^repeat-time     # this session

Se você deseja desativar a repetição para a sessão atual, digite seu prefixo, dois pontos e digite este comando:

set-option repeat-time 0

Ou você pode encontrar um valor diferente de zero confortável. Se você realmente tem um valor em torno de 2000 (ou seja, 2s), acho que está sendo definido /etc/tmux.conf.

Se você deseja desativar a repetição (ou alterar o tempo limite) para todas as suas sessões, defina o valor global com este comando:

set-option -g repeat-time 0

Se você definiu um valor por sessão, precisará desmarcá-lo antes que o valor global entre em vigor nessa sessão ( set-option -u repeat-time). Você pode definir o valor global através do seu, .tmux.confse preferir deixá-lo "permanentemente".

Se você tiver apenas problemas com o Up, poderá religá-lo sem -r:

bind-key Up select-pane -U
Chris Johnsen
fonte
4

Você também pode desativar a repetição para combinações de teclas específicas, se desejar. Por exemplo, as ligações padrão para alternar entre painéis se resumem a:

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

Você pode recriá-los sem a -rbandeira, como

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

Pessoalmente, prefiro que a alternância de painéis não seja repetível. Repetir é bom se você tiver uma janela dividida em vários pequenos painéis, mas pode levar a colisões importantes (como você descreveu) com os aplicativos em execução nesses painéis (como histórico do shell, vim etc.) e eu normalmente não têm mais do que 2 painéis por janela de qualquer maneira. Mas cada um na sua.

ivan
fonte