Текстовый редактор Kate. Авантажен ли он?

Содержание
  1. Kate, его настроки и его модули
  2. «Общеполезные» модули
    1. Модуль поиска и замены
    2. Терминал
  3. Модули управления файлами
  4. Модуль управления сниппетами
    1. Преамбула
    2. Сниппеты
    3. Управление сниппетами
    4. Комплекты и их загрузка
    5. Поиск комплектов
    6. Редактирование сниппетов
    7. Создание сниппетов
    8. Сниппеты или макросы?

Всем известно, что имя текстового редактора Kate расшифровывается как KDE Advanced Text Editor. А достоин ли он этого высокого звания, если следовать только что сформулированным критериям?

Вопрос может показаться излишним: ведь именно Kate был одним из двух редакторов графического режима в истории мироздания, готовых бороться за место в тройке призёров (повторяю, при двух участниках, наряду с NEdit’ом, о котором некогда было говорено немало). Однако мы знаем, что в мире открыто-свободного софта вчерашние лидеры часто оказываются аутсайдерами, и наоборот. Так что для ответа на вопрос из вводного абзаца нужно говорить не об истории, а о современности. И начать с нескольких слов об устройстве KDE-приложений вообще.

Kate, его настроки и его модули

Во всех (или почти во всех?) современных KDE-программах используется технология KParts, позволяющая включать функционал одного «правильного» KDE-приложения в состав другого, если оно «правильно» не менее. И в результате базовый функционал современных версий KWrite и Kate не то что одинаков, а просто один и тот же (вплоть до недавнего появления в первом поддержки MDI). Да и настраиваются в базовой своей части совершенно одинаково — поэтому не буду повторять сказанной в первой истории.

Авантажным текстовым редактором Kate, по сравнению с KWrite’ом, делает подключение дополнительных модулей. Как и все настройки всех правильных KDE-приложений, процесс этот начинается с обращения к пункту главного меню под названием (вот странно-то) Настройка:

Рис. 1. Общие настройки

В списке доступных настроек выбирается пункт Настроить Kate, последний по счёту, но первый по значению:

Рис. 2. Настройка Kate

Здесь среди разнообразных настроек, от внешнего вида до просмотра файловой системы, в данный момент нас интересует только пункт Модули. Выбор его приводит к выводу списка поддерживаемых модулей:

Рис. 3. Управление модулями

Как нетрудно догадаться, управление модулями сводится к простановке «птиц» напротив имён нужных модулей, и снятию их с ненужных нам позиций, хотя они и могли быть отмечены по умолчанию в свежеустановленном редакторе (честно говоря, не помню, какие).

«Общеполезные» модули

На приведённом скриншоте (рис. 3) отмечены «птицами» те модули, которые нужны мне. Не все они имеют отношение к теме сегодняшней истории, то есть авантажности.

Модуль поиска и замены

Так, модуль Поиск и замена просто расширяет соответствующие базовые функции. Позволяя, в частности, проводить поиск и замену не только в текущем файле, но во всех открытых, а также во всех файлах текущего каталога:

Рис. 4. Модуль поиска и замены

Терминал

Другой модуль «общей полезности» — Терминал: благодаря ему мы можем иметь под рукой встроенное терминальное окно внутри редактора, и выполнять в нём команды оболочки (в том числе и связанные обработкой редактируемого текста):

Рис. 5. Модуль Терминал

Модуль Терминал в Kate — пример реализации технологии KParts, и обеспечивается одноимённым пакетом, то есть kparts. В в среде KDE он автоматически устанавливается как зависимость, и ломать над этим голову применителю не приходится.

Терминальное окно в Kate по умолчанию наследует настройки материнской Konsole. Однако его можно и настроить независимо, выбрав из контекстного меню по ПКМ пункт Настроить профиль. И в нём изменить, например, размер шрифта для пущей компактности вывода, и цветовую схему. Последнее с самого жестокого похмелья одним взглядом решить проблему Штирлица, попавшего в вытрезвитель — в Гестапо терминале он или в ГПУ Konsole. А то и вовсе в УСС у Аллена Даллеса выпадающем терминале Yakuake…

