IDE Geany: создание и работа со сниппетами (snippets)
Запись от remarkes размещена 28.09.2012 в 21:26
Обновил(-а) remarkes 15.05.2013 в 14:09 (в новой версии Geany произошли изменения)
Обновил(-а) remarkes 15.05.2013 в 14:09 (в новой версии Geany произошли изменения)
Метки ide geany linux
IDE Geany — свободная кроссплатформенная среда разработки программного обеспечения. Geany переводится как "джинн" (из лампы, а не с тоником). При всей своей легкости и простоте, обладает достаточным функционалом и возможностью наращиваться - благодаря возможности подключения плагинов (как в браузере Firefox) и создания сниппетов. Вот, собственно о сниппетах и пойдет речь. Как правило, Geany позиционируется как IDE для новичков, что правда, она действительно проста и легка в использовании. Некоторые правда тут же утверждают, что "только для новичков", вот этот миф я и попытаюсь развеять. Сниппет (snippet) - в случае с Geany - это некоторый заранее заготовленный шаблон текста (кода) или команда в оболочке, которые вызываются ключевой фразой и нажатием клавиши Tab. Допустим, вы пишете некоторую программу на языке Си и вводите "if" и нажимаете клавишу Tab. Вам автоматически подставится текст:
По поводу вызова команд в оболочке расскажу ниже. По-умолчанию количество сниппетов весьма ограничено, но их можно обогатить своими, создав шаблоны-сниппеты на все случаи жизни. конфигурационный файл сниппетов snippets.confОбщий файл конфигурации сниппетов называется snippets.conf и, например, в системе Debian/Ubuntu находится в каталоге:
Таким образом, файл ваших личных сниппетов будет лежать по адресу:
синтаксис файла snippets.conf Согласно постулату UNIX-way "храните данные в простых текстовых файлах", все конфигурационные файлы в Geany - это простые текстовые файлы. Поэтому совершенно логично файл snippets.conf редактировать в самом Geany. Определимся с понятиями:ключ, key - это ключевое слово, вместо которого будет подставляться сниппет по нажатию клавиши Tab. Выше я уже приводил пример ключей if и for. шаблон, value, сниппет - это собственно тот шаблон, который будет подставлен вместо ключа. Или команда, которая должна сработать вместо ключа. В самом начале открытого нами файла snippets.conf мы увидим примерно на пол-странички небольшое руководство, как писать сниппеты. Я его переведу, с некоторыми своими изменениями и комментариями: Цитата:
используйте \n или %newline% для создания переноса строки.
используйте \t или %ws% для создания отступа (табуляции), он будет заменен в соответствии с действующими в документе (имеется ввиду тот файл, из которого мы вызываем сниппет) настройками длины отступа. используйте \s когда необходимо "насильно" вставить пробел вначале или в конце (сниппета) ('ключ= значение_сниппета' не работает, используйте 'ключ=\sзначение_сниппета'). используйте формат %имя_ключа% для использования "ключей" объявленных в разделе [Special]. используйте %cursor% чтобы указать, где курсор должен находится в шаблоне. Можете указать несколько курсоров и использовать комбинацию клавиш "Move cursor in snippet" ("Перемещать курсор в фрагменте"), чтобы перемещать курсор на следующую позицию в шаблоне. Вы можете объявить раздел для любого поддерживаемого формата файла (языка программирования) отдельно. Делается это так (например, для языка C++): [C++] Раздел должен называться, как формат файла (и языка). Запустите "geany --ft-names" в командной строке, чтобы посмотреть весь список поддерживаемых языков. Пользователи Linux, если вы запустите эту команду, вы не увидите например языка bash. Но увидите Sh. То есть раздел сниппетов для bash должен называться [Sh] Кроме того, вы можете использовать специальные параметры (template wildcards), например: {developer}, {command:...} или {date} в ваших шаблонах. Чтобы узнать больше деталей, читайте документацию (золотые слова). Разделы сниппетов
Обратите внимание на вставки %brace_open% и %brace_close% в файле snippets.conf. Это так сказать "сниппеты сниппетов". Они описываются в разделе [Special]. Например:
Если нам необходима различная реализация для отдельных языков, нам необходимо написать сниппет в конкретном разделе. Например, разный for для языка bash (shell), C++ и PHP, при этом отличающийся от сниппета по-умолчанию, необходимо написать так:
Вставка %cursor% позволяет указать, где курсор будет находится при вызове шаблона. Нет нужды перемещать курсор кнопками вправо-влево, достаточно указать несколько "курсоров" и после перемещаться с помощью комбинации клавиш "Перемещать курсор в фрагменте". Устанавливаются комбинации клавиш в меню Правка -> Настройки (Ctrl+Alt+P) -> вкладка "Привязки" -> вкладка "Редактор" -> "Перемещать курсор в фрагменте". У меня, например, установлена комбинация Alt+W примеры и полезностиРасскажу несколько полезных на мой взгляд своих сниппетов. в разделе [Default]
Как только меня осенит мысль придумать/изменить сниппет, я набираю snip (и нажимаю Tab) и открывается вкладка с моими сниппетами. В приведенной команде "user" - соответственно - имя вашего пользователя.
в разделе [Sh]
Это сниппеты "для ленивых" ![]()
Свои шаблоны можно создать в каталоге /home/user/.config/geany/templates/files/ Это вовсе необязательно должны быть шаблоны просто "под язык". Это может быть конкретный типовой шаблон графического/консольного приложения, клиент/сервер и просто некоторого текста. То же самое можно делать и для других языков, например Си
Может быть использован в качестве использования сниппетов для текстовых файлов, например, для файлов "txt". Для таких файлов, как и для всех, также действуют сниппеты, объявленные в разделе [Default] ...и т.д. использование команд Возможность использования команд оболочки и запуск скриптов с помощью сниппетов позволяет существенно расширить функционал Geany, а также написать свои скрипты/программы. Использование команд возможно с помощью специального параметра
Пример:
и т.д. Собственно, в сниппетах выше я уже использовал специальный параметр command для открытия в Geany файла конфигурации сниппетов и файла-шаблона для bash. Помимо этого есть и другие специальные параметры:
переменные окружения GEANY_FILENAME, GEANY_FILETYPEВ вызываемую параметром {command:} программу передаются переменные окружения:
С помощью этих двух возможностей: использования команд, и передачи переменной с именем файла, мы с помощью Geany по сути можем делать все то, что может делать bash (та оболочка, которая установлена в сборках linux по-умолчанию). примеры использования команд В разделе [Default] можно создать такие строчки:
примеры скриптов
код на bash
В файле snippets.conf в разделе [C] пишем:
Даем ему право на исполнение:
Примечание: для этого необходимо установить утилиту indent. Например, в deb-ориентированных дистрибутивах это делается так:
Вообще-то в Geany есть мануалы, но никто не мешает нам посмотреть мануал в интернете. Например, если у вас нет локализованной версии (на русском), а на сайте opennet.ru она есть. Для этого можно создать скрипт geany_man.sh с содержимым: код на bash
Даем право на исполнение, и создаем сниппет в разделе [Default], как описано выше. Для работы скрипта необходима утилита zenity (для диалога с пользователем).
код на bash
Всем заинтересовавшимся скриптами для Geany, я предлагаю выкладывать здесь ваши скрипты. Или просто можете предложить идею. некоторые минусы Geany
Резюме Как видите, IDE Geany не такая простая, как кому-то может показаться на первый взгляд. В связке с другим ПО (gcc, gdb, bash/shell, Devhelp), она обладает достаточно мощными средствами, и при этом имеет потенциал к расширению. PS: я планирую описать еще несколько статей по работе с Geany: работа с шаблонами, перемещение по интерфейсу, настройки и тонкости и т.д. Если возникнут вопросы и пожелания - пишите. PSS: полную документацию на русском вы можете взять по адресу: http://www.geany.org/manual/0.19_ru/index.html О сниппетах и самой IDE Geany вы также можете прочитать в википедии: http://ru.wikipedia.org/wiki/Snippet http://ru.wikipedia.org/wiki/Geany |
Всего комментариев 5
Комментарии
-
Цитата:
В том-то и вся прелесть, что перемещаться с помощью курсорных клавиш не надо. Перемещать свое положение в сниппете лучше с помощью комбинации клавиш "Перемещать курсор в фрагменте" (поставить в настройках). Я поставил себе Alt+W, можно Alt+R, или Alt+E - короче что-то эргономичное, чтобы не убирать руки с клавиатуры.C 1 2 3
if (курсор_изначально_находится_здесь) { а_потом_курсор_будет_находиться_здесь }а_потом_здесь
Запись от remarkes размещена 29.09.2012 в 09:28
Обновил(-а) remarkes 29.09.2012 в 09:48 -
никто не мешает создать свой сниппет без счетчиков или создать несколько "форов" с переменными i, j , k (например). Потом: for с i - это настолько типовой набор, что i - это первое, что приходит на ум, что туда поставить. С проблемой "подставить другую переменную" можно встретиться в случае вложенных циклов, а они встречаются реже, чем просто циклы.
По моим наблюдениям самыми полезными сниппетами являются комментариев. Сниппет if еще удобен.
В шелле также очень помогает сниппет создания массивов.Запись от remarkes размещена 29.09.2012 в 09:47 -
А шаблоны (скелеты файлов) свои как создавать? Это вообще возможно?
Запись от Igor-dis размещена 13.04.2016 в 19:37