tmux set -g włączony tryb myszy nie działa

244

Rozglądałem się i ludzie mówią, że to kładzenie

set -g mouse-mode on

powinien umożliwiać przewijanie danych wyjściowych terminala podczas uruchamiania tmux. Jednak po włożeniu tego do mojego ~/.tmux.confpliku i stwierdzeniu, że tmux set -g mouse-mode onpodczas sesji tmux nic się nie zmienia. Kiedy przewijam, wciąż wychodzę poza Tmux, jak przewijanie w vimie z domyślnymi ustawieniami.

Czy ktoś wie, dlaczego tak jest?

David mówi Przywróć Monikę
źródło
mode-mousew starej wersji
hyiltiz

Odpowiedzi:

559

Dlatego zmieniono nazwę tej opcji w wersji 2.1 (18 października 2015 r.)

Z dziennika zmian :

 Mouse-mode has been rewritten.  There's now no longer options for:
    - mouse-resize-pane
    - mouse-select-pane
    - mouse-select-window
    - mode-mouse

  Instead there is just one option:  'mouse' which turns on mouse support

Właśnie tego używam teraz w moim .tmux.confpliku

set -g mouse on
Graham
źródło
1
Dzięki @ Graham42! To jest teraz poprawna odpowiedź. Zaktualizowałem tmux i zepsuł się dziś rano - to naprawia.
Matthew Lehner
7
Mimo że to pytanie zostało zadane w 2012 roku przed tą zmianą, to jest tylko odpowiedź, której potrzebowałem (i wielu innych), hah
Andrew
2
przydatne, napraw mój problem w Ubuntu 16.04
sudoz
2
Podczas gdy działa to na Macu, to z set -g mouse on, to przerwie możliwość zaznaczania tekstu w terminalu Mac. Muszę specjalnie zrobić, set -g mouse offaby zaznaczyć tekst
wygrywa
1
@Wybierz klawisz shift przed wybraniem lub wklejeniem
mdekkers
70

Jak zauważył @ Graham42, opcja myszy zmieniła się w wersji 2.1. Przewijanie wymaga teraz, aby najpierw przejść do trybu kopiowania. Aby włączyć przewijanie prawie identyczne jak przed 2.1, dodaj do swojego .tmux.conf.

set-option -g mouse on

# make scrolling with wheels work
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M

Umożliwi to przewijanie po najechaniu kursorem na panel, a ty będziesz mógł przewijać ten panel linia po linii.

Źródło: https://groups.google.com/d/msg/tmux-users/TRwPgEOVqho/Ck_oth_SDgAJ

Umut Sirin
źródło
2
FANTASTYCZNY! Samo ustawienie, mousejak mówi zaakceptowana odpowiedź, nie działa dla mnie - ten alias, który wchodzi w tryb kopiowania, był idealny
Gareth,
2
Wydaje się, że to działa, jednak nie mogę już zaznaczać tekstu w panelach. Czy ktoś jeszcze ma ten problem?
will.fiset
64

Krótkie podsumowanie dla każdego, kto teraz traci rozum:

https://github.com/tmux/tmux/blob/310f0a960ca64fa3809545badc629c0c166c6cd2/CHANGES#L12

więc to tylko

 :setw -g mouse
użytkownik5481608
źródło
1
Lub jeśli chcesz go na zawsze, po prostu dodaj set -g mousew ~/.tmux.conf. Trzeba jednak pamiętać, że utrudni to kopiowanie / wklejanie tekstu do terminala za pomocą myszy (jestem pewien, że istnieje sposób - po prostu sam tego nie sprawdziłem).
JM Janzen
36

to powinno działać:

setw -g mode-mouse on

następnie zasób, a następnie plik konfiguracyjny

tmux source-file ~/.tmux.conf

lub zabij serwer

locojay
źródło
Użyłem włączonej myszy -g, a podane polecenie pliku źródłowego działało idealnie.
gospelslide
19

Wklej tutaj w ~ / .tmux.conf

set -g mouse on

i uruchomić na terminalu

tmux source-file ~/.tmux.conf
Tran Quoc Vuong
źródło
Dzięki, pracował dla byobu - wersja byobu wersja 5.73 tmux 2.5, podczas gdy powyższe sugestie nie.
Thomas
15

Jak powiedział @ Graham42, od wersji 2.1 zmieniono nazwę opcji myszy, ale możesz używać myszy z dowolną wersją tmux, dodając to do ~ / .tmux.conf:

Pociski Bash :

is_pre_2_1="[[ $(tmux -V | cut -d' ' -f2) < 2.1 ]] && echo true || echo false"
if-shell "$is_pre_2_1" "setw -g mode-mouse on; set -g mouse-resize-pane on;\
      set -g mouse-select-pane on; set -g mouse-select-window on" "set -g mouse on"

Pociski Sh (skorupa Bourne'a):

is_pre_2_1="tmux -V | cut -d' ' -f2 | awk '{print ($0 < 2.1) ? "true" : "false"}'"
if-shell "$is_pre_2_1" "setw -g mode-mouse on; set -g mouse-resize-pane on;\
      set -g mouse-select-pane on; set -g mouse-select-window on" "set -g mouse on"

Mam nadzieję że to pomoże

Alejandro Blasco
źródło
1
Dziękuję Ci! Mam tmux.conf w git i regularnie używam maszyn ze starszą wersją tmux ...
Seb
idea tej odpowiedzi jest genialna! ... i może również pomóc w przypadku style-opcji fg-, bg- i attrmetabolizm w tmux 2.9 . ale to nie działa, ponieważ przynajmniej moja powłoka odmawia porównania liczb zmiennoprzecinkowych ... a jeśli twoja lokalizacja używa czegoś innego niż .zmiennoprzecinkowy, musisz również obejść ten problem.
DJCrashdummy
@DJCrashdummy Jaka jest wydajność tmux -V | cut -d ' ' -f2twojej powłoki?
Alejandro Blasco
1
Uwaga: w systemie Ubuntu 19.10 wersja to tmux 2.9a. Więc tmux -V | sed -E 's/tmux ([0-9.]*).*$/\\1/;'parsowałem to bardziej solidnie.
autra
1
Uwaga: przynajmniej dla mnie na Ubuntu 18.04, nawet jeśli /bin/shjest to Bash, potrzebuję składni Sh , prawdopodobnie dlatego, że Bash wchodzi w tryb POSIX
philb
1

Spróbuj tego. Działa na moim komputerze.

set -g mouse on
koliber
źródło
1

Nadal możesz używać diabelskiej logiki ustawiania opcji w zależności od aktualnej wersji Tmux: patrz moja poprzednia odpowiedź .

Ale od Tmux v1.7 set-optiondodaje „-q”, aby wyciszyć błędy i nic nie drukować (patrz dziennik zmian ). Polecam użyć tej funkcji, jest bardziej czytelna i łatwa do rozszerzenia.

Dodaj to do ~/.tmux.conf:

# from v2.1
set -gq mouse on
# before v2.1
set -gq mode-mouse on
set -gq mouse-resize-pane on
set -gq mouse-select-pane on
set -gq mouse-select-window on

Przywróć tmux lub source-fileswój nowy.tmux.conf


Uwaga dodatkowa: Jestem otwarty na usunięcie mojej starej odpowiedzi, jeśli ludzie wolą tę

Alejandro Blasco
źródło