В deb based системах (например, в MX Linux) с их более дробным пакетированием при установке Kate вне среды KDE, например, в каком-либо Gtk-десктопе, никакого встроенного терминала в этом редакторе не обнаружится — потребуется доустановить пакет konsole-kpart, который отвечает за «консольную» часть технологии KParts.

Вызов (и скрытие) терминального окна по умолчанию обычно вызывается стандартной в таких случаях клавишей F4. И не только в редакторах, но и файловых менеджерах, и не только в KDE.

К слову — для передачи фокуса от терминала к редактору и обратно служит комбинация клавиш Control+Shift+F4. И это тоже не только в Kate, но и во многих аналогичных случаях (насколько я знаю, едва ли не во всех).

Однако в Kate экранную клавишу вызова терминала можно и встроить в статусную панель — вместе с клавишей вызова поиска и замены, как это сделано на предыдущем скриншоте (рис. 4). И сделано через главное меню Вид, где выбирается пункт Кнопки боковой панели, а там отмечаются «птицами» боксики Показывать кнопку Выполнить поиск и Показывать кнопку Терминал:

Показать кнопки поиска/замены и терминала

Правда, как видно из последнего скриншота, боковой панелью для этих кнопок оказывается панель статусная, но с кем не бывает… Тем более, что тот же скриншот показывает возможность показа кнопок для вызова более иных модулей. Как знать, может, им повезёт больше — оказаться на своём месте?

Модули управления файлами

Прямое отношение к авантажности редактора имеют модули просмотра файловой системы и дерева документов. И соответствующие им кнопки появляются где надо — в верху левой боковой панели; их можно видеть на всех предыдущих скриншотах, начиная с четвёртого (см. рис. 4 и далее).

В первом случае кнопка выводит список всех файлов текущего каталога:

Обзор файловой системы

Во втором же — только файлов открытых, в том числе созданных, но не сохранённых:

Дерево документов

В обоих модулях можно выполнять стандартные манипуляции с файлами — во-первых, кнопками управления в верхней части боковой панели. Они, правда, маленькие (я еле вижу) и не очень понятого смысла, но сопровождаются всплывающими подсказками. Да и самих кнопок мало, на все случаи жизни не хватит

Поэтому есть и во-вторых — контекстное меню по ПКМ на имени файла. В модуле обзора файловой системы оно выглядит так:

Обзор файловой системы. Контекстное меню

А в модуле дерева документов — чуть иначе и более полно:

Дерево документов. Контекстное меню

Но вместе они делают общее дело, позволяя выполнять практически все каждодневно необходимые файловые манипуляции, не заставляя обращаться к специализированным программам, то есть менеджерам файлов (в нашем случае чему-то типа Dolphin’а или Krusader`а).

Модуль управления сниппетами

В аппендиксе про авантажные редакторы, предшествующим нашей истории, говорилось о важности для сочинителя поддержки языков разметки. А также о том, что это осуществляется с помощью либо макросов, либо сниппетов.

Преамбула

В редакторах, в которых с работал на заре своего сочинительства, имелись средства простого создания прототипов «домотканных» макросов путём протоколирования своих действий с последующей их записью и редактированием. И долгое время я этим вовсю пользовался и в joe (о котором некогда говорилось), и в NEdit’е, и в Geany, и в Komodo Edit’е. Огорчаясь при этом отсутствием (тогда) подобных средств в Kate, которому тоже всегда испытывал тёплые чувства.

Слово «сниппет» я тогда если и слышал, то сугубо отвлечённо, не очень представляя, что это такое и не примеряя к своим задачам. А потому был весьма удивлён, когда, опасаясь за будущее Gtk-сред и приложений и, подбирая им KDE-аналоги, обнаружил, что в KDE для реализации автоматической разметки используются именно спиппеты. Присмотревшись к ним внимательней, понял, что это вещь в нашем сочинительском деле полезная — эффективная и удобная. А потому взял на вооружение. Но начну по порядку.

Сниппеты

Некогда по любому вопросу обращались к Святому Писанию и сочинениям Отцов Церкви, позднее на их место пришли труды классиков марксизма-ленинизма и Большая Советская Энциклопедия. Ныне в авторитете Википедия, которая, кроме только что перечисленного, «включает в себя весь ислам с кораном, шариатом, книгой тариката и всеми другими книгами, и всю буддийскую веру, и всю иудейскую веру, и все христианские заблуждения». Так что начну с цитаты из соответствующей статьи этого солнца современной мудрости:

Сниппет (англ. snippet — отрывок, фрагмент) — фрагмент исходного текста или кода программы, применяемый в поисковых системах, текстовых редакторах и средах разработки.

Применительно к нашему случаю, под сниппетом (в русскоязычных материалах слово это и переводится обычно исконным праславянским термином «фрагмент»), под сниппетом будут пониматься конструкции используемых языков разметки, таких, как TeX, Markdown, HTML. Первый из них актуален для «бумажных» публикаций (а я, как старина Пендальф «с синим завязал наглухо», с «бумагой» покончил во 2-й половине нулевых), величием же Markdown’а пока так и не проникся. Так что далее будет идти только об HTML-разметке, да и то — весьма упрощённой.

Управление сниппетами

В процитированной статье есть ещё одно определение:

Управление сниппетами (англ. snippet management) — функциональность некоторых редакторов кода и сред разработки. Она позволяет пользователю сохранять сниппеты для дальнейшего использования в процессе разработки кода в этом редакторе.

Под этими словами подразумевается в нашем случае: что именно надо сделать для работы со сниппетами — конкретно, уже существующими в составе Kate. Понятно — для начала надо через меню Настройка —> Настройки Kate перейти к управлению модулями и отметить там боксик Фрагменты, что расшифровывается так: Управление фрагментами кода и загрузка новых фрагментов (см. третий скриншот).

Затем в меню Вид, где в пункте Боковые панели боксик общего показа боковых панелей был «оптичем» ранее, при разборках с модулями файлов и документов, поставить «птицу» в боксе Показать панель «фрагмент». Панель эта будет сворачиваться и разворачиваться кнопкой Показывать кнопку Фрагменты, которую мы сейчас окучим через главное меню Вид —> Кнопки боковой панели.

На этот раз панель сниппетов оказывается действительно боковой и, более того, правой. Правда, совсем пустой, если не считать её собственной панели инструментов. Кнопки на которой, как и случаях с левой панелью мале нькие до почти полной нечитаемости, поэтому надо следить за руками… пардон, экранными подсказками. А главное — как можно скорее загрузить один из подходящих наборов сниппетов, они называются комплектами.

Комплекты и их загрузка

Для этого представим, что поле правой боковой панели — пустое (не удалять ведь уже скачанные и даже частично отредактированные комплекты, не правда ли?), щёлкнуть на нём правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Загрузить фрагменты:

Рис. 11. Загрузка сниппетов

Перед нами предстают все комплекты сниппетов, которые наготовило сообщество для редактора Kate. В чём разработчики последнего дают отмазку: мол, «фирма веников не вяжет, но гарантий не даёт». Принимаем это к сведению:

Рис. 12. Список доступных комплектов

Однако «огласить весь список» даже не требуем: он большой, а порядок в нём маленький — можно показать

  • все комплекты (как на предыдущем скриншоте),
  • только установленные (которых быть не должно), и
  • только обновляемые (которых почему-то нет тоже).

А сам список можно отсортировать по:

  • новизне,
  • алфавиту,
  • высоте оценки и
  • популярности.

В поисках какого-либо комплекта может помочь только алфавитная сортировка:

Рис.!3. Сортировка доступных комплектов

Да и от неё толку немного. Хотя от прочих — нет вообще.

Поиск комплектов

Поэтому проще и надёжней воспользоваться с этой целью банальным поиском. Если в поле поиска задать ключевое слово html, то в результате мы получим четыре комплекта сниффетов, в той или иной мере поддерживающих эту разметку:

Рис.14. Комплекты поддержки разметки HTML

В итоге я выбрал комплект HTML5 Tag Autocomplete от некоего Bings’а, нажав кнопку Установить (которая затем заменилсь на кнопку Удалить), в результате чего комплект и него сниппеты поместились на правую боковую панель. Настало время этот комплект индивидуализировать. Для чего требовалось выполнить ряд операций.

Во-первых, вызвать контекстное меню по ПКМ на нём и выбрать в нём пункт Изменить комплект:

Рис. 15

В появившемся окошке заменить исходное название комплекта HTML5 Tag… на, скажем, Alvs Tags:

Рис: 16

А заодно и потибрил авторство этого самого Bings’а (ибо не родственник мне Студебеккер Bings, и не папа мой Студебеккер Bings):

Рис. 17

Теперь в правой панели два комплекта — с разными именами, но (пока ещё) одинаковыми наборами одних и тех же сниппетов. Они обеспечивают вставку практически всех тегов HTML5. Исходному комплекту предстоит сохраняться в первозданном виде ныне, и присно, и во веки веков: на всякий пожарный случай.

Чтобы не путался под ногами (точнее, руками), исходный комплект деактивируется — просто снимается «птица» с его имени. После чего и он сам, и всего сниппеты приобретают «бледный вид», тогда как Alvs Tags продолжает выглядеть ярко:

Рис. 18

Если «бледный вид» исходного комплекта намекает, что о нём можно и забыть (если не случится ничего нештатного), то яркость новообретённого комплекта открытым текстом говорит, что с ним-то работа ещё только началась. И первая её стадия — это разрузка комплекта от лишних спиппетов.

Как уже говорилось, сниппетами исходного комплекта окучены едва ли не все теги, предусмотренные W3C для HTML5, что выглядит явным излишеством. Поэтому я оставил только те теги, которые использую если не каждодневно, то постоянно и систематически. Лишние теги можно убирать с помощью контекстного меню по ПКМ на имени сниппета:

Рис. 19

Либо — соответствующей кнопкой из инструментов правой боковой панели — не случайно единственной, окрашенной в красный цвет:

Рис. 20

В обоих случаях появляется одинаковое окошко-предупреждение, после согласия с которым (кнопкой Продолжить) сниппет исчезает:

Рис. 21

После очистки комплекта от сниппетных излишеств правая боковая панель приобретает такой вид:

Рис. 22

То есть комплект сниппетов поддержки HTML-разметки, созданный на основе комплекта Bings’а, приобрёл обозримость, умещаясь по вертикали на один экран.

Редактирование сниппетов

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

Первое, что напрашивается на редактирование — это закрепление горячих клавиш если не за каждым сниппетом, то за многими из них. Это должно обеспечивать набор текста с «минимальным отрывом от клавиатуры», то есть максимальной скоростю.

Второе — комбинации горячих клавиш должны быть по возможности просты (то есть требовать минимальных, елико возможно, нажатий), единообразны и мнемонически понятны (хотя бы своему создателю).

Третье — клавиатурные комбинации для вызова сниппетов, опять же по возможности, не должны конфликтовать с хоткеями, по умолчанию применяемыми в средю KDE и редакторе Kate; конфликты эти (почти) разрешаемы, однако разборки с ними могут затянуться до турецкой пасхи.

Наконец, следует помнить напутствие атамана Платова Левше: «Не пей мало, не пей много, а пей средственно». Аналогичный случай и с хоткеями: если их мало — не хватит, если много — не запомнишь. Их должно быть ровно сколько, сколько нужно…

Изложенные требования противоречивы, и противоречия эти — решать применителю. Поэтому заканчиваю рассуждения, а подготовлю (со временем) Шпаргалку по хоткеям. Не как пример для подражания, а как иллюстрацию одного из способов решения поставленной задачи.

А пока — вкратце о принципе определения горячих клавиш для вызова сниппетов HTML-разметки. Управляющая часть во всех хоткеях одинакова — Control+Alt. Определяющая часть большинства хоткеек — первый символ имени сниппета, большинство из них уникальны, о немногих исключениях будет говориться в Шпаргалках. Горячие клавиши для ввода заголовков — те же Control+Alt–[#], где # — соответствует уровню заголовка (от 1 до 6).

Создание сниппетов

Как уже говорилось, для обеспечения HTML-разметки сниппетов в комплекте Bings’а более чем вдоволь. И даже после тотальной чистки остатков для моих целей вроде бы хватало. Так что, казалось бы, причин заниматься массовым сниппето-творчеством не было (за единственным исключением, о котором скажу позднее).

Но таки оказалось, что в повседневной жизни один сниппет мне понадобился. Этого вроде не прописано ни в каких стандартах, но обычно принято так: гиперссылки на материалы с данного сайта по умолчанию открываются в том же окне браузера и в той же его вкладке (то есть табе), где ранее была родительская страница, а ссылки на сторонние ресурсы — в новом окне браузера или в новом табе. Хорошо ли это или плохо, но не лишено логики. А главное — для многих (в том числе и для меня) привычно.

За простую ссылку в нашем комплекте отвечает сниппет . Так что нужно просто создать такой же — открывающий ссылку в новом окне или табе. Для этого — ПКМ на имени комплекта, куда хотим поместить сниппет (в данном случае на Alvs Tags!) и выбор, соответствующего пункта из контекстного меню:

Рис. 23

Далее — открывается окошко создания сниппета, поля которого полежат заполнению. Начинается, разумеется, с имени, о чём напоминает капитан Врунгель: «как вы сниппет назовёте…» (rem — от remote). Текст, вставляемый сниппетом — обычная гиперссылки с атрибутом цели и его значением. Назначается хоткей (в соответствие с ранее Изложенными принципами) и voila! — «лицевая сторона» сниппета готова:

Рис. 24

Ну а «оборотная сторона» его, то есть вкладка Сценарии, в наглую лямзится у сниппета обычной ссылки:

Рис. 25

Как вы видите, процесс создания сниппета прост, и сделать его быстрее, чем описать, как его сделать.

Сниппеты или макросы?

В связи с простотой создания сниппетов и их использования возникает вопрос, который студьозусы Вагнер и Кох однажды задали великому русскому поэту Алексей Константинычу, aka Толстому: «Кто доблестней, Фриц или Вагнер»? Или, иными словами, что лучше (проще, эффективней etc., нужное дописать) использовать в сочинительском ремесле — макросы или сниппеты?

Как известно, Толстой-ака ответил абсолютно точно и однозначно: «Мне нравятся очень… обои». И я мог бы присоединиться к мнению нашего самого великого поэта: 20 лет пользовался макросами, а не так давно приобщился сниппетам. Однако вопрос для меня оставался неоднозначным — при использовании Kate я продолжал сожалеть об дьяволе отсутствии макросов, к которыми с удовольствием (и пользой!) прибегал в Geany и Komodo Edit.

Но не так давно в Kate появилась поддержка макросов, а в Geany — напротив, поддержка сниппетов. В обоих случаях точный момент я пропустил, и на сниппетах в Geany, ввиду утраты интереса к этому редактору, глаз на задержался. А справедливости ради замечу: в Komodo Edit и макросы, и сниппеты были уже давно.

А вот на сниппеты в Kate я решил поглядеть. Для чего включил соответствующий модуль (опять же см. скриншот 3). После чего в Сервис‘е главного меню появился пункт Клавиатурные макросы, с единственным активированным подпуктом Записать макрос:

Рис. 26

Дальше я вспомнил, какое это скучное занятие — сначала аккуратно протоколировать последовательность действий, а потом терпеливо исправлять неизбежные и многочисленные ошибки (хотя и говорят, что «из протокола тега не выкинуть» — но как раз из него и приходится). И главное, для чего? А ещё гдавнее, зачем?! В общем, отложил я макросы в очень-очень долгий ящик…

Однако, пора завязывать со всякими модулями, сниппетами и прочими комплектами. Перейдя к важнейшему вопросу авантажности Kate, или самому авантажнейшему из важных. Но об этом — в следующем номере нашей программы. Но — после (рекламной) паузы

Автор: alv

Про себя напишу потом

Добавить комментарий