Jak zmniejszyć limit czasu między klawiszem prefiksu a klawiszem poleceń w tmux?

45

Mój ~/.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

(aby klawisze poleceń były takie same jak GNOME Teminator)

Sytuacja: po poziomym podzieleniu okna na 2 panele, przełączeniu do panelu ze strzałką Ctrl+ a Up, muszę poczekać chwilę (2-3 sekundy), aby wyświetlić polecenia historii powłoki w tym panelu. Ponieważ jeśli nacisnę Upponownie, nastąpi przełączenie z powrotem do drugiego panelu zamiast pokazywania mi polecenia historii powłoki. Jak mogę to odrzucić?

kwanty
źródło
Potencjalnie użyteczną alternatywą jest użycie CTRL + B q, pokazuje numery okien w tmux. Wciśnięcie CTRL + B q <numer> przeniesie Cię do tego okna, góra / dół będą dostępne natychmiast. Musisz wpisać cyfrę po q dość szybko. Kontroluje to również limit czasu.
Spacen Jasset

Odpowiedzi:

53

W górę, w dół, w lewo i w prawo ( select-panewiązania; oraz Control i Meta tych samych klawiszy dla resize-pane) są domyślnie „powtarzalne” (tworzone przez bind-key -r). Po wpisaniu klucza prefiksu i dowolnego pojedynczego klucza powtarzalnego możesz wpisać dowolny inny klucz powtarzalny (bez konieczności ponownego wpisywania prefiksu) w ciągu liczby milisekund określonych za pomocą repeat-timeopcji sesji (domyślnie jest to 500 ms ).

Możesz sprawdzić bieżącą wartość za repeat-timepomocą następujących poleceń powłoki:

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

Jeśli chcesz wyłączyć powtarzanie dla bieżącej sesji, wpisz prefiks, dwukropek i wprowadź następujące polecenie:

set-option repeat-time 0

Lub możesz znaleźć wygodną niezerową wartość. Jeśli naprawdę masz wartość około 2000 (tj. 2s), zgaduję, że jest ona ustawiana /etc/tmux.conf.

Jeśli chcesz wyłączyć powtarzanie (lub zmienić limit czasu) dla wszystkich sesji, ustaw wartość globalną za pomocą tego polecenia:

set-option -g repeat-time 0

Jeśli ustawiłeś wartość na sesję, musisz ją rozbroić, zanim globalna wartość zacznie obowiązywać w tej sesji ( set-option -u repeat-time). Możesz .tmux.confchcieć ustawić wartość globalną za pomocą swojego, jeśli wolisz pozostawić ją „na stałe”.

Jeśli masz tylko problemy z Up, możesz powiązać go ponownie bez -r:

bind-key Up select-pane -U
Chris Johnsen
źródło
4

Jeśli chcesz, możesz także wyłączyć powtarzanie dla określonych skrótów klawiszowych. Na przykład domyślne powiązania przełączania między panelami sprowadzają się do:

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

Możesz je odtworzyć bez -rflagi, jak

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

Osobiście wolę przełączanie okien, aby nie było powtarzalne. Powtarzanie jest miłe, jeśli okno jest podzielone na wiele małych okien, ale może prowadzić do kolizji kluczowych (jak opisano) z aplikacjami działającymi w tych oknach (np. Historia powłoki, vim itp.), A ja i tak zazwyczaj mają nie więcej niż 2 panele na okno. Ale każdemu jego.

ivan
źródło