Мультиплатформенный текстовый редактор FTE

FTE (Folding Text Editor)

Автор: Александр Бельченко
Дата: 24 апреля 2006
Версия: 1.1.2
Данная заметка написана в знак благодарности Сергею Пинигину, который помог мне второй раз познакомиться с редактором FTE и помог (и до сих пор помогает) разобраться с тонкостями его использования.

О текстовых редакторах и профессии программиста

В жизни программистов, в том числе и тех, кто пишет программы для микроконтроллеров, большое значение играет среда разработки. Часто — это какая-нибудь IDE (интегрированная среда разработки), включающая в себя редактор, компилятор, отладчик и вспомогательные инструменты. Два главных инструмента, с которыми программисты имеют дело постоянно — это текстовый редактор и отладчик. Третьим немаловажным инструментов в последние годы стал веб-браузер для поиска информации и общения с коллегами в форумах.

Но я сегодня хочу поговорить именно о текстовых редакторах. Выбор текстового редактора — когда случайный, когда целенаправленный, — косвенным образом влияет на то, что и как напишет программист. Несмотря на то, что по статистике за написанием кода программист проводит лишь 30% своего рабочего времени, выбор инструмента для написания кода — это весьма серьезная задача. Которую серьезный программист не оставляет на волю случая, а долго и упорно старается найти инструмент "по руке".

Редакторы, встроенные в IDE, как правило, проигрывают по набору имеющихся функций каким-нибудь навороченным специализированным редакторам для программистов. Хотя в свете сегодняшней тенденции и моды на Eclipse, многие производители инструментальных средств закладывают в основу своих IDE именно упомянутый продукт, который уже снискал определенную славу и репутацию.

С другой стороны на рынке имеется множество платных и немного бесплатных редакторов для программистов, которые используются различными людьми. Редактор, предназначенный для программистов, должен иметь некоторые специфические функции, облегчающие повседневный труд программиста. Часто такие редакторы имеют узкоспециальную специфику, заточенную под конкретный язык программирования.

В двух словах о FTE

FTE (Folding Text Editor) — это мультиплатформенный текстовый редактор для программистов. Его отличительной особенностью является то, что он использует консольный интерфейс (что может показаться несколько странным и старомодным для типичных Windows-пользователей и программистов). На самом деле — это всего лишь вопрос вкуса и привычки.

Несмотря на то, что в его названии акцентировано внимание на поддержку так называемых Fold (складываемые участки текста), но возьму на себя смелость утверждать, что это не главное его достоинство.

Главным достоинством я все-таки назову его мультиплатформенность. Он портирован с Linux на разные операционные системы, включая OS/2, Windows, Cygwin. Открытые исходные коды подразумевают полную его доступность.

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

Отличительные черты и неоспоримые достоинства

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

Полная настраиваемость

В редакторе FTE все настраивается. Буквально всё. Для настройки используются текстовые конфигурационные файлы со своим встроенным языком. Причем отличительной особенностью является то, что весь доступ к внутренностям редактора осуществялется через набор так называемых макрокоманд. Комбинируя макрокоманды можно достичь требуемой функциональности.

Через конфигурационные файлы настраивается всё — подсветка синтаксиса, используемая цветовая схема, горячие клавиши, пункты главного меню и любого контекстного меню. Можно настроить даже политику редактора в отношении символов конца строк, индивидуально для разных типов файлов. Так например, все питоновые скрипты я редактирую только в режиме "использовать LF в качестве концовки строки" дабы обеспечить нормальную переносимость скриптов на линукс.

Конфигурационные файлы компилируются в специальный бинарный файл настроек, который уже и использует FTE в своей работе.

Частично столь широкий набор конфигурационых файлов заменяет функциональность макросов, реализуемую в других закрытых редакторах. Впрочем и в FTE существует подобная функциональность, когда некоторая комбинация символов автоматически расширяется в часто используемые синтаксические конструкции (например, ifx+пробел расширяется до Си-конструкции if () { } и т.д.)

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

Консольный интерфейс

Я отношу это к достоинствам редактора, потому что консольность сильно отличает этот редактор от его собратьев (и в чем-то роднит с редакторами, встроенными в консольные файловые менеджеры типа FAR и MC). Все операции можно (и часто удобно) делать через клавиатурный интерфейс — огромный набор горячих клавиш делает ненужным использование мыши. Впрочем, справедливости ради, стоит заметить, что поддержка мыши все же имеется. Хотя некоторые операции вам ни за что не сделать при помощи одной лишь мыши, но зато полная управляемость с клавиатуры — это один из пунктов, которые несомненно положительно влияют на продуктивность программиста.

Запуск внешних программ

