Kodomo

Пользователь

Screen

Режимы терминала

В догонку к теме интерактивного режима шелла, а, на самом деле, даже и к теме про терминалы.

На какой-то стадии развития UNIX возникла идея, что за возможности редактирования вводимой строки, хранения истории, поиска дополнений и т.п. должен отвечать терминал, а не программа, взаимодействующая с пользователем.

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

Среди прочих управляющих последовательностей, и текстовые редакторы (включая vi), и шелл, как правило воспроизводят и эти ровно в том же смысле. Более того, их воспроизводят и формы для редактирования текста в большинстве графических библиотек (хотя в графических программах всё же часто встречаются и другие значения этих кнопок). Поэтому можно считать, что эти кнопкосочетания работают почти везде.

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

Screen

screen – это виртуальный терминал с большим количеством приятностей. Основная идея работы со screen такая: вы соединяетесь с удалённой машиной (один раз), запускаете screen и внутри одного сеанса screen запускаете несколько терминалов и работаете с ними как хотите: переключаетесь между ними, ищете по истории, показываете несколько терминалов в одном окне, ...

Начнём от простого к сложному.

Мы будем использовать для кнопкосочетаний те же обозначания, которые используются в руководстве по screen. C-a c обозначает такую последовательность нажатий: нажать ctrl-a, отпустить ctrl-a, нажать c, отпустить c. (Для удобства для большинства сочетаний C-a x обычно бывает сочетание {{{C-a C-x}}}, которое делает то же самое; т.е. вам часто будут прощать ошибку, если вы забыли отпустить ctrl).

Создание окон и переключение между ними

screen запускается, собственно, командой screen.

Первое, что вы видите после запуска screen – это лицензионное соглашение, а далее – обычный шелл, как если бы вы просто запустили шелл. screen позволяет вам иметь в одном сеансе несколько шеллов рядом.

Самые ключевые команды в screen1:

Способность отсоединиться

FIXME

screen -r -d screen -ls

Память терминала

Когда вы работаете в терминале, вы привыкли иметь рядом с терминалом полоску прокрутки (scrollbar), с помощью которой вы можете посмотреть уползшую за пределы видимости часть вашего диалога с системой. (Эту уползшую вверх часть называют scrollback).

Так как screen ничего не знает ни о вашей мышке, ни, тем более, о полоске прокрутке вашего окна терминала, то для работы со scrollback в нём сделали специальный режим: называется он режимом копирования.

Навигация в режиме копирования по возможности близко копирует навигацию в vi с небольшими отличиями:

В этом режиме у screen есть одно сильно неприятное свойство: он не допускает опечаток. Т.е. если вы нажали что-то не то, то screen выбросит вас из режима копирования (и в следующий раз придётся заново искать то место, на которое вы смотрели). Я не могу вам предложить какого-нибудь готового способа бороться с этой особенностью.

Copy & paste

FIXME

Нажатие enter в режиме копирования начинает выделение, второе нажатие enter завершает выделение, копирует выделенный текст, и завершает режим копирования.

Multiuser

FIXME

Полезные мелочи

FIXME

FIXME

FIXME

FIXME

~/.screenrc:

Нужно заметить, что на самом деле я ещё ни разу не прочитал документацию по screen полностью. Поэтому на самом деле, я пользуюсь далеко не всеми возможностями screen, которые у него есть:

И я, наверное, довольно много чего упустил.

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

gobby

FIXME

Отдельное: о русском языке в vim

FIXME

  1. Здесь и далее речь идёт о screen в настройках по умолчанию. screen можно настроить так, чтобы все команды выглядели совсем по-другому. (1)