Сниппеты вне зависимости от редактора

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Давно работаю со сниппетами: с помощью них создаю скелеты модулей, функций и конструкций (for, if, given). Становится реально запилить даже средние проекты в одиночку. Сниппеты – незаменимая вещь при поиске ошибки в программе методом дихотомии: приходится вставлять вывод информации десятки раз, меняя в ней только текущие переменные.

Однако можно использовать сниппеты только в одном редакторе. В другой редактор их придётся переносить вручную.

Было бы неплохо иметь программу, которая могла бы вставлять сниппеты во все приложения.

  • Когда я захожу на удалённый сервер по ssh, то странно ожидать сниппеты в mcedit-е (Рис.1.1).

Рис.1.1 mcedit-ор
Рис.1.1 mcedit-ор
  • На удалённом сервере обязательно нужно зайти в докер – а там обычно тебя ожидает ed или vi (Рис.1.2) в котором сниппеты не запишешь – они пропадут при перезапуске контейнера.

Рис.1.2 Редактор vi
Рис.1.2 Редактор vi
  • Я пользуюсь несколькими редакторами одновременно: vscodium, kate, notepad++ (под wine, конечно-же), kwrite, pycharm, Intellij Idea (в которых актуальны сниппеты для html, css/sass и js), atom и subl.

  • sql-сниппеты понадобятся в heidisql, Database Intelliji Idea, в консольных mysql и pgsql.

  • Для проверки кода (если есть сомнения как он работает) я запускаю в консоли однострочники в которых сниппеты очень даже пригодились бы.

  • Если нужно привести пример кода при переписке, то сниппеты будут незаменимы в мессенджерах и почтовых клиентах.

  • Ну и наконец, я часто пишу статьи на Хабре и, в некоторых случаях, было бы идеально вставлять сниппеты в фрагменты кода прямо в статье не переключаясь для этого в редактор.

Тем временем вышел En-Ru Switcher 7, который всё это поддерживает (Рис.2.1).

En-Ru Switcher

Рис.2.1 Конфигуратор erswitcher-а открыт на сниппетах perl
Рис.2.1 Конфигуратор erswitcher-а открыт на сниппетах perl

Конфигуратор erswitcher-а [1] открывается по щелчку на красном квадрате у часов. Он разделён на список секций конфига и редактор. По списку легко переместиться к нужной секции или разделу (разделы начинаются на ##, в то время как # – обычный комментарий).

До знака = идёт мнемоника в секции [compose], которая будет заменяться на текст справа при нажатии на клавишу menu (центральная клавиша на дополнительной цифровой клавиатуре), или комбинация клавиш в других секциях.

Для обозначения символа табуляции используется \t, а для перевода строки \n. \^ используется для указания позиции в которую поместить курсор после вставки текста (имеется ввиду текстовый курсор, конечно же).

Как только вы введёте текст он тут же сохранится в конфиг и конфиг будет перечитан erswitcher-ом.

Чтобы использовать один и тот же конфиг на разных компьютерах, просто выделите его весь и скопируйте (Ctrl+a, Ctrl+c), после чего его можно сохранить на docs.google.com, например.

Что такое сниппет?

Сниппет это такой "скелет" часто повторяемого кода [4]. После вставки текста сниппета в нём заполняют "пробелы", как это показано на видео [2].

У слова «сниппет» есть и другие значения. Так SEO-оптимизаторы называют сниппетом «небольшой фрагмент текста, который мы видим на странице выдачи поисковика (гугл, яндекс, яху, рамблер, дак-дак-гоу) вместе со ссылкой на сайт» [5].

Как erswitcher вставляет текст?

Ввод тела сниппета осуществляется по ICCCM: erswitcher отслеживает нажатия клавишь и запоминает последние введённые программистом символы. При нажатии клавиши menu он распознаёт введённую только что мнемонику, например, "if" и эмулирует двойное нажатие backspace, чтобы их удалить. Затем объявляет себя буфером обмена и нажимает Ctrl+v. Программа, в которой был написан "if", запрашивает у сервера обмена текст и получает тело сниппета "if() {\n\t\n}", который и вставляет в позицию курсора. erswitcher тем временем ожидает пока вставка закончится 10 микросекунд и нажимает на клавишу "стрелка влево" столько раз, сколько символов между \^ и концом текста сниппета, чтобы добраться до указанной в сниппете позиции курсора ("if=if(\^) {\n\t\n}").

Есть ли альтернатива?

erswitcher сделан для unix-а. PuntoSwitcher вроде как кто-то когда-то сумел запустить под wine, но без бубна можно получить только ошибку отсутствия локализации. Кроме того вставки текста у PuntoSwitcher сделаны в виде списка, куда нельзя вставить перевод строки или табуляцию. Так же нельзя позиционировать курсор.

Развитие идеи

На самом деле хотелось бы указывать несколько "пробелов" в сниппете erswitcher-а, куда позиционировать курсор после заполнения первого (например при нажатии некоей комбинации клавишь). Так же текст сниппета в редакторе конфигуратора записывается в одну строку и, хотя можно использовать \n для символа перевода строки, то было бы неплохо добавить многострочные определения сниппетов.

Всё это будет реализовано в будущих версиях erswitcher-а.

Список использованной литаратуры

  1. Ярослав О. Косьмина «Конфиг EN-RU Switcher» / https://github.com/darviarush/erswitcher#config

  2. Ярослав О. Косьмина «Сниппеты из erswitcher» / https://youtu.be/PP78TBYIOH8

  3. «Программы, поддерживающие сниппеты» под ред. Vbif-routine / https://ru.wikipedia.org/wiki/Сниппет#Программы,_поддерживающие_сниппеты

  4. Yaoguai «Сниппеты. Как сделать процесс работы с документацией проще» / https://habr.com/ru/articles/487096/

  5. MPalma «25 способов скомпоновать исчерпывающий сниппет», 2014 / https://habr.com/ru/companies/altweb/articles/241618/

  6. alspirichev «На пути к ‹10x инженеру›: шорткаты, сниппеты, шаблоны», 2020 / https://habr.com/ru/companies/dododev/articles/527740/

  7. Kapodastr «Sublime Text 2: Как создать сниппет?», 2012 / https://habr.com/ru/articles/148324/

Источник: https://habr.com/ru/articles/779890/


Интересные статьи

Интересные статьи

Расширенный сниппет — это результат, который поисковая система показывает пользователю на первой позиции. Также его называют нулевой выдачей.
В настоящее время в связи с обстановкой в мире во многих отраслях производства наблюдается проблема с поставкой запасных частей для оборудования и не только. В ситуации, когда поставка оригинальных де...
Мы запускаем API Поиска Brave, который предоставит доступ к нашему движку компаниям и разработчикам по всему миру, нуждающимся в технологиях сетевого поиска для новых поколений своих приложений.Поиск ...
Профессия UX-редактора молодая: ещё два-три года назад в крупных компаниях только складывалось представление о том, что это за член команды и какие функции выполняет. Сейчас UX-редактор играет важную ...
Занимательное дело — создавать образовательные модели. Приятно видеть, что человек понял что-то, взаимодействуя с твоей программой. Начинал делать модели в Matlab, пробов...