Нажатием одной лишь клавиши F9 (меню Tools -> Compile) можно открыть приглашение для командной строки и запустить необходимую команду на выполнение. После запуска команды по F9 вывод запущенной программы будет захвачен FTE и отображен в специальном окне Messages (Сообщения). Разбор сообщений этого окна возложен на ряд регулярных выражений, которые, как вы уже догадались, задаются в конфигурационных файлах. Назначение таких регулярных выражений — определять строки с сообщениями об ошибках компиляции/трансляции. При этом программист подведя указатель к строке с нужным сообщением и нажав Enter сможет быстро перейти к нужному файлу и конкретно той строке, в которой была обнаружена ошибка компилятром.

Стандартно на F9 "висит" вызов make, что подразумевает определенный стиль работы. Однако, саму команду по умолчанию можно изменить в конфигурационных файлах (так я настроил, чтобы по умолчанию запускался scons). Кроме того, непосредственно перед запуском команды можно вручную изменить командную строку. FTE хранит историю запускавшихся команд, которую можно прокрутить при помощи клавиш "вверх" и "вниз". Во многом поведение этой командной строки имитирует поведение обычной командной строки в консоли, за что я ее и люблю.

Встроенный indent

Актуально для программистов, пишущих на Си/С++. FTE имеет встроенный indent, т.е. во время написания текста программы на Си FTE сам будет следить за соблюдением определенного стандарта на использование отступов. Опять же в конфигурационных файлах вы можете задать предпочитаемый вами стиль использования отступов.

Впрочем у этого встроенного indent есть маленький недостаток — FTE пытается применять правила отступов не только к коду, но и к комментариям и даже строковым константам, разбитым на несколько строк, что у меня лично вызывает легкое раздражение его "упорствами".

Список функций исходного файла

Очень удобная функция — это получить список функций исходного файла. Вызывается по нажатию Ctrl+I (меню Window -> Routines). Список функций определяется при помощи регулярных выражений, которые задаются в конфигурационных файлах (в индивидуальном файле настроек для данного типа исходников). Используя список функций, можно легко и удобно перемещаться по исходному тексту. Список функций хорошо работает как альтернатива Folds.

Поддержка тэгов

FTE имеет встроенную поддержку так называемых файлов с тэгами. Файлы с тэгами содержат специальную информацию, позволяющую легко находить те или иные определения в большом проекте, состоящем из множества файлов. Вам нужно найти определение функции или константы в большом Си-проекте? Поиск по файлам (например, через grep) выдаст вам все места, где еще встречается имя этой функции или константы. Но для облегчения поиска именно определений имен удобно пользоваться тегами. Скомпилируйте теги для вашего проекта при помощи, например, ctags, затем подведите курсор к интересующему имени и нажмите Ctrl+] (меню Search -> Tags -> Find word) и FTE загрузит теги (если еще не загрузил) и перейдет к нужному месту с определением данного имени. Нажатие Ctrl+[ вернет вас назад в исходную точку.

Очень удобная функция. По имеющимся сведениям поддержка тегов также имеется в редакторе UltraEdit32. И посольку эта фишка пришла из мира Unix, то и на основных линукс-редакторах она также должна присутствовать.

Поддержка работы с системами контроля версий

Отдельно хочется отметить встроенную поддержку систем контроля версий. В стандартной конфигурации поддерживается только CVS. Но благодаря титаническому труду Сергея Пинигина (не устаю говорить ему спасибо за это) сегодня имеется возможность также работать и с SVN. На базе SVN поддержки я настроил работу с моей любимой системой контроля версий bzr.

Встроенная поддержка контроля версий означает, что вы можете прямо из редактора (комфортно) выполнять типовые операции по контролю версий: проверять статус файлов или всего дерева проекта, смотреть различия (diff), добавлять, удалять файлы, фиксировать изменения.

Досадные недостатки

Многие недостатки являются продолжением тех или иных достоинств FTE, но отдельно хотелось бы упомянуть такие:

  • Отсутствие нормальной документации, описывающей настройки редактора
  • Отсутствие поддержки unicode
  • Нет понятия проекта
  • Нет поддержки печати на принтер в Windows
  • Множество мелких недочетов в логике реализации пользовательского интерфейса

И последний, возможно для кого-то весьма важный, недостаток: по сути разработка этого редактора прекращена и лишь отдельными энтузиастами, делаются отдельные доработки и узкоспециальные модификации.

Ссылки

Заключение

Этот обзор конечно же не полный. О чем-то я забыл упомянуть, что-то описал более подробно, чем следовало бы. Надеюсь на ваше понимание. Если вы считаете, что данный текст неполон или неточен — присылайте свои замечания и дополнения.

P.S.

Этот текст был мною написан в редакторе FTE, который был запущен на Линукс-машине через ssh-соединение, используя Cygwin (имитатор Linux), запущенный на Windows 2000.