TextMate — один из самых популярных текстовых редакторов для программистов на macOS. Включает готовые библиотеки макросов и фрагменты исходного кода или текста (сниппеты), пригодные для повторного использования для многих языков программирования.
TextMate | |||
---|---|---|---|
![]() | |||
![]() | |||
Тип | текстовый редактор | ||
Разработчики | Allan Odgaard (MacroMates), Ciarán Walsh | ||
Написана на | Ruby, Objective-C, C++ и Си | ||
Операционная система | macOS | ||
Аппаратная платформа | x86 | ||
Последняя версия | 2.0.23[1] (12 октября 2021 ) | ||
Тестовая версия | 2.0.22[2] (16 апреля 2021 ) | ||
Репозиторий | github.com/textmate/text… | ||
| |||
| |||
Лицензия |
Shareware, GNU GPL[3] |
||
Сайт | macromates.com | ||
![]() |
История
правитьTextMate 1.0 был выпущен 5 октября 2004 г., после 5 месяцев разработки, за ним последовала версия 1.0.1 21 октября 2004 г. Релиз был сфокусирован на хорошей реализации небольшого набора функций и не имел окна настроек или панели инструментов, не t интегрировал FTP , и не было опций для печати. Сначала поддерживалось лишь небольшое количество языков программирования, так как было создано лишь несколько «языковых пакетов». Тем не менее, некоторые разработчики сочли эту раннюю и неполную версию TextMate долгожданным изменением для рынка, который считался застойным из-за десятилетнего доминирования BBEdit .
TextMate 1.0.2 вышел 10 декабря 2004 года. В серии бета-версий TextMate 1.1 TextMate получил следующие функции: окно настроек с графическим интерфейсом для создания и редактирования тем; строка состояния со списком символов; меню для выбора языка и настроек вкладок, а также «редактор пакетов» для редактирования языковых настроек. 6 января 2006 года Odgaard выпустила TextMate 1.5, первую «стабильную версию» с 1.0.2. Отзывы были положительными, в отличие от более ранних версий, которые подвергались критике.
TextMate продолжал развиваться до середины 2006 года. 8 августа 2006 года на Всемирной конференции разработчиков Apple в Сан-Франциско , штат Калифорния , TextMate был удостоен награды Apple Design Award за лучший инструмент для разработчиков и вызвал «бурные аплодисменты». В феврале 2006 года блог TextMate выразил намерение в отношении будущих направлений, включая улучшенное управление проектами, с системой подключаемых модулей для поддержки удаленных файловых систем, таких как FTP, и систем контроля версий, таких как Subversion . На протяжении 2007 года основное приложение менялось незначительно, хотя его «языковые пакеты» продолжали развиваться.
В июне 2009 года было объявлено, что TextMate 2 завершен примерно на 90 процентов, но окончательный список функций не разглашается. Публичная альфа-версия была доступна для загрузки в блоге TextMate в декабре 2011 года, а в конце 2016 года был выпущен релиз-кандидат. В сентябре 2019 года была выпущена финальная версия.
В августе 2012 года исходный код TextMate 2 был опубликован на GitHub в соответствии с условиями GPL-3.0 или более поздней версии - попытка разработчика противодействовать ограничениям, которые Apple наложила на программное обеспечение, распространяемое через Mac App Store . Одгаард заявил, что предпочитает получать исправления как общественное достояние, поскольку это сохраняет его возможность выпустить будущую версию под более разрешительной лицензией или сделать версию доступной в Mac App Store. Одгаард также заявил, что у него есть друг, который использует некоторые фреймворки TextMate в проекте с закрытым исходным кодом, и они не могут включать исправления, выпущенные под GPL.
Функции
правитьИерархические области видимости
правитьTextMate позволяет пользователям создавать свои собственные произвольно сложные режимы выделения синтаксиса , используя модифицированную версию формата списка свойств Apple ASCII для определения языковых грамматик. Эти грамматики позволяют определять правила вложенности с помощью библиотеки регулярных выражений Oniguruma , а затем назначать определенные «области»: составные метки, которые идентифицируют их для окраски. Следовательно, каждой точке документа назначается одна или несколько областей, которые определяют, где в документе находится точка, как она должна быть окрашена и каким должно быть поведение TextMate в этой точке. Например, заголовок одной из ссылок в разделе «Внешние ссылки» имеет объем. Эта область говорит нам, что мы смотрим на заголовок ссылки внутри ссылки в списке в документе MediaWiki.
Темы TextMate могут размечать любую область с разной степенью точности. Например, одна тема может реши��ь окрашивать каждую константу ( constant.*) одинаково, в то время как другая может решить, что числовые константы ( constant.numeric.*) должны быть окрашены иначе, чем экранированные символы ( constant.character.escape.*). Синтаксис иерархической области видимости позволяет авторам языков и темам различные уровни охвата, так что каждый может выбрать простоту или полноту по своему желанию.
Команды
правитьTextMate поддерживает определяемые пользователем и редактируемые пользователем команды, которые интерпретируются bash или интерпретатором, указанным с помощью shebang . TextMate может отправлять команды многих типов ввода (текущий документ, выделенный текст, текущее слово и т. Д.) В дополнение к переменным среды, и их вывод может обрабатываться TextMate аналогичным образом различными способами. В самом простом случае команда может получить выделенный текст, преобразовать его и повторно вставить в документ, заменив выделенный фрагмент. Другие команды могут просто отображать всплывающую подсказку , создавать новый документ для вывода или отображать его как веб-страницу с помощью встроенного средства визуализации HTML TextMate.
Многие языковые пакеты, такие как bash, PHP или Ruby, содержат команды для компиляции и / или запуска текущего документа или проекта. Во многих случаях STDOUT и STDERR процесса кода будут отображаться в окне в TextMate.
Фрагменты
правитьВ простейшем случае « фрагменты » TextMate представляют собой фрагменты текста, которые могут быть вставлены в документ в текущем месте с помощью нажатия контекстно-зависимой клавиши или завершения табуляции. Фрагменты «интеллектуальны», поддерживают динамическое обновление «табуляции», доступ к переменным среды и возможность запускать встроенные скрипты. Это допускает сложное поведение. Позиции табуляции можно циклически перемещать с помощью клавиши «табуляция» и поддержки текста по умолчанию, раскрывающихся списков, для завершения элементов фрагмента. Результаты этих позиций табуляции могут быть динамически изменены в другой части фрагмента по мере того, как пользователь заполняет позицию. Можно использовать переменные среды TextMate, поддерживающие информацию о текущей области, номере строки или имени автора и т. Д. Во фрагментах также есть возможность запускать встроенные сценарии оболочки.
Связки
правитьГрамматики, фрагменты, макросы, команды и шаблоны языка TextMate могут быть сгруппированы в «пакеты» функциональности. Любой фрагмент, макрос или команда могут быть выполнены нажатием сочетания клавиш, путем ввода определенного слова и последующего нажатия клавиши «табуляции» (так называемые «триггеры табуляции») или путем выбора команды из меню. Триггеры табуляции особенно полезны; Комбинация триггеров табуляции и фрагментов значительно упрощает кодирование на подробных языках или языках с обычно типизированными шаблонами.
Фрагменты, макросы и команды могут быть ограничены определенной областью действия, так что, например, команда «закрыть тег html» не работает в сценарии python, освобождая это сочетание клавиш для использования в других целях. Это позволяет отдельным языкам и даже отдельным областям действия переопределять встроенные команды, такие как «Переформатировать абзац», более специализированными версиями. Даже специальные клавиши, такие как клавиша возврата и пробел, могут быть переопределены.
Доступен репозиторий Subversion, содержащий гораздо больше пакетов, чем поставляется с пакетом редактора, для всего, от Markdown до ведения блогов и языка ассемблера MIPS .
Управление проектом
правитьНесколько документов или папок могут быть открыты одновременно в окне проекта TextMate, в котором есть ящик со списком имен файлов и папок, а также ряд вкладок вверху. В TextMate 1.5 этот ящик предоставляет пользователям средства для организации файлов и папок по всей файловой системе, а также возможность создавать виртуальные папки для дальнейшей организации. Эта функция была удалена из TextMate 2 и заменена обычным файловым браузером . Поиск и замену можно выполнять по всему проекту, а команды могут взаимодействовать с выбранными файлами или папками в ящике. Пакеты для CVS , Subversion, darcs и других систем контроля версий позволяют TextMate управлять версионным кодом.
Другие особенности
правитьTextMate имеет много общих для редакторов программирования функций:
- Сворачивание разделов кода можно использовать, чтобы скрыть области документа, которые в настоящее время не редактируются, для более компактного представления структуры кода или во избежание отвлечения внимания. Сгибаемые разделы можно выбрать вручную, или для определения сгибов можно использовать структуру самого документа.
- Поиск и замена на основе регулярных выражений ускоряют сложные манипуляции с текстом. TextMate использует библиотеку регулярных выражений Oniguruma, разработанную К. Косако.
- Всплывающее окно функции предоставляет список разделов или функций в текущем документе.
- История буфера обмена позволяет пользователям вырезать сразу несколько разделов текста, а затем вставлять их.
- Режим редактирования столбца позволяет добавлять один и тот же текст в несколько строк текста и очень полезен для работы с табличными данными.
- Поддержка "rmate" для запуска textmate в качестве редактора файлов с удаленных серверов - значительно улучшена по сравнению с обходными путями, необходимыми в версии 1
Кроме того, TextMate поддерживает функции для хорошей интеграции с графической средой OS X:
- Графическая история буфера обмена поддерживает вставку из предыдущих копий, включая предыдущие запуски.
- Найти и заменить поддерживают аналогичную графическую историю.
- Редактирование дополнительно расширяется за счет использования нескольких курсоров (точек вставки) и возможности расширить текущий выбор до дополнительных экземпляров, создавая несколько курсоров.
- Окно просмотра HTML на основе WebKit показывает обновления в реальном времени при редактировании HTML-документа.
- Пользователи VoiceOver и Zoom могут использовать TextMate благодаря поддержке специальных возможностей.
Ограничения
правитьTextMate имеет несколько ограничений по сравнению с другими редакторами этого класса:
- Поскольку TextMate не тесно связан с языком сценариев, как Emacs с Emacs Lisp , пользователи не могут полностью контролировать конфигурацию и поведение программы. Аллан Одгаард объяснил свои мысли по этому поводу в электронном письме в список рассылки TextMate, выступая за решения, рекомендованные платформой.
- Нет встроенного средства проверки HTML - поскольку TextMate использует средство проверки W3C для проверки HTML, пользователи должны иметь активное сетевое соединение для проверки HTML с использованием стандартных функций.
- Несмотря на существенную поддержку макросов, команд и фрагментов, TextMate не имеет встроенной поддержки подсказок кода или управляемого завершения кода, поэтому текстовые редакторы, поддерживающие эти функции, могут оказаться лучшим выбором при изучении синтаксиса нового язык или кодирование на подроб��ых языках.
- TextMate небезопасен для двоичного кода . Это явно только текст и не гарантирует, что произвольные двоичные данные в файле будут сохранены в течение цикла загрузки / сохранения, независимо от того, редактируются ли эти данные.
Награды
правитьTextMate 1.5 выиграл премию Apple Design Award за лучший инструмент для разработчиков в 2006 году.
Примечания
править- ↑ "2021-10-12 (v2.0.23)". Архивировано 15 апреля 2022. Дата обращения: 19 апреля 2022.
- ↑ "2021-04-16 (v2.0.22)". Архивировано 26 октября 2021. Дата обращения: 19 апреля 2022.
- ↑ Сообщение в официальном блоге программы об открытии исходных кодов TextMate. Дата обращения: 12 августа 2012. Архивировано 19 марта 2016 года.
Ссылки
править- Официальный сайт. (англ.)
- Проект TextMate на сайте GitHub. (англ.)