1

Я хочу полностью "очистить" панель tmux. Когда я делаю что-то вроде

bind-key C send-keys "clear && tmux clear-history" \; send-keys "Enter" 

предложенный в https://stackoverflow.com/questions/10543684/how-can-i-clear-scrollback-buffer-in-tmux, я могу очистить буфер прокрутки и получить чистый экран.

Однако когда я выполняю Shift+PageUp и Shift+PageDown, я могу видеть предыдущий вывод самого эмулятора терминала (не tmux). Обычно вы можете выполнить команду reset чтобы очистить историю прокрутки эмулятора терминала.

Можно ли reset эмулятор терминала из tmux? Вместе с вышеприведенным прокруткой понятно?

Предлагаются следующие варианты решения проблемы:

1) Чтобы сохранить Urxvt.saveLines: 0 или запустить Urxvt -sl 0 - это логично, поскольку вам не нужен прокрутка эмулятора терминала, если вы находитесь в tmux.

2) Отсоедините, перезагрузите и снова присоедините tmux - это кажется громоздким.

1 ответ1

1

Вам нужен printf "\033c" > $client_tty , где $client_tty - это TTY, на котором работает клиент tmux. \033c - escape-последовательность для команды сброса ANSI.

Вы можете перечислить всех подключенных клиентов с их TTY с помощью tmux list-clients . Ограничьте его конкретным сеансом с -t $session_name и выводом только TTY с -F '#{client_tty}' . Таким образом, чтобы сбросить все подключенные клиенты tmux, вам нужно что-то вроде:

for client_tty in $(tmux list-clients -F '#{client_tty}'); do
    printf "\033c" > $client_tty
done

Вы также захотите выполнить tmux refresh на всех клиентах, которые вы сбросили таким образом, чтобы восстановить tmux в его обычное состояние.

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