Прокрутка в терминале (OS X) при запуске tail -f и ssh-ed на машине выдает какие-то странные символы

Прокрутка в терминале (OS X) при запуске tail -f и ssh-ed на машине выдает какие-то странные символы

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

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

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

решение1

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

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

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

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

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

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

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

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

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

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

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

решение2

Я изменил эмуляцию терминала на vt100 с xterm-256color. Я сделал это в Preferences => Profile => Advanced "Declare Terminal as:" выпадающий список.

Связанный контент