1

Я ssh-ed на удаленной машине и запускаю tail -f . Каждый раз, когда я перемещаюсь вверх / вниз с помощью трекпада, он выдает некоторые странные символы, такие как

OB^[OB^[OB^[OB^[OB^[OOB^[OB^[OB^[OB^[OB^[O

Раньше такого не было, и я не буду прокручивать страницу, чтобы увидеть предыдущие журналы. Почему это происходит, и как я могу отключить это?

2 ответа2

9

TL; DR: проверьте настройки меню Вид-> Показать / Скрыть альтернативный экран. Возможно, вы находитесь в "режиме альтернативного экрана". Или попробуйте использовать клавишу SHIFT при прокрутке, чтобы получить другое поведение прокрутки.

^[ является печатным представлением Control-leftbracket, AKA escape-символа. Infocmp показывает, что ^[OB - escape-последовательность xterm для клавиши со стрелкой вниз (^[OA - последовательность со стрелкой вверх). Терминал эмулирует xterm и переводит прокрутку мыши в последовательности клавиш со стрелками.

Я нашел некоторые прошлые обсуждения использования мыши в Терминале:

Но они все о предыдущих версиях OSX, и кажется, что Терминал изменился в этой области с течением времени. В этой статье рассказывается о том, как это работает в Yosemite, но немного о технических деталях. Остальное это то, что я нашел, играя с Терминалом в Йосемити.

Терминал имеет два режима работы с мышью:

  1. В одном режиме прокрутка заставляет терминал прокручивать окно просмотра, поэтому вы можете видеть буфер обратной прокрутки терминала (строки, которые прокручивались в верхней части экрана). Вы получаете полосу прокрутки OSX при прокрутке терминала.
  2. В другом режиме прокрутка заставляет терминал отправлять последовательности стрелок вверх и стрелок вниз. Надеюсь, что программа, запущенная в терминале, сможет с ними справиться.

Вы можете временно переключаться между режимами, удерживая SHIFT во время прокрутки. Например, пока терминал отображает командную строку, прокрутка прокручивает окно терминала, а Shift-scroll прокручивает историю команд bash.

Терминал также предоставляет функцию, называемую альтернативным экраном. Полноэкранные программы, такие как vim или less могут переключать терминал на альтернативный экран для отображения своего собственного контента. При выходе из такой программы терминал переключается обратно на главный экран. Я упоминаю об этом, потому что поведение прокрутки терминала может измениться на альтернативном экране.

Обычно поведение 1-й прокрутки является основным, и вы должны нажать SHIFT, чтобы получить 2-е поведение. Но зайдите в Терминал-> Настройки-> Профили-> Клавиатура. Внизу есть флажок с надписью "Прокрутка альтернативного экрана". Если этот флажок установлен, то на другом экране поведение прокрутки меняется на противоположное. Если этот флажок установлен, 2-й режим прокрутки становится стандартным для альтернативного экрана, и вы должны нажать SHIFT, чтобы получить 1-й режим.

Так, например, из командной строки прокрутка мыши позволяет увидеть буфер обратной прокрутки терминала. Но запустите vim для редактирования файла, он переключается на альтернативный экран, и внезапная прокрутка мыши перемещает курсор. Что именно вы хотите внутри vim.

Приступая к вашей проблеме, похоже, что ваш терминал отображает альтернативный экран. Есть пункт меню для переключения (Вид-> Показать / Скрыть альтернативный экран). Или то, что вы используете, переводит терминал в режим альтернативного экрана. Может быть, вы используете screen или tmux или что-то подобное? В качестве обходного пути вы можете попробовать использовать клавишу SHIFT, чтобы получить желаемое поведение при прокрутке. Или вы можете снять этот флажок.

1

Я изменил эмуляцию терминала на vt100 с xterm-256color. Я сделал это в раскрывающемся меню Предпочтения => Профиль => Дополнительно «Объявить терминал как:».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .