TextMate
TextMate | |||
---|---|---|---|
![]() | |||
![]() | |||
Тип | текстовый редактор | ||
Разработчики | Allan Odgaard (MacroMates), Ciarán Walsh | ||
Написана на | Ruby, Objective-C, C++ и Си | ||
Операционная система | macOS | ||
Аппаратная платформа | x86 | ||
Последняя версия | 2.0.23[1] (12 октября 2021; 2 года назад (2021-10-12)) | ||
Тестовая версия | 2.0.22[2] (16 апреля 2021; 3 года назад (2021-04-16)) | ||
Репозиторий | github.com/textmate/text… | ||
| |||
| |||
Лицензия | Shareware, GNU GPL[3] | ||
Сайт | macromates.com | ||
![]() |
TextMate — один из самых популярных текстовых редакторов для программистов на macOS. Включает готовые библиотеки макросов и фрагменты исходного кода или текста (сниппеты), пригодные для повторного использования для многих языков программирования.
История
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. (англ.)