Как стать автором
Обновить

Мой любимый редактор acme

Время на прочтение3 мин
Количество просмотров25K
Еще один редактор? Я пользуюсь Vim в SSH сессиях, благо он гарантированно присутствует в любой инсталляции Linux. Мне нравится SublimeText уникальной способностью multiselect. Я иногда открываю emacs, чтобы прикоснуться к вечности и в полной мере ощутить свою никчемность.
acme у меня открыт постоянно, под катом агитация с картинками.
Это Гленда

image
Здесь можно разглядеть почтовый ящик, IRC канал, сессию SHELL, интерактивный словарь Миллера, проверку правописания по нему и содержимое файловой директории.
image
На этой картинке видно открытый файл исходников .go, autocompletion и поиск определения функции.
История
Редактор acme был написан Rob Pike, как визуальная среда программирования для операционной системы Plan9, экспериментальной ветви Unix в bell-labs. Это наследник редактора Sam того же автора. Оба редактора были портированы.
Из сановитых пользователей Sam и acme
Ken Thompson разработчик Unix и еще много чего
Brian Kernighan из K&R (Керниган и Риччи «Язык программирования C»)
Tom Duff из звездных войн
Bjarne Stroustrup разработчик С++
Dennis Ritchie из K&R
Rob Pike кроме acme разработчик unicode архитектор языка Go
Russ Cox ведущий разработчик Go в команде Google
Управление
В acme нет горячих клавиш (за исключением системных) и нет выпадающих меню. Здесь, я бы сказал, что увижу то пою. Любой фрагмент текста в любом окне acme может быть исполнен как команда просто средней кнопкой мыши, если только он исполняем.
При этом данными на вход может быть подан фрагмент из другого окна выделенный левой кнопкой мыши.
Если фрагмент может служить адресом (например в формате /директория/файл/: строка: позиция, общепринятом для компиляторов, дебаггеров, линтеров, клонов grep вроде akk, ag) то адрес открывается правой кнопкой мыши, скажем `http://… адрес открывается в браузере.
Встроенные команды и адрес буфера отображенного в окне представлены в панели над окном отличающейся цветом. Во многом это не более чем договоренность, вы вольны писать в панели что заблагоразсудится и писать команды где угодно. Все только текст. И все только файл, очень Unixy.
Собственно редактирование
Edit 0,$ x/^.*Plan9/ g/nice/ {
 |tr a-z A-Z
 a/oops
 }

Встроенная команда Edit имеет синтаксис близкий к ed, sed, awk но различия есть. Все перечисленные утилиты и grep строчно-ориентированы. Для acme строка не является значимой единицей. acme 100% UTF8, Приведенный пример
0,$ принимает в разбор текст с первой по последнюю позицию
x/ разбивает текст на фрагменты такие, что каждый
^ начинается с началом строки
.* потом что попало сколько угодно раз
Plan9 заканчивается на Plan9
/ g/ и если фрагмент
nice содержит nice, то
/{ на фрагменте параллельно выполняются операторы
|tr a-z A-Z пропустить через системную увеличилку tr
a/oops дописать oops
}
И вот такого рода манипуляции я проводил с вышеупомянутым словарем Миллера весом 40Mb в визуальном режиме с произвольно далеким Undo, включая Undo после сохранения Put файла. SublimeText минут пять только открывал мне этот словарь, съел всю доступную память и впал в глубокую задумчивость.
Удаленный доступ

Я могу:
  • импортировать файловую структуру сервируемую 9P сервером (к примеру sources.cs.bell-labs.com) в свое адресное пространство и, если понадобится замонтировать в свою файловую структуру
  • импортировать 9P cpu сервер
  • запустить серверную часть acme на удаленном nix сервере, а клиентскую на локальной машине
  • ssh, scp, sftp, sshfs удаленный ресурс или сервис, как обычно

Во всех сценариях окна acme будут выглядеть и вести себя единообразно, разумеется с легким подтормаживанием.
Расширение
acme может служить консолью ко всему, что производит или потребляет текст. Программное управление окнами acme может осуществляться посредством модификации контролирующих файлов сервируемых acme для каждого своего окна протоколом 9P. Любой 9P клиент может управлять окнами acme. Реализации протокола существуют для многих языков, в том числе Bash. Я пользуюсь Go.
Ресурсы
Статья автора изделия pdf Роб Пайк.
Презентация правоприемника видео Русс Кокс.
Фан-клуб
Где взять для nix систем
для windows
P.S. Пост в хабе Go оттого, что архитекторы языка — авторы Plan9. База кода компилятора и среды исполнения языка процентов на 70-80 из репозитария Plan9 (он в сущности не зависит даже от libc, кроме net/http стека), то же в отношении идей и концепций. Работать с инструментами разработки go tools в среде acme — одно удовольствие, они проектировались в одной традиции одними авторами. acme и Plan9 в целом вдохновляющее свидетельство состоятельности простых и ясных подходов на тот случай, когда одолевает «ну когда Go приделают generic и почему он не обгоняет JVM». И еще Go имеет самую полноценную реализцию протокола 9P.
Теги:
Хабы:
+23
Комментарии25

Публикации

Изменить настройки темы

Истории

Работа

Go разработчик
128 вакансий

Ближайшие события