Как отключить «прокрутку истории» в iTerm2

291

Я установил новый iTerm 2. Он спросил меня в желтой полосе вверху, хочу ли я включить функцию мыши. К сожалению, я не помню точное предложение больше.

Случайно я одобрил. Теперь, когда я использую колесо прокрутки мыши в iTerm, оно больше не прокручивает вверх, а вместо этого запускает историю команд. Как если бы я нажал на курсор вверх.

Я не мог найти правильные настройки, чтобы выключить это снова. Кто-нибудь знает, где я могу переключить эту опцию?

Спасибо за помощь!

Гамбо
источник
4
Я предполагаю, что вы используете iTerm2.9, и вы увидели сообщение «Хотите, чтобы колесо прокрутки перемещало курсор в интерактивных программах, подобных этой?». Однако я не могу найти интерфейс для его переключения, у вас все еще есть эта проблема?
sel-fish
1
Да, но только когда я вошел на сервер через ssh. Я не знаю, как это может быть связано.
Гамбо
«только когда я вошел на сервер через ssh», вы имеете в виду, что когда вы используете iTerm2 для локальных операций, этого не произойдет? Используете ли вы другой «профиль» при входе на сервер через ssh?
sel-fish
Для включения и выключения альтернативного экрана должен быть отправлен управляющий символ терминала. Я думаю, что лучше в долгосрочной перспективе (не специфично для iTerm2 или vim или менее) узнать, что это за управляющий персонаж. Это может быть ESC [ ? 1 0 4 9 lили ESC [ ? 1 0 4 7 lили ESC [ ? 47 l( gnu.org/software/screen/manual/html_node/Control-Septions.html )
dlamblin
2
это только начало происходить случайно для меня .. расстраивает, когда вы пытаетесь просмотреть журналы
SgtPooki

Ответы:

494

Некоторые терминалы, в том числе iTerm2, имеют функцию, которая изменяет поведение мыши с колесиком при запуске полноэкранной программы, например vi, или, screenили tmux. Это происходит, когда эти программы используют альтернативный экран , чтобы обеспечить полезную функцию. Обычно при использовании альтернативного экрана в iTerm2 мышь с колесиком действует как полоса прокрутки, прокручивая весь экран вверх / вниз. Но когда эта функция включена, iTerm2 отправляет курсорные клавиши вверх / вниз, внося изменения в историю команд.

Как предлагается в другом комментарии, выберите меню « Настройки» :

введите описание изображения здесь

и в этом, выберите вкладку Advanced . Прокрутите вниз до раздела Мышь ,

введите описание изображения здесь

и переключить запись для

Колесо прокрутки отправляет клавиши со стрелками в режиме альтернативного экрана

от да к нет . Вам нужно будет перезапустить iTerm2, чтобы изменения вступили в силу. (С iTerm2 v3.1.5 изменения вступают в силу без перезапуска.)

Томас Дики
источник
2
Я проверил это перед написанием комментария - просто переключение опции было недостаточно.
Томас Дики
Может зависеть от версии. В 3.0.2 переключение определенно достаточно. Фактически, если вы находитесь в режиме альтернативного экрана, и этот параметр отключен, и вы пытаетесь (и не можете) прокрутить мышью и затем нажимаете клавишу со стрелкой вверх или вниз, вам будет предложено включить эту функцию прямо в окно терминала.
Джордж
3
3.0.12 не нужно перезапускать, чтобы это вступило в силу.
dhempler
21
// Мне нравится эта функция, и я использую ее в Vim. Как выйти из режима альтернативного экрана в данном окне терминала? ОБНОВЛЕНИЕ: В терминале, который находится в режиме альтернативного экрана, откройте программу терминала, которая активирует режим альтернативного экрана. Выйдите из этой программы чисто. Это временно заканчивает проблему. Я думаю, это указывает на то, что проблема была вызвана выходом из программы, которая необычным образом использовала функцию альтернативного экрана.
Натан Басанезе
7
Сэр, вы спасли меня от чистого безумия.
BK
60

Если вы оказались в ловушке в режиме истории прокрутки, вы можете выйти, запустив vi и выйдя напрямую. Вы также можете выбрать другую программу, которая использует альтернативный экран и выйти из нее напрямую.

Прокрутка истории колесиком мыши в теории никогда не происходит. Это происходит на практике, потому что иногда альтернативный режим экрана переключается неправильно. Принятый ответ решает проблему, отключая полезную функцию, а именно прокрутку в vi, less, ... с помощью колесика мыши или трекпада. Вы можете сохранить опцию из расширенных настроек:

Колесо прокрутки отправляет клавиши со стрелками в режиме альтернативного экрана

установить на да. Иногда вы будете в ловушке в режиме истории прокрутки. Но если вы знаете, как убежать, это не проблема.

Ортомала Локни
источник
2
Спасибо за совет! Это
выручило
1
Спасибо чувак! Но вход и выход из vi не помогли в моем случае по какой-то причине, но он работал после входа в man-страницу и выхода из нее, нажав q
Frax
1
Это было так полезно. Прокрутка внезапно добавлялась [[A^и [[B^к командной строке вместо прокрутки окна. Я знал, что это не нормальное поведение. До этого я оставлял компьютер nanoв оболочке SSH, которая отключалась, когда я закрывал свой ноутбук. Тот внезапный выход был, очевидно, виновником. Простое открытие новой вкладки в iTerm2 исправило это.
Колин Маршалл
К сожалению, при использовании screenвы не можете использовать этот трюк для выхода из режима альтернативного экрана. Так что, если вы используете screenмного (как я), отключение функции в целом спасает жизнь.
августа
Я предпочитаю этот ответ, потому что навигация в полноэкранных приложениях с помощью трекпада очень полезна, поэтому отключение этой функции в настройках не было для меня хорошим вариантом :) Спасибо за распространение этого
Патрик Феррейра
42

Возможно, вам просто нужно выйти из альтернативной консоли.

Пытаться: tput rmcup

otrejni
источник
1
Отличный ответ A + 💯
дпс
Гораздо лучший ответ - это позволяет вам прокручивать историю, все еще имея возможность прокручивать ее в vim. Спасибо!
JonLuca
10

Предпочтения: Дополнительно: Мышь: Колесо прокрутки отправляет клавиши со стрелками в альтернативном режиме.

Идиот
источник
2
У меня точно такая же проблема, описанная, но в новейшей мыши iTerm ее нет под Prefences: Advanced. Просто триггеры, умный выбор и семантическая история. Кто-нибудь знает какой-нибудь другой способ исправить это?
mikeLspohn
9

С iTerm2 вы также можете удерживать Option, используя колесо прокрутки для принудительной прокрутки окна, если вы хотите, чтобы колесо продолжало работать в vim.

Кайл Смит
источник
это работает, но как мне вернуться к подробностям, когда мне не нужно было удерживать клавишу выбора
meso_2600
2

Поведение, которое вы видите, является ожидаемым (и правильным) поведением на альтернативном экране. Единственная проблема, с которой вы столкнулись, это то, что вы попали в bash или что-то еще на альтернативном экране, возможно, при потере соединения или из-за убитого vim или менее. Например, вы были less +F /var/log/somethingи были отключены.

Вы видите, что кто-то уже написал, что tput rmcupкоманда выйдет на главный экран.

Я также пошел дальше и посмотрел некоторые символы управления терминалом. Это может быть любой из: ESC [ ? 1 0 4 9 lили ESC [ ? 1 0 4 7 lили ESC [ ? 47 l(gnu.org/software/screen/manual/html_node/Control-Septions.html) с предпочтением первого.

Я в целом успешен в iTerm2, и на echo -e '\e[?1049l'самом деле мне не rmcupлегче вспомнить, восстановить память консоли?

dlamblin
источник
1

У меня была такая же проблема, и ни одно из решений, которые я прочитал и попробовал, не сработало. Что исправило мою проблему, так это отключив Secure Keyboard Entry, и теперь, когда я использую мышь для прокрутки в ssh и в терминальном режиме в macOS 10.13, это работает так, как я этого ожидаю!

Стан
источник