Ctags - Ctags
эта статья нужны дополнительные цитаты для проверка.Ноябрь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Кен Арнольд |
---|---|
Репозиторий | |
Операционная система | Unix и Unix-подобный |
Тип | Инструмент программирования (В частности: инструмент навигации по коду) |
Лицензия | BSD |
Ctags это инструмент программирования что порождает показатель (или теговый) файл имен, найденных в исходных и заголовочных файлах различных языки программирования помочь понимание кода. В зависимости от языка, функции, переменные, класс члены, макросы и так далее могут быть проиндексированы. Эти теги позволяют быстро и легко находить определения Текстовый редактор, поисковая машина кода или другая утилита. В качестве альтернативы есть также режим вывода, который генерирует Перекрестная ссылка файл, содержащий информацию о различных именах, найденных в наборе языковых файлов в человек читаемый форма.
Оригинал Ctags был представлен в BSD Unix 3.0 и был написан Кен Арнольд, с участием Фортран поддержка Джима Клекнера и Паскаль поддержка со стороны Билл Джой. Это часть первоначального выпуска Единая спецификация Unix и XPG4 1992 года.
Редакторы, поддерживающие ctags
Файлы индекса тегов поддерживаются многими редакторы исходного кода, в том числе:
- Атом
- BBEdit 8+
- CodeLite (в качестве индексатора тегов для завершения кода)
- Cloud9 IDE (использует его внутри, но не раскрывает)
- Emacs и XEmacs
- EmEditor Professional
- Дальний менеджер (через плагин Ctags Source Navigator)
- Geany
- Gedit (через gedit-символ-браузер-плагин )
- JED
- jEdit (через плагины CodeBrowser, Tags, ClassBrowser, CtagsSideKick или Jump)
- ДЖО
- KDevelop
- Кейт
- mcedit (Встроенный редактор Midnight Commander)
- NEdit
- Блокнот ++ (через плагин OpenCTags)
- QDevelop
- TSE (через макрос)
- TextMate (через плагин CodeBrowser)
- UltraEdit
- TextPad
- ВЕДИТ
- vi (и производные, такие как Элвис, Nvi, Vim, мерзкий, так далее.)
- Xedit (X11)
Варианты ctags
Есть еще несколько реализаций ctags программа:
Etags
GNU Emacs поставляется с двумя утилитами ctags, etags и ctags, которые скомпилированы из одного исходного кода. Etags генерирует файл таблицы тегов для Emacs, а команда ctags используется для создания аналогичной таблицы в формате, понятном для vi. У них есть разные наборы параметров командной строки: для тех параметров, которые имеют смысл только для файлов тегов стиля vi, созданных командой ctags, etags не может их распознать и проигнорирует.[1]
Обильные Ctags
Обильные Ctags, написано и поддерживается Даррен Хиберт до 2009 г.,[2] изначально распространялся с Vim, но стал отдельным проектом после выпуска Vim 6. Он включает поддержку Emacs и etags
совместимость.[3][4]
Exuberant Ctags включает поддержку более 40 языков программирования с возможностью добавления поддержки для еще большего использования обычные выражения.
Универсальные КТэги
Универсальные КТэги является форком Exuberant Ctags с целью продолжения его развития. Некоторые парсеры переписаны для лучшей поддержки языков.[5]
Зависит от языка
Haskell исходные файлы.[6] Он включает поддержку создания файлов Emacs etags.[7]
создает файлы тегов, совместимые с ctags, дляJavaScript.[8] Он специализируется на JavaScript и использует CommonJS система упаковки. Он превосходит Обильные Ctags для кода JavaScript - найти больше тегов, чем последний.[9]
является ctags-совместимым решением для индексации кода дляТеги форматов файлов
Существует несколько форматов файлов тегов. Некоторые из них описаны ниже. В следующих, \Икс## представляет байт в шестнадцатеричном представлении ##. Каждая строка заканчивается перевод строки (LF, \п = \x0A).
Ктаги и потомки
Оригинал ctags и потомки Exuberant / Universal имеют похожие форматы файлов:[10]
Ctags
Это формат, используемый vi и различные клоны. Файл тегов обычно называется "теги".
Файл тегов представляет собой список строк, каждая строка в формате:
{название тэга}\т{tagfile}\т{tagaddress}
Поля указаны следующим образом:
- {название тэга} - Любой идентификатор, не содержащий пробелов
- \т - Ровно один вкладка (\x0b) персонаж, хотя многие версии vi может обрабатывать любое количество пустого пространства.
- {tagfile} - Имя файла, в котором {название тэга} определяется относительно текущего каталога
- {tagaddress} - An бывший команда mode, которая перенесет редактор в местоположение тега. Для реализаций POSIX vi это может быть только поиск или номер строки, обеспечивающий дополнительную защиту от произвольного выполнения команд.
Файл тегов отсортирован по {название тэга} поле, которое позволяет быстро искать файл тегов.
Расширенные Ctags
Это формат, используемый Vim Обильные Ctags и универсальные Ctags. Эти программы могут генерировать оригинальные ctags формат файла или расширенный формат, который пытается сохранить обратную совместимость.
Файл расширенных тегов представляет собой список строк, каждая строка в формате:
{название тэга}\т{tagfile}\т{tagaddress}[;"\т{tagfield...}]
Поля до включительно {tagaddress} такие же, как для ctags над.
Необязательные дополнительные поля обозначены квадратными скобками («[...]») и включают:
- ;" - точка с запятой + двойная кавычка: завершает {tagaddress} таким образом, чтобы это выглядело как начало комментария к vi или бывший.
- {tagfield} - поля расширения: пары «ключ: значение», разделенные табуляцией, для получения дополнительной информации.
Этот формат совместим с не-POSIX vi поскольку дополнительные данные интерпретируются как комментарий. POSIX реализации vi однако необходимо изменить, чтобы поддерживать его.[10]
Etags
Это формат, используемый Emacs etags. Файл тегов обычно называется «TAGS».
Файлы etags состоят из нескольких разделов - по одному на каждый входной исходный файл. Разделы представляют собой обычный текст с несколькими непечатаемыми символами ascii, используемыми для специальных целей. Эти символы представлены ниже в виде шестнадцатеричных кодов в квадратных скобках.
Раздел начинается с двухстрочного заголовка (первые два байта составляют магическое число ):
\x0c{src_file},{size_of_tag_definition_data_in_bytes}
За заголовком следуют определения тегов, по одному в каждой строке, в формате:
{tag_definition_text}\x7f{название тэга}\x01{номер строчки},{byte_offset}
{tagname} x01 может быть опущен, если имя тега можно вывести из текста в определении тега.
пример
Учитывая однострочный исходный код test.c:
#define CCC (x)
Файл TAGS (etags) будет выглядеть так:
\x0ctest.c, 21 # определить CCC (x7fCCC x011,0
Файл тегов (ctags) может выглядеть так:
CCC (test.c 1
или более гибко с помощью поиска:
CCC (test.c / ^ # define CCC (/
Смотрите также
использованная литература
- ^ Linux Общие команды Руководство по эксплуатации –
- ^ "Обильные Ctags". ctags.sourceforge.net.
- ^ "Документация Vim: версия 6: ctags-Go". Получено 2007-04-28.
- ^ Linux Общие команды Руководство по эксплуатации –
- ^ «Универсальная документация Ctags». Получено 2018-08-02.
- ^ «Документация GHC: Другие служебные программы Haskell». Получено 2010-03-05.
- ^ "hasktags: производит файлы ctags" tag "и etags" TAGS "для программ Haskell". Получено 2010-03-05.
- ^ "pcwalton github репозиторий для jsctags". Архивировано из оригинал на 22.08.2010. Получено 2016-09-10.
- ^ Патрик Уолтон. "Представляем jsctags". Получено 2010-05-25.
- ^ а б «Предложение по расширенному формату файлов тегов Vi». Получено 2007-06-30.
внешние ссылки
- Единая спецификация UNIX, Выпуск 7 из Открытая группа : создать файл тегов - Справочник по командам и утилитам,
- Домашняя страница Universal Ctags
- Домашняя страница Exuberant Ctags
- Ctags на VMS
- исходный код модуля Emacs vtags.el