Я разрабатываю инструмент для совместного использования терминальной сессии несколькими пользователями.
Поэтому мой инструмент наращивает pty, запускает оболочку и отображает свой ввод / вывод в PTY.
stdin / Затем stdout сопоставляется с pty.
При запуске и изменении размера окна терминала PTY получает системный вызов TIOCGWINSZ с новыми размерами.
Теперь я хотел бы сохранить последнюю строку на моем терминале можно свободно отображать пользовательский интерфейс / строку состояния.
Сокращение количества строк в вызове TIOCGWINSZ на 1 кажется полуработающим.
Для демонстрационных целей я устанавливаю размер в TIOCGWINSZ, чтобы он всегда был быть 80x23
Теперь, когда запускается bash, на самом деле он не ограничен 23 строками, как я надеялся.
При запуске vim сам vim придерживается размера - что приятно.
Но после выхода из vim bash теперь ограничено 80х23?
Работает до тех пор, пока размер терминала не изменяется, после этого bash снова использует полный размер терминала.
См .: https://asciinema.org/a/IXz2e0ni2ASPQcYpvcze8TePK
Что Vim делает там, чтобы ограничить «размер терминала»? Какая-то магическая escape-последовательность?
И так как это, вероятно, хак, - какое было бы правильное решение, особенно если я не только хочу, чтобы в конце была запасная строка, но чтобы весь вывод отображался с заданным значением c смещение с указанным размером c, например, как у панелей tmux?