Jak mogę wyłączyć „przewijanie historii” w iTerm2

290

Zainstalowałem nowy iTerm 2. Zapytał mnie na żółtym pasku u góry, czy chciałbym włączyć funkcję myszy. Niestety nie pamiętam już dokładnego zdania.

Przez przypadek zgodziłem się. Teraz, gdy korzystam z kółka przewijania myszy w iTerm, nie przewija ono już w górę, ale zamiast tego uruchamia historię poleceń. Jakbym nacisnął kursor w górę.

Nie mogłem znaleźć odpowiednich ustawień, aby ponownie to wyłączyć. Czy ktoś wie, gdzie mogę przełączyć tę opcję?

Dzięki za pomoc!

Gambo
źródło
3
Zakładam, że używasz iTerm2.9, a komunikat, który zobaczyłeś, brzmi: „Czy chcesz, aby kółko przewijania przesuwało kursor w takich interaktywnych programach?”. Jednak nie mogę znaleźć interfejsu do przełączania go, czy nadal masz problem?
sel-fish
1
Tak, ale tylko wtedy, gdy jestem zalogowany do serwera przez ssh. Nie wiem, jak to można połączyć.
Gambo,
„tylko wtedy, gdy jestem zalogowany do serwera przez ssh”, masz na myśli, że kiedy używasz iTerm2 do operacji lokalnych, to się nie stanie? Czy używasz innego „profilu”, gdy „logujesz się do serwera przez ssh”?
sel-fish
Musi być wysłany znak kontrolny terminala, aby włączyć lub wyłączyć ekran alternatywny. Myślę, że lepiej jest w dłuższej perspektywie (nie dotyczy iTerm2 lub vim lub mniej) dowiedzieć się, czym jest ta kontrolna postać. Może to być ESC [ ? 1 0 4 9 lalbo ESC [ ? 1 0 4 7 lalbo ESC [ ? 47 l( gnu.org/software/screen/manual/html_node/Control-Sequences.html )
dlamblin
2
to właśnie zaczęło się dla mnie losowo .. frustrujące, gdy próbujesz przeglądać logi
SgtPooki

Odpowiedzi:

493

Kilka terminali, w tym iTerm2, mają cechę gdzie zmienić zachowanie myszy koła, gdy program pełnoekranowy, takich jak vi, lub screenczy tmuxjest uruchomiony. Dzieje się tak, gdy programy te używają alternatywnego ekranu , aby zapewnić użyteczną funkcję. Zwykle podczas korzystania z alternatywnego ekranu w iTerm2 mysz kółka działa jak pasek przewijania, przewijając cały ekran w górę / w dół. Ale gdy ta funkcja jest włączona, iTerm2 wysyła klawisze kursora w górę / w dół, zmieniając historię poleceń.

Jak sugerowano w innym komentarzu, wybierz menu Preferencje :

wprowadź opis zdjęcia tutaj

i w tym wybierz kartę Zaawansowane . Przewiń w dół do sekcji Mysz ,

wprowadź opis zdjęcia tutaj

i przełącz pozycję na

Kółko przewijania wysyła klawisze strzałek w trybie alternatywnego ekranu

od Tak do Nie . Będziesz musiał ponownie uruchomić iTerm2, aby zmiana zaczęła obowiązywać. (W iTerm2 v3.1.5 zmiany wchodzą w życie bez ponownego uruchamiania.)

Thomas Dickey
źródło
2
Przetestowałem to przed napisaniem komentarza - samo przełączanie opcji nie wystarczyło.
Thomas Dickey,
Może zależeć od wersji. W 3.0.2 przełączanie jest zdecydowanie wystarczające. W rzeczywistości, jeśli jesteś w trybie alternatywnego ekranu, a to ustawienie jest wyłączone i próbujesz (i nie udaje się) przewijać myszą, a następnie naciskać klawisz strzałki w górę lub w dół, zostaniesz poproszony o włączenie tej funkcji w prawo w okno terminala.
George
3
3.0.12 nie musi być ponownie uruchamiany, aby to zadziałało.
dhempler
21
//, podoba mi się ta funkcja i używam jej w Vimie. Jak wyjść z alternatywnego trybu ekranu w danym oknie terminala? AKTUALIZACJA: W terminalu, który jest w trybie alternatywnego ekranu, otwórz program terminala, który aktywuje tryb alternatywnego ekranu. Zamknij program dokładnie. To tymczasowo kończy problem. Myślę, że to wskazuje, że problem został spowodowany przez wyjście z programu, który używał funkcji alternatywnego ekranu w niecodzienny sposób.
Nathan Basanese
6
Sir, uratowałeś mnie od czystego szaleństwa.
BK
60

Jeśli jesteś pułapką w trybie historii przewijania, możesz uciec, uruchamiając vi i wyjść bezpośrednio. Możesz także wybrać inny program korzystający z alternatywnego ekranu i wyjść bezpośrednio.

Przewijanie historii za pomocą kółka myszy teoretycznie nigdy nie powinno się zdarzyć. Zdarza się to w praktyce, ponieważ czasami alternatywny tryb ekranu nie jest prawidłowo przełączany z powrotem. Przyjęta odpowiedź rozwiązuje problem, dezaktywując przydatną funkcję, a mianowicie przewijanie w vi, mniej, ... za pomocą kółka myszy lub gładzika. Możesz zatrzymać tę opcję w zaawansowanych ustawieniach:

Kółko przewijania wysyła klawisze strzałek w trybie alternatywnego ekranu

ustawione na tak. Czasami będziesz uwięziony w trybie historii przewijania. Ale jeśli wiesz, jak uciec, to nie jest problem.

Ortomala Lokni
źródło
2
Dzięki za radę! To mi pomogło :)
jj172
1
Dzięki! Ale wchodzenie i wychodzenie z vi nie pomogło w moim przypadku z jakiegoś powodu, ale zadziałało po wejściu na stronę podręcznika i wyjściu z niej poprzez naciśnięcie q
Frax
1
To było bardzo pomocne. Przewijanie było nagle dodawane [[A^i [[B^do wiersza poleceń zamiast przewijania okna. Wiedziałem, że to nie jest normalne zachowanie. Wcześniej pozostawiłem komputer w nanopowłoce SSH, która rozłączyła się po zamknięciu laptopa. To nagłe wyjście było oczywiście winowajcą. Po prostu otwarcie nowej karty w iTerm2 naprawiło to.
Colin Marshall
Niestety podczas screenkorzystania z tej sztuczki nie można wyjść z trybu alternatywnego ekranu. Więc jeśli używasz screendużo (jak ja), całkowite wyłączenie tej funkcji jest ratowaniem życia.
mvreijn
Wolę tę odpowiedź, ponieważ bardzo przydatne jest nawigowanie w aplikacjach pełnoekranowych za pomocą gładzika, więc wyłączenie funkcji w preferencjach nie było dla mnie dobrą opcją :) Dziękuję za udostępnienie tej wskazówki :)
Patrick Ferreira
42

Prawdopodobnie musisz po prostu wyjść z alternatywnej konsoli.

Próbować: tput rmcup

otrejni
źródło
1
Świetna odpowiedź A + 💯
dps
Znacznie lepsza odpowiedź - pozwala przewijać historię, jednocześnie będąc w stanie przewijać w vimie. Dzięki!
JonLuca
10

Preferencje: Zaawansowane: Mysz: kółko przewijania wysyła klawisze strzałek w trybie alternatywnym

Idiota
źródło
2
Mam opisany dokładnie ten sam problem, ale w najnowszej myszy iTerm nie ma opcji Prefences: Advanced. Tylko wyzwalacze, inteligentny wybór i historia semantyczna. Czy ktoś zna inny sposób, aby to naprawić?
mikeLspohn
9

Z iTerm2 możesz również przytrzymać Option podczas używania kółka do przewijania okna, aby wymusić przewijanie okna, w przypadku, gdy chcesz, aby kółko kontynuowało pracę w vimie.

Kyle Smith
źródło
to działa, ale jak wrócić do detault, kiedy nie musiałem przytrzymywać klawisza opcji
meso_2600
2

Zachowanie, które widzisz, jest oczekiwanym (i poprawnym) zachowaniem na alternatywnym ekranie. Jedynym problemem, jaki masz, jest to, że wpadłeś na bash lub cokolwiek innego, na alternatywnym ekranie, być może podczas utraty połączenia lub z zabitego vima lub mniej. EG byłeś w środku i zostałeś less +F /var/log/somethingrozłączony.

Widzisz, że ktoś już napisał, że tput rmcuppolecenie przejdzie do ekranu głównego.

Poszedłem też dalej i poszukałem znaków kontrolnych terminalu. Może to być dowolny z: ESC [ ? 1 0 4 9 llub ESC [ ? 1 0 4 7 llub ESC [ ? 47 l(gnu.org/software/screen/manual/html_node/Control-Sequences.html) z preferencją do pierwszego.

Generalnie odnoszę sukcesy w iTerm2 echo -e '\e[?1049l', ponieważ nie znajduję rmcupłatwiejszego do zapamiętania, przywrócenia pamięci konsoli ?.

dlamblin
źródło
1

Miałem ten sam problem i żadne z rozwiązań, które przeczytałem i wypróbowałem, nie zadziałało. Tym, co naprawiło mój problem, było wyłączenie Bezpiecznego wpisywania klawiatury, a teraz, gdy używam myszy do przewijania w ssh iw trybie terminalowym w systemie MacOS 10.13, działa tak, jak tego oczekuję!

Stan
źródło