Введение
Многофайловый текстовый редактор
Sam — это многофайловый текстовый редактор, основанный на структурных регулярных выражениях. Он был первоначально разработан в начале 1980-х годов в Bell Labs Робом Пайком при участии Кена Томпсона и других разработчиков Unix для оконного терминала Blit, работающего под управлением Unix, а затем портирован на другие системы. Sam соответствует классической модульной эстетике Unix. Он прост в своей основе, а его мощность обеспечивается благодаря комбинируемости небольшого языка команд и возможности расширения через интеграцию с оболочкой.
Конструкция и особенности
Sam разработан как две синхронные программы: интерпретатор команд и графический интерфейс с окнами, ориентированный на использование мыши. Набор команд интерпретатора смоделирован по образцу редактора UNIX ed и может использоваться для управления редактором из стандартного текстового терминала. Однако по умолчанию Sam отображает собственное окно графического пользовательского интерфейса (GUI) – samterm, которое также позволяет выполнять операции указанием и щелчком мыши через всплывающие контекстные меню. Такая двухпроцессная структура позволяла Sam получать доступ к файлам на сетевых хост-системах посредством удаленного выполнения процесса доступа к файлам, при этом интерфейс окна работал локально, что позволяло избежать задержек при медленных соединениях. Samterm отображает окна для редактируемых файлов и постоянное окно команд, принимающее ввод в виде команд Sam. Большинство распространенных операций редактирования выполняются быстро и интуитивно понятно с помощью интерфейса "укажи и щелкни", который также функционирует внутри окна команд. Этот факт позволяет редактировать (и повторно отправлять) команды так же, как и любой другой текст – функция, унаследованная от терминального интерфейса DMD 5620.
Синтаксис команд
Синтаксис команд Sam формально похож на синтаксис ed или ex, включающий условные и циклические функции, основанные на (структурных) регулярных выражениях, и адресное обращение к областям, при этом разделяя с ed некоторые синтаксические конструкции для этих функций. Однако, в то время как команды ed ориентированы на строки, команды Sam ориентированы на выделенные фрагменты. Выделенный фрагмент – это непрерывная последовательность текста (которая может занимать несколько строк), определяемая либо с помощью мыши (путем выделения области текста), либо по шаблону. Команды Sam принимают такие выделенные фрагменты как базовые, подобно тому, как другие инструменты Unix обрабатывают строки; таким образом, Sam так же естественно работает с многострочными и подстрочными шаблонами, как ed, vi, AWK, Perl и т. д. – с шаблонами, охватывающими целые строки. Это реализовано посредством модели, называемой структурными регулярными выражениями, которая позволяет рекурсивно применять сопоставление с регулярными выражениями для получения других (под)фрагментов внутри заданного выделенного фрагмента. Таким образом, набор команд Sam может быть применен к подстрокам, идентифицированным произвольно сложным контекстом. Sam расширяет свой базовый набор команд редактирования текста для работы с несколькими файлами, предоставляя аналогичные условные и циклические команды для указания имен файлов. Любая последовательность команд редактирования текста может быть применена как единое целое к каждой такой спецификации.
Бесконечные разборки
Сэм был одним из первых текстовых редакторов, поддерживающих "бесконечную" отмену для исправления любого количества ошибок редактирования. Эта функция, в сочетании с возможностью Сэма легко редактировать собственные команды и, что принципиально важно, его небольшим и ортогональным набором команд (содержащим всего 33 команды), отражает предпочтение программы низкому порогу освоения по сравнению с другими, более мощными и функциональными редакторами.
Поддерживающие
Сэм – предпочтительный текстовый редактор для ряда выдающихся программистов. Это был первый полноэкранный редактор, который пришелся по вкусу Кену Томпсону. Сэм используют Бьярне Строуструп, Брайан Керниган, Дуглас МакИлрой и Том Дафф. Другие, такие как Деннис Ричи, Роб Пайк и Расс Кокс, перешли на acme – редактор с тем же языком команд, что и sam, но с набором дополнительных возможностей, включая управление мышью аккордами и автоматическое размещение открытых файлов в окнах. Последняя версия sam была разработана в составе операционной системы Plan 9, однако существуют порты для Microsoft Windows, macOS и X Window System.