Linux Mint и его Cinnamon. Очерки применителя. Часть 8

Алексей Федорчук aka Alv

Всё, что было описано в предыдущих очерках — и установка системы, и знакомство с его графической рабочей средой, и получение представлений о работе в командной оболочке, в том числе в лице лучшей их представительницы, Zsh, и овладение средствами управления пакетами — в конечном счёте преследовало одну цель: оптимальным образом применять Linux Mint для решения своих практических задач. Что осуществляется посредством пользовательских приложений, обозрение которых и будет предметом следующей серии очерков.

Обзор приложений. Терминалы и текстовые редакторы

Как я уже говорил раньше, специфика среды Cinnamon — почти полное отсутствие собственных приложений. Однако это не значит, что таковых нет после установки соответствующей редакции дистрибутива: в него включены некоторые приложения, заимствованные из GNOME 3, а также обширный набор программ, основанных на библиотеках Gtk. Однако делать обзор штатных приложений Cinnamon-редакции мне показалось скучным, тем более что большую их часть я не использую. Поэтому, за редким исключением, они будут лишь упомянуты. А основное внимание будет уделено их альтернативам, которые я люблю и знаю.

Как говорилось в очерке о Nemo, «непременный джентльменский набор» применителя, кроме файлового менеджера, включает программу эмуляции терминала и текстовый редактор. Вот с терминальных программ я и начну.

Программы эмуляции терминала

Роль терминальных программ в современной жизни линуксоида переоценить трудно. Это связано с постепенным отмиранием чисто текстовой консоли — ведь давно минули времена, когда она обеспечивала больший комфорт для глаз, нежели любой графический режим. На нынешних LCD-мониторах, да ещё и широкоформатных, стандартный текстовый режим 80×25 способен лишь вышибить скупую мужскую слезу (иногда — в буквальном смысле слова). А режимы нестандартные, реализуемые через фреймбуфер, во-первых, часто требуют настройки, во-вторых, не для всех видеокарт доступны, в-третьих, всё равно не всегда обеспечивают должный комфорт.

С другой стороны, с появлением хороших TTF-шрифтов и развитием методов обеспечения их качественного рендеринга, работа в оконой системе X стала очень комфортной и приятной. А поскольку эффективность применения интерфейса командной строки (CLI) никто ещё не отменил — в качестве поля для него целесообразно использовать именно эмуляторы терминала в графическом режиме.

GNOME Terminal

В Cinnamon-редакции Mint штатным эмулятором терминала выступает программа GNOME Terminal. Как нетрудно догадаться по её имени, она заимствована из среды GNOME (с адаптацией для Cinnamon). И в виде пакета gnome-terminal устанавливается при стандартной инсталляции дистрибутива. После чего запускается через главное меню: Стандартные -> Терминал, открываясь примерно в таком виде:

01-gnome_001

Обращаю внимание на отсутствие строки главного меню по умолчанию. Включить показ его можно через меню контекстное, по правому клику мыши:

01-gnome_002

Оно включает следующие пункты: Файл, Правка, Вид, Терминал и упомянутая ранее Справка. Через последний пункт, в подпункте О программе, можно посмотреть список её авторов:

01-gnome_003

И переводчиков интерфейса на русский язык:

01-gnome_004

А по остальным пунктам можно оценить возможности GNOME Terminal.

В меню Файл присутствуют следующие пункты:

  • Открыть терминал — создание нового терминального окна;
  • Открыть вкладку — создание вкладки (tab) в текущем окне, в которой запускается собственный экземпляр командной оболочки пользователя;
  • Создать профиль — об этом мы поговорим, когда займёмся настройками терминала;
  • Закрыть вкладку и Закрыть окно, смысл которых очевиден.

01-gnome_005

Здесь пока остаётся только добавить, что GNOME Terminal поддерживает количество вкладок, ограниченное только здравым смыслом и соображениями удобства. Каждая вкладка по умолчанию имеет заголовок Terminal, но его легко изменить на любой мнемонически осмысленный через контекстное меню по щелчку правой кнопкой мыши на табе:

01-gnome_006

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

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

01-gnome_007

В меню Правка — стандартные для всех нынешниъ GUI’ёв пункты: Копировать, Вставить, Выделить всё. Назначение их своеобычное, так что и задерживаться на них не будем:

01-gnome_008

А о пунктах Профили, Комбинации клавиш, Настройки профиля поговорим, когда дело дойдёт до триариев… то есть до конфигурирования.

В меню Вид — пункты показа/скрытия меню, переключения в полноэкранный режим и обратно (по клавише F11) и масштабирования:

01-gnome_009

Масштабирование выполняется также обычными комбинациями клавиш — Control++, Control+ и Control+0 (увеличение, уменьшение и приведение к исходному размеру, соответственно).

В меню Терминал — такие пункты:

  • Изменить профиль, рассмотрение которого пока отложим, тем более что он ещё не активизирован;
  • Установить заголовок — действие, аналогичное таковому через контекстное меню вкладки;
  • Установить кодировку символов — изменить чарсет вывода вместо определённого общесистемной локалью; чрезвычайно полезная опция, когда при юникодовской кодировке приходится читать старые тексты в KOI8 или CP1251;
  • Сброс — теоретически удаление текущего сождержимого командной строки, аналогично комбинации Control+C; практически никакого эффекта не оказывает;
  • Сброс и очистка — кроме удаления содержимого командной строки (действительно работает), ещё и очищает экран от вывода предыдущих команд, аналогично действию команды clear.

Кроме того, в меню Терминал можно изменить размеры окна, выбрав одно из четырёх фиксированных значений (в символах): 80×24, 80×43, 132×24, 132×43. Впрочем, перемасштабировать терминальное окно произвольным образом с помощью мыши тоже не запрещается.

01-gnome_010

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

01-gnome_011

Удобство использования любой терминальной программы во многом определяется гибкостью и простотой её настроек. Посмотрим, что нам в этом отношении может предложить GNOME Terminal.

Все настройки терминала осуществляются через модификацию профилей в соответствующем пункте меню Правка. По умолчанию имеется всего один профиль, который так и называется — Default. Однако через меню Файл -> Создать профиль их можно определить сколько угодно:

01-gnome_012

После задания имени профиля, определения, на каком из существующих он будет основываться (а пока, кроме профиля Default, основываться больше не на чем), и нажатия кнопки Создать появляется собственно панель настройки, содержащая серию вкладок:

01-gnome_013

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

Во вкладке Заголовок и команда определяются:

  • исходный заголовок терминала;
  • поведение заголовка в зависимости от устанавливаемого исполняемой программой — замещение исходного, присоединение к нему, и так далее;
  • запуск командной оболочки как обычной интерактивной или регистрационной оболочки пользователя (login shell); при обычных настройках bash разницы между ними почти нет (у меня так нет вообще), но при желании это положение можно изменить, особенно, если использовать не bash, а zsh;
  • запуск иной команды вместо пользовательского шелла: так, для разработчиков это может быть интерпретатор любимого языка программирования, а для обычных пользователей — например, Midnight Commander;
  • поведение терминального окна по завершении исполняемой в нём команды — закрытие терминала или перезапуск команды.

01-gnome_014

Во вкладке Цвета определяются цвет текста и фона — приводимый скриншот в комментариях не нуждается:

01-gnome_015

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

01-gnome_016

Во вкладке Прокрутка устанавливается положение полоски скроллинга и задаётся (в строках) длина прокручиваемой истории команд:

01-gnome_017

Наконец, во вкладке Совместимость можно переопределить назначение клавиш Backspace и Delete. Зачем это может понадобиться — исчерпывающе сказано в комментарии (как правило, не за чем):

01-gnome_018

После создания дополнительных профилей их имена появляются как альтернативы выбора в меню Файл -> Открыть терминал — в новом терминальном окне будет запущен выбранный профиль:

01-gnome_019

Однако, как явствует из меню Файл -> Открыть вкладку, и в каждой вкладке одного и того же окна теперь может быть выбран тот или иной профиль, со всеми своими атрибутами — шрифтом, расцветкой, заголовком, типом фона и так далее:

01-gnome_020

Это удобно для различения вкладок разного назначения. Так, я определяю разные параметры для обычного пользовательского профиля и профиля вкладки, в которой я обычно получаю права root’а (командой sudo -i). Список заданых профилей можно просмотреть через меню Правка -> Профили:

01-gnome_021

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

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

01-gnome_022

Для этого достаточно дважды щёлкнуть по строке нужного действия и нажать новую комбинацию. Правда, определить собственное действие, отсутствующее в списке, не получится.

Таким образом, можно видеть, что по своей функциональности GNOME Terminal вполне соответствует своему назначению. И к нему можно подбирать не столько альтернативы, сколько дополнения.

Terminator

Таким дополнением к GNOME Terminal может стать терминальная программа Terminator. Она имеется в официальном репозитории в виде одноимённого пакета, который устанавливается стандартным образом:

$ apt install terminator

После этого программа обнаруживается в секции Администрирование главного меню Cinnamon, где она носит имя Терминатор. И после запуска выглядит следующим образом:

02-terminator_023

Как и в GNOME Terminal, в Terminator’е строки меню нет — но не по умолчанию, а от слова «вообще»: все действия выполняются через контекстное меню по правому клику мыши:

02-terminator_024

И первый же взгляд на контекстное меню выявляет главную (и убийственную) фичу Terminator’а — возможность разбиения терминального окна на произвольное количество субтерминалов, каждый из которых имеет свою титульную строку, и в каждом запущен независимый экземпляр командной оболочки:

02-terminator_025

Число субтерминалов ограничено только целесообразностью и здравым смыслом:

02-terminator_025a

Не запрещается и создание вкладок, причём каждая вкладка может быть разбита независимо от других.

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

02-terminator_026

Для полного снятия разбиения на субтерминалы предназначен пункт Закрыть контекстного меню.

Из того же контекстного меню можно видеть, что Terminator позволяет переключать кодировку вывода — независимо для каждой вкладки и каждого субтерминала.

02-terminator_027

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

02-terminator_028

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

02-terminator_029

Во вкладке Profiles — шесть субвкладок, смысл которых понятен из скриншотов или по аналогии с настройкой профилей GNOME Terminal:

02-terminator_030

02-terminator_031

02-terminator_032

02-terminator_033

02-terminator_034

02-terminator_035

Профиль может быть определён для каждого субтерминала и каждой вкладки независимо друг от друга.

Вкладка Layouts позволяет создать разбиение окна на субтерминалы и привязать его к определённому профилю:

02-terminator_036

Во вкладке Keybindings настраиваются горячие клавиши:

02-terminator_037

Во вкладке Plugins включаются и выключаются дополнительные модули:

02-terminator_038

Они отражаются в контекстном меню. Например, включение модуля TerminalSot добаляет в него пункт Снимок окна терминала:

02-terminator_039

Который предлагается сохранить в виде файла:

02-terminator_040

В отличие от GNOME Terminal, где все изменения вступают в силу немедленно, после включения или отключения любой опции, в Terminator’е они претворяются в действительность в момент закрытия панели настроек. Аналога кнопки Применить, характерной для KDE-приложений, также не имеется.

В общем, функционал Terminator’а может быть востредован в ряде случаев. Однако настройки его не вполне прозначны, и потому в повседневной жизни проще применять GNOME Terminal.

Выпадающий терминал Tilda

Некогда, с подачи Сергея Голубева, проникся я идеей выпадающих (drop-down) терминалов — тогда в виде Yakuake, ибо работал преимущественно в среде KDE. Проникся настолько, что почти перестал применять обычный эмулятор терминала, в данном случае Konsole: практически во всех случаях удобней оказывалось прибегнуть либо к терминальному окну, встроенному в файловый менеджер (будь то Konqueror или Dolphin) или текстовый редактор (сиречь Kate), либо вызвать терминал выпадающий.

Переключившись на рабочие среды, основанные на Gtk (Xfce, Unity, Cinnamon), я начал подыскивать аналогичные средства эмуляции терминального режима. Как было сказано в очерке про Nemo, с терминалом, встраиваемым в этот файловые менеджеры, в конце концов решилась. А по части выпадающих терминалов имелся изрядный выбор: Terra Terminal, Guake и Tilda.

К сожалению, первая из названных программ прекратила своё развитие, вторая, а две вторые я применял попеременно, пока в итоге не остановился последней: основанная на Gtk 3, Tilda, как мне кажется, лучше вписывается в окружение Cinnamon, базирующееся на тех же библиотеках, нежели Guake, в основе которой лежит Gtk 2. Впрочем, с практической точки зрения, разница между этими двумя программами не велика. И по описанию Tilda легко понять, как работать с Guake, буде такая необходимость возникнет.

Пакет Tilda входит в официальный репозиторий Mint (точнее, в ту его часть, которая напрямую заимствована из Ubuntu), и потому устанавливается стандартно:

$ apt install tilda

После чего Tilda может быть запущена из одноимённого пункта секции Администрирование главного меню Cinnamon. Однако для любого выпадающего терминала такой метод запуска имеет не много смысла — он всегда должен быть под рукой. И потому надо обеспечить Tilda постоянное присутствие посредством Системных настроек и их пункта Автозагрузка:

03-tilda_041

Однако первый раз имеет смысл запустить Tilda из главного меню:

03-tilda_042

И заняться её настройками: соответствующая панель при первом запуске вызывается автоматически:

03-tilda_043

Правда, на скриншоте дан вид с уже сделанными мной настройками, но смысл их, я думаю, понятен без комментариев — как и настроек в остальных вкладках панели. Остановлюсь только на трёх моментах.

Во вкладке Внешний вид можно не только задать размеры терминального окна, но и его центрирование — не только по горизонтали, но и по вертикали, включить анимацию и её направление:

03-tilda_044

При центрировании по обеим осям и включённой анимации выпадающий терминал можно при желании превратить в терминал, «всплывающий» посреди экрана:

03-tilda_045

Во вкладке Заголовок и команда можно изменить начальный заголовок терминала и расположение заголовка, автоматически присваиваемого запущенной в нём командой (например, Midnight Commander):

03-tilda_046

Во вкладке Сочетание клавиш устанавливается способ вызова терминала — по умолчанию почему-то это клавиша F1. Что я немедленно заменил на стандартную для программ такого рода клавишу F12:

03-tilda_047

Повторное нажатие той же клавиши убирает выпадающий терминал с глаз долой.

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

  • Shift+Control+T — создание новой вкладки;
  • Shift+Control+W — закрытие текущей вкладки;
  • Control+PageUp — переход на предыдущую вкладку;
  • Control+PageDown — переход на следующую вкладку;
  • Shift+Control+C — копирование выеделнного фрагмента в буфер;
  • Shift+Control+V — вставка содержимого буфера позицию курсора;
  • Shift+Control+Q — выход из Tilda.

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

03-tilda_048

Кроме контекстного меню, новую вкладку, как только что было сказано, можно создать и обычными для большинства терминальных программ хоткеями — Shift+Control+T. Каждой новой вкладке присваивается заголовок, установленный в панели настроек по умолчанию. Вкладки можно перемещать, просто перетаскивая их мышью.

На этом функционал программы исчерпывается — однако больше от неё ничего и не нужно. А свои непосредственные функции — представить интерфейс командной строки в нужном месте и в нужное время, Tilda выполняет исправно и к тому же быстро — заметно быстрее, чем Guake.

Текстовые редакторы

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

Введение

Текстовый редактор в равной степени необходим программисту и сисадмину, веб-мастеру и блогеру, а также массе трудящихся, чья сфера деятельности с IT никак не связана: «традиционным» журналистам, писателям и поэтам, редакторам и переводчикам, научным работникам… короче говоря, всем работникам профессий, которые в советское время было принято называть творческими. И всем, чьё творчество связано со СЛОВОМ.

Правда, за исключением первых трёх категорий, большинство творческих работников об этом и не подозревают — за исключением, конечно, тех немногих из них, кто в одной из своих прошлых жизней каким-то боком не пересекался с IT-сферой. А потому, сочиняя свою нетленку или прелагая чужую, они обычно пользуются таким неуклюжим инструментам, как word processor (которые по русски почему-то называются текстовыми процессорами, хотя на самом деле text processor — это нечто совсем иное). И неважно, как этот инструмент называется — MS Writer’ом, AOo Writer’ом, Libre Writer’ом или даже AbiWord’ом — важно, что все они разрабатывались для изготовления бюрократических циркуляров, а не для творческой работы.

Разумеется, представители клана творческо-технологического, в частности, линуксописатели (в том числе и автор этих строк), предпринимали многочисленные попытки изменить существующее положение дел, открыв глаза собратьям по клану творческо-гуманитарному на мощь и величие текстовых редакторов вкупе с набором несложных утилит командной строки, таких, как cat, split, find, grep etc., или их графических фронт-эндов. Попытки эти, за небольшими частными исключениями, терпели фетяску. В том числе и потому, что многие из них предпринимались с негодными средствами, но к этому вопросу я ещё вернусь в заключительных строках.

В Cinnamon-редакции Mint в роли штатного текстового редактора выступает Gedit. Однако, если GNOME Terminal, как было только что показано, способен выполнять свои обязанности вполне справно, то Gedit определённо требует подбора альтернативы. Так что ниже я очень вкратце рассмотрю базовую его функциональность. А потом перейду к описанию альтернатив, которых оказывается целых две — текстовые редакторы (или лёгкие IDE) Geany и Komodo Edit.

Текстовый редактор Gedit

Текстовый редактор Gedit, подобно GNOME Terminal, заимствован из среды GNOME 3. Устанавлитваясь по умолчанию при стандартной инсталляции, он вызывается из секции Стандартные главного меню Cinnamon, где фигурирует под именем просто Текстовый редактор. Его можно также запустить, щёлкнув на имени чисто текстового файла (plain text, )7 Или, зафиксировав курсор на имени, например, html-файла, правым кликом мыши вызвать контекстное меню, выбрав в нём пункт Open with -> Текстовый редактор:

04-gedit_49

После чего он предстаёт примерно в таком виде:

04-gedit_50

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

04-gedit_51

Как видно на скриншоте, Gedit обеспечивает подсветку синтаксиса разных языков программирования, а также языков разметки. Из других особенностей можно отметить наращиваемый поиск (здесь он называется последовательным), как в браузерах. Только здесь он вызывается комбинацией клавиш Control+K:

04-gedit_52

Имеется также проверка орфографии, в том числе и автоматическая, а также статистика документа (в меню Сервис):

04-gedit_53

В Gedit настраиваются (Правка -> Параметры) режим «мягкого» переноса, включение/выключение нумерации строк и так далее:

04-gedit_54

Можно поменять шрифт и цветовую схему:

04-gedit_55

Во вкладке Модули включаются или отключаются дополнительные функции, такие, как изменение регистра выделенного текста и другие (ряд модулей включён по умолчанию):

04-gedit_56

В репозитории для Gedit доступно несколько плагинов, большинство из которых ориантировано на специальные задачи разработчиков или Tex-верстальщиков. Однако пакет gedit-plugins — более общего назначения, почему и подлежит и подлежит установке:

$ apt install gedit-plugins

После этого во вкладке Модули добавляется ряд новых функций, таких, как автоматическое закрытие скобок и кавычек, знакомство с которыми оставляю на усмотрение заинтересованных лиц.

Мне Gedit кажется откровенно скучным — в том числе и потому не вполне понятно его позиционирование: в качестве лёгкого редактора, предназначенного для правки конфигов (подобно Mousepad или Leafpad) он явно избыточен, а для всамделишней работы с большими текстами — недостаточно функционален, даже при условии установки дополнительных плагинов. В частности, в нём напрочь отсутствует возможность работы с проектами, что обесценивало для меня любые иные его достоинства, даже если бы таковые нашлись. И потому в следующих очерках я обращусь к возможным альтернативам Gedit’а.

Альтернативные редакторы: введение

Таким образом, Gedit не подходит для сочинения объёмных материалов, хотя бы серии статей в рамках одной темы, не говоря уже о книгах, когда приходится работать со множеством взаимосвязанных текстовых документов. И тут, как ни странно, оказывается, что требования к текстовому редактору со стороны применителя-текстовика часто пересекаются с таковыми разработчика, сочиняющего что-либо посложнее Hello, world!, с некоторым, иногда большим, числом файлов, предназначенных для реализации одной задачи. И потому обоим нашим героям от текстового редактора требуется средства управления проектами и манипуляций файлами. Причём не обязательно файлами только текстовыми — ведь некоторые авторы имеют обыкновение иллюстрировать своим материалы.

Кроме того, соничение оригинальных материалов не сводится к их набору из головы (ну или кто чем эти материалы сочиняет). Потому что набор текста оказывается неотделимым от его редактирования. Под которым в рассматриваемом случае подразумевается не только (и не столько) исправление орфографических ошибок и опечаток, сколько стилистическая правка. Которая часто требует свободного перемещения между строками, абзацами и даже страницами уже набранного текста. И тут очень важной оказывается развитая система кейбиндингов, позволяющая мгновенно, без нудного стучания по клавишам Left и Right, Up и Down, переместиться к участку текста, требующего стилистической правки.

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

Ай да я, ай да сукин сын: так здорово придумал — и забыл…

Наконец, ещё одна составляющая набора и редактирования текста — разметка. Да, я понимаю стремление отделить мух от котлет набор и вёрстку. Но дело в том, что при работе на онлайн (а большинство нынешних сочинителей с оффлайном завязали) разметка оказывается частью стилистики, и подлежит немедленному претворению в жизнь. Иначе ищи потом ветра в поле фрагмента, который хотел бы выделить перечёркнутым начертанием, тегом strong или emphasis. Не говоря уж о ссылках на использованные по ходу дела материалы, про которые тоже легко забыть, или которые потом приходится долго искать.

В штатном режиме текстовые редакторы предполагают единственный способ ввода тегов (или элементов разметки TeX’а, если речь идёт о подготовке к «бумаге»): вручную. Что а) скучно, б) долго, в) чревато ошибками. И, наконец, просто отвлекает от процесса сочинительства. Но тут на помощь приходит режим записи макрокоманд, привязываемых к хоткеям. А вот этот режим в текстовом редакторе может отсутствовать или присутствовать. А если присутствует — может быть реализованным по разному: просто, но слабо, мощно, но сложно; в идеале, конечно, мощно и просто.

Так что выбор редактора очень сильно влияет на эффективность работы с текстом на всех её стадиях — от сочинения до разметки. И эффективность эта определяется не только наличием «рюшечек и менюшечек» или их отсутствием, а зависит от многих факторов. И потому следующие несколько абзацев посвящены этому вопросу. Только сразу предупреждаю: тем, кто полагает, что Vim/Emacs наше фсио, лучше их не читать. Как, впрочем, и весь этот очерк…

Программисты находят решение своих задач в применении всякого рода IDE, то есть интегрированных сред разработки (Integrated Development Environment). Интегрированных сред для сочинительства нарративных текстов ещё никем не придумано. Но в этом качестве отлично могут выступить программы, которые лежат там, где кончаются текстовые редакторы и начинаются IDE. А вот их список оказывается очень коротким. Если исключить практически сошедший со сцены NEdit и его клон QEdit, так на эту сцену и не вышедший (в причины обоих явлений вдаваться не буду), то он сведётся к двум с половиной позициям: Komodo Edit за номером один, Geany за номерм два и Kate за номером полтора.

Почему столь унижен Kate? Да потому, что, хотя в нём собственные средства управления проектами появились едва ли впервые среди текстовых редакторов такого рода (апологеты Vim и особенно Emacs, подождите немного), по сию пору остаются в зачаточном состоянии. Хотя этот редактор несравненен по части управления файлами, но это — лишь одна из сторон проектного менеджмента. К тому же Kate, будучи приложенимем KDE, не очень хорошо вписывается в среду Cinnamon.

Между тем Geany, хотя по части управления файлами он и отстал от Kate, все остальные аспекты управления проектами развивались со страшной научно-фантастической силой. И ныне этот некогда просто текстовый редактор именуется обычно лёгкой IDE. Хотя именно вследствие своей лёгкости, то есть — не перегруженности чисто программистскими фичами, он отлично подходит на роль основного инструмента применителя-текстовика.

Однако оказывается, что Komodo Edit превосходит Geany и по части управления проектами (в частности, позволяя одновременно держать открытыми несколько разных), так и в плане файловых манипуляций, включая в себя полноценный файловый менеджер с функциями просмотра изображений. Средства навигации по тексту в нём чрезвычайно изобильны и настраиваемы беспредельно. А уж по части сочинения макросов с ним не может конкурировать ни один текстоый редактор из тех, что я видел.

А что же Emacs и Vim? — спросите вы меня. Отвечаю: это те самые попытки с негодными средствами, о которых я упоминал в начале этой страницы. Да, и из того, и из другого мострактора (монстроидального редактора) можно сделать интегрированную среду для разработки любого рода текстов — от исходников до «нарративников». Но её придётся делать, затрачивая силы и время. А подчас ещё и приобретая по ходу дела некие специфические навыки, например, для Emacs’а — программирования на Lisp. Навыки, которые применителю-текстовику больше никогда и нигде не понадобятся.

Поэтому меня умиляет, когда на всяких форумах на вопрос о выборе текстового редактора технологически продвинутые граждане в качестве универсального решения предлагают Vim/Emacs (в зависимости от своей религиозной ориентации). Для меня это просто показатель непонимания означенными гражданами специфики сочинительской работы. А ведь профессиональный сочинитель воспримет (и воспринимает) такой совет как форменное издевательство. Ибо в том же Geany или Komodo Edit он мог бы иметь всё ему необходимое «искаропки» — хотя он об этом пока и не подозревает.

Текстовый редактор Geany

Вступление

Текстовый редактор Geany (буду называть его так, хотя он и представляется как лёгкая IDE) разрабатывается Энрико Трёгером (Enrico Tröger) и Ником Трелевеном (Nick Treleaven), базируется на библиотеке Gtk 2, распространяется под лицензией GNU GPL v2 (по крайней мере до сих пор). Он присутствует присутствует в официальном репозитории Mint и устанавливается командой

$ apt install geany

Geany способен выполнять практически все функции обычного текстового редактора, как то: инверсию регистров, дублирование текущей строки или выделения, подсветку синтаксиса многих языков программирования и разметки, развитые средства поиска и замены (в том числе с использованием регулярных выражений и escape-последовательностей, учетом регистра и так далее), включать или выключать динамический перенос строк; короче, практически всё, что требуется при наборе и редактировании текста. И не обязательно текста исходного — нарративного тоже, о чем будет рассказано в конце этой заметки.

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

Настоящая заметка посвящена общему описанию редактора Geany и методам его использования при работе с обычными текстами и HTML-документами. Не будучи программистами, авторы не затрагивают вопросы применения этой программы в качестве собственно IDE.

Запускается Geany из главного меню панели задач или рабочего стола (Разработка -> Geany), после чего в открытом окне программы можно видеть следующие интерфейсные элементы (рис. 1):

  • заголовок с именем текущего открытого файла и указанием полного пути к нему;
  • строку главного меню;
  • панель инструментов;
  • боковую панель;
  • окно ввода и редактирования текста с вкладками открытых документов по верхнему краю;
  • окно сообщений;
  • статусную строку.

05-geany_057

Вид главного меню предопределён используемой в Geany библиотекой Gtk+, остальные же элементы, в терминологии программы именуемые виджетами, настраиваются внутренними её средствами.

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

Главное меню программы включает следующие пункты:

  • Файл;
  • Правка;
  • Поиск;
  • Вид;
  • Документ;
  • Проект;
  • Сборка;
  • Инструменты;
  • Справка.

Рассмотрим эти пункты последовательно.

Файл

Пункты меню Файл сгруппированы в несколько блоков:

05-geany_058

Первый из них посвящен созданию новых файлов. Пункт Создать предполагает открытие в окне редактирования пустого документа. Пункт Создать из шаблона предоставляет на выбор с десяток вариантов, позволяющих создать исходный файл с предопределённым шаблоном для нескольких языков программирования (Си, Си++, PHP, Python, Ruby и так далее) и разметки (html, tex).

В начале каждого шаблона содержится комментарий (обозначенный в соответствие с синтаксисом выбранного языка), включающий имя файла, указание на копирайт создателя (откуда оно берётся — мы увидим позднее) и традиционный для программ Open Source отказ от гарантий:

05-geany_059

Далее следует «скелет», типичный для данного языка. Например, для HTML-файла он выглядит следующим образом:

05-geany_060

Сначала идет определение типа документа (!DOCTYPE) и тег html с соответствующими атрибутами. Затем — заголовочный блок с титулом HTML-страницы, указанием набора символов (соответствующим по умолчанию текущей локали) и программы-генератора (то есть самой Geany), открывающий и закрывающий теги body и закрывающий тег html. Рассмотрение шаблона показывает, что он соответствует спецификации XHTML, поэтому при создании чистого HTML-документа (pure html) лучше начинать это дело с «чистого листа».

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

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

Пункт Свойства вызывает панель с указанием типа файла, его размера и полного пути к нему, кодировки, атрибутов времени (модификации, изменения статуса, последнего доступа), принадлежности и прав доступа:

05-geany_061

Далее следуют пункты, относящиеся к печати, закрытию (текущего документа или всех открытых) и, наконец, выход из программы.

Правка

В меню Правка также имеет блочную структуру:

05-geany_062

Сначала следует блок пунктов для обычных действий над текстом — Отменить и Вернуть (последние изменения, откат и возврат многоступенчатые), Вырезать, Копировать, Вставить и Удалить, а также Выделить всё.

Все эти операции дублируются стандартными для современных GUI комбинациями клавиш, типа Control+X, Control+C и Control+V для вырезания, копирования и вставки выделенного фрагмента соответственно. Причём ныне комбинации эти работают и при русской раскладке клавиатуры.

Пункт Форматирование позволяет:

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

Пункт Вставить комментарии подразумевает нечто совсем иное, нежели близкий по звучанию подпункт из Форматирования. Он предлагает на выбор включить в документ такие фиксированные фрагменты, как отказ от гарантий (о котором говорилось ранее), BSD- и GPL-уведомления. Хотя и просто закомментировать несколько пустых строк можно тоже.

Далее идут пункты Вставить дату (с возможностью выбора формата оной) и Вставить include (по умолчанию не активизировано).

И, наконец, пункт Параметры: в нём можно выполнить настройки программы, к которым мы вернёмся после того, как рассмотрим возможности, предоставляемые Geany без всяких настроек.

Поиск

Развитые функции поиска и замены — одно из важнейших отличий «настоящих» текстовых редакторов от «буквонабивалок» класса Notepad’а. И Geany здесь стыдиться нечего:

05-geany_063

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

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

05-geany_064

Перейдя с помощью чекера Найти всё в расширенный режим поиска, оный можно осуществить в текущем документе, во всех открытых файлах, а также установить метки на строки, содержащие искомую последовательность символов.

05-geany_065

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

Поиск предполагает возможность замены найденного — и таковая в Geany имеется. И также осуществляется в двух режимах. В обычном режиме замена происходит последовательно, по мере нахождения очередной подлежащей замене последовательности символов. Нажав всё ту же кнопку Заменить все, можно перейти в расширенный режим, дающий возможность замены в выделенном фрагменте текста, в документе целиком, а также в сессии, то есть во всех документах, открытых в данный момент

05-geany_066

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

Вид

В меню Вид, как нетрудно догадаться, устанавливается визуальное представление как интерфейсных элементов редактора, так и редактируемого документа:

05-geany_067

Так, первый его пункт, Выбрать шрифт, изменяет таковой в окне редактирования — но только на время текущего сеанса (глобальная замена шрифта выполняется через пункт Правка -> Параметры, до которого мы со временем доберёмся).

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

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

Пункты Увеличить, Уменьшить и В обычном размере выполняют масштабирование содержимого окна редактирования, подобно тому, как это делается в браузерах со времен Netscape какой-то бородатой версии. Кстати, и выполняется масштабирование также теми самыми, вот уже много лет привычными клавишами — Control+»серый плюс», Control+»сервый минус» и Control+0, а не только через меню.

Документ

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

05-geany_068

Далее следуют пункты:

  • использовать кодировку Unicode с меткой порядка байтов (BOM), что, насколько нам известно, необходимо только для различения вариантов UTF-16 и UTF-32;
  • установить тип файла для:
    • языка программирования (ассемблер, Си, Си++, Java и так далее),
    • языка скриптинга (shell, Perl, Python, PHP, Ruby, JavaScript и др.),
    • языка разметки (CSS, DockBook, HTML, XML), и
    • прочих языков (конфиги, diff-файлы, LaTeX и так далее),

    в соответствие с чем осуществляются подсветка синтаксиса и автодополнение языковых конструкций; например, в файле, тип которого определен как HTML, закрывающие теги будут ставиться автоматически после набора тега открывающего;

  • установить кодировку — они сгруппированы по регионам (западноевропейские, восточноевропейские, восточноазиатские и прочие), внутри которых уже выбираются собственно наборы символов; кириллические кодировки, если используется не UTF-8, следует искать среди восточноевропейских;
  • установить символ конца строки в стиле Unix, DOS или Mac;
  • убирать остаточные пробелы и заменять символы табуляции соответствующим количеством пробелов;
  • удалить маркеры на строках, которые были помечены при поиске;

Еще раз напомним, что все установки в меню Документ действуют только для текущего файла.

Проект

Средства управления проектами в Geany, как штатные, так и альтернативные,, реализованные в качестве плагинов, будут предметом отдельного мини-очерка.

Сборка

Это меню предназначено в основном для сочинителей исходных текстов. Однако один из его пунктов, а именно, Выполнить, может представлять интерес и для тех, кто сочиняет тексты просто. В частности, файл HTML при выборе этого пункта будет просто-напросто открыт в браузере. Каком — поговорим чуть позже.

Инструменты

В меню Инструменты можно видеть такие пункты:

05-geany_069

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

05-geany_070

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

05-geany_071

И, наконец, Менеджер модулей — в этом пункте можно включить использование различных плагинов плагинов:

05-geany_072

Подробнее этот вопрос будет рассмотрен в соответствующем миниочерке. А разбираться с прочими пунктами меню Инструменты япредоставляю заинтересованным лицам.

Справка

Во многих свободных программах это вполне формальный пункт главного меню, сводящийся к указанию официального сайта проекта, списка его участников, лицензии и тому подобных элементов матрицы Остапа Бендера «Азиатский орнамент». Однако Geany принадлежит к тем немногим программам Open Source, которые являют собой приятное исключение.

05-geany_073

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

Следующий пункт — Сочетания клавиш. Это не просто справка по существующим клавишным комбинациям, а руководство к действию, о чём недвусмысленно говорит надпись сразу под заголовком панели:

05-geany_074

И если последовать совету разработчиков и нажать кнопку Изменить, то оказываешься как раз в том месте настроек Geany, в котором горячие клавиши и можно переопределить. И где мы скоро окажемся.

Далее можно увидеть ссылку на официальный сайт проекта — также весьма информативный. Во всяком случае, в разделы Manual и FAQ заглянуть явно стоит. Как и в следующий пункт, Wiki, который приведёт нас вот сюда.

И, наконец, в пункте О программе приведены сведения о её разработчиках и переводчиках интерфейса.

Инструментальная панель

Инструментальная панель включена в редакторе Geany по умолчанию, хотя, как мы видели, расширения рабочего пространства ради, её можно и убрать — временно, через меню Вид, или постоянно, через пункты Правка -> Параметры. Действия через пиктограммы в основном дублируют основные операции, доступные через главное меню, хотя некоторые из них и своеобразны.

Первые две пиктограммы в ряду инструментов — создание нового файла и открытие существующего. Далее следуют две пиктограммы — сохранения текущего файла и сохранения всех открытых в сеансе документов, а также иконка перечитывания текущего файла с диска, а затем косой серый крестик закрытия текущего документа; если последний содержал не сохранённые изменения, последует запрос на подтверждение действия с вариантами — Отменить, Не сохранять и Сохранить:

05-geany_075

Стрелки Назад и Вперед подобны таковым в браузерах, только перемещают они в пределах текущего документа — на предыдущую и последующую позиции курсора.

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

Следующая в этом ряду пиктограмма — выбор цвета, который происходит точно так же, как было описано в разделе про меню Инструменты.

Далее следует два поля ввода. В первом можно поместить текст для поиска, во втором — номер строки, на которую требуется перейти. Нажатие на сопровождающие их кнопки вызывает соответствующие действия.

И последняя на панели инструментов пиктограмма — выход из редактора с запросом на сохранение не записанных перед тем изменений.

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

Поле редактирования, боковая панель и окно сообщений

Покончив с обзором элементов управления редактором — главного меню и инструментальной панели, перейдём к основным рабочим областям его интерфейса.

Главная рабочая область текстового редактора — это, разумеется, поле ввода и редактирования текста. Но как раз про него-то можно сказать меньше всего — разве только то, что в нём действительно можно вводить и редактировать текст :), и что оно имеет полосу прокрутки оного.

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

Боковая панель служит целям навигации по текущему документу, перемещению между документами открытыми и просмотру дерева файлов, как открытых, так и не открытых. И, соответственно этому, имеет три вкладки.

Первая из них — Символы. Для HTML-документов тут фигурируют разметочные теги, в частности, заголовков соответствующих уровней (H1, H2 и так далее) и заключённый в них текст с указанием номера строки. То есть мы можем видеть своего рода гипертекстовое оглавление: щелчок мышью на одном из заголовков во вкладке тегов приводит к перемещению на него в тексте рабочего поля:

05-geany_076

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

05-geany_077

Вкладка Документы боковой панели — это просто список открытых в данный момент файлов, между которыми можно переключаться точно так же, как и по вкладкам поля редактирования. Через контекстное меню, вызываемое щелчком правой кнопки мыши, файл под курсором можно сохранить, обновить или закрыть. Действие пункта Показать полный путь будет распространено на все файлы вкладки.

Наконец, вкладка Файлы появится только после того, как через менеджер плагинов будет включён плагин Просмотр файлов:

05-geany_078

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

05-geany_079

Теперь окно сообщений. Оно тоже включает в себя отдельные вкладки — целых пять штук:

  • Статус;
  • Компилятор;
  • Сообщения;
  • Заметки;
  • Терминал.

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

При переходе к вкладке Компилятор в окне сообщений выводится информация о ходе сборки текущего файла (запущенной через меню Построить -> Собрать. В нашем случае попытка «собрать» HTML-файл закончилась тем, чего и следовало ожидать — сообщением об ошибке.

Вкладка Сообщения задействуется только при поиске сообщений — никаких других применений ей не находится.

С переходом к вкладке Заметки окно сообщений превращается в своего рода текстовый мини-редактор, о чем нас и информирует появляющаяся при переключении надпись:

Здесь можно писать все, что угодно, используйте это для заметок и быстрых записей

Действительно, теперь в окне сообщений можно вводить текст и редактировать его как угодно. Разве что сохранить в виде файла непосредственно не получится. Но текст можно скопировать в «мышиный» или Иксовый буфер и поместить уже в окно редактирования (или в любую другую программу, способную обрабатывать тексты).

05-geany_080

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

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

Настройка

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

Как уже говорилось, практически все настройки Geany выполняются посредством меню Правка -> Параметры, вызывающего панель с одиннадцатью вкладками:

  1. Общее;
  2. Интерфейс;
  3. Панель инструментов;
  4. Отображение;
  5. Редактор;
  6. Файлы;
  7. Инструменты;
  8. Шаблоны;
  9. Привязки;
  10. Печать;
  11. Терминал.

05-geany_081

Рассмотрим последовательно, какие возможности они предоставляют.

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

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

Далее можно указать пути к рабочему каталогу при запуске и к файлам проекта. Они не обязаны совпадать — в некоторых случаях удобно файлы всех проектов держать в отдельном от рабочих файлов месте.

В секции Прочее, как и положено, настраивается всякая всячина, как то:

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

05-geany_082

Внешний вид редактора и его основных элементов определяется во вкладке Интерфейс:

05-geany_083

Здесь для боковой панели можно включить или выключить отображение списка символов и списка документов; отображения списка файлов здесь нет — как уже говорилось, оно определяется включением соответствующего плагина. Так что, если отключить вывод и списка символов, и списка документов, исчезнет и список файлов. Ну а с включением показа полных путей к файлам открытых документов всё ясно без комментариев.

Шрифты — как их гарнитура, так и размер, — можно установить независимо для окна редактирования, для боковой панели и для окна сообщений. Забегая вперед, заметим, что терминал в окне сообщений также настраивается независимо от остальных элементов редактора.

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

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

05-geany_084

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

05-geany_085

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

05-geany_086

Во вкладке Редактор устанавливаются правила поведения в окне редактирования, такие как:

  • включение и выключение режима переноса слов;
  • отключение режима Drag-and-Drop;
  • удаление остаточных пробелов в конце строк, перед символом её окончания;

и так далее — детали можно видеть на серии скриншотов.

05-geany_087

05-geany_088

05-geany_089

05-geany_090

Комментарий требуентся тольк для последнего скриншота и его секции Маркер длинной строки. При включении режима динамического переноса строк служит для различения «истинных» строк (фиксируемых символами конца строки, в случае стиля Unix — LF) и строк «экранных», создаваемых за счет переноса слов по границе экрана, длина которых зависит от размера окна редактирования. Варианты выбора маркера — отмечать цветом текст строки, фон текста (цвет может быть изменен) или выключить вообще (последнее имеет смысл, если режим переноса слов не используется).

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

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

05-geany_091

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

05-geany_092

Во вкладке Шаблоны вводятся те самые личные сведения, которые потом окажутся в комментариях ко всем файлам, создаваемым посредством действий Файл -> Создать из шабла -> [тип файла]: имя и фамилия автора, адрес его электронной почты и тому подобное. В отличие от всех остальных изменений, вступающих в действие немедленно по нажатии кнопки Применить или OK в правом нижнем углу панели настроек, переопределение сведений о шаблоне обретет силу только при следующем запуске Geany.

05-geany_093

Во вкладке Сочетания клавиш, как легко догадаться, можно переопределить «горячие» клавиши для всех действий, предусмотренных в редакторе Geany, а также приписать их тем действиям, к которым никакие клавишные комбинации по умолчанию не определены. То есть сделать то, к чему нас призывали разработчики в меню Помощь -> Горячие клавиши.

05-geany_094

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

05-geany_095

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

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

Мало что скажу также и о вкладке Печать, ибо следуем заповеди POSIX’ивистов, сформулированной Сергеем Голубевым:

Не настроил принтер — сохранил дерево.

Так что тем, кто деревьев не жалеет, в содержимом этой вкладки предоставляется разбираться самостоятельно.

05-geany_096

А вот на содержании вкладки Терминал стоит остановиться подробнее.

05-geany_097

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

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

Опции Прокрутка по нажатию на клавиши и Прокрутка по мере вывода в комментариях не нуждаются. Переопределение горячих клавиш Geany может быть полезным, если они пересекаются с кейбиндингами используемой командной оболочки. Ну и отключение вызова меню через горячую клавишу F10 может пригодиться, если в терминальном окне предполагается запускать программу типа Midnight Commander.

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

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

На этом настройку терминала можно считать законченной. Заметим только, что точно так же её можно осуществить непосредственно из вкладки Терминал окна сообщений — через контекстное меню по щелчку правой кнопкой мыши.

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

05-geany_097a

Настало время подвести предварительные итоги. Главный из которых таков: есть мнение, что использование этой программы целесообразно для любых текстовых работ, превышающих сложностью редактирование двух-трёх строчек в пятистрочном сценарии. Автор настоящего очерка, в частности, на протяжении ряда лет применял Geany для создания документов в форматах plain text и HTML. Удобство его для сочинительских целей определяется возможностями выполнения команд в терминальном окне параллельно с их описанием в поле редактирования, мгновенной проверки работоспособности командных конструкций, автоматизацией ввода наиболее часто используемых HTML-тегов, сочетанием средств навигации внутри находящегося в работе текста с функциями обзора файловой системы и многим, многим другим. А дополнительный функционал редактору придают многочисленные плагины, к рассмотрению которых мы и переходим.

Geany и его плагины

Надеюсь, на прошлых страницах мне удалось продемонстрировать, что Geany и своём первозданном виде предоставляет в распоряжение применителя массу возможностей для работы с текстом. Однако функционал его многократно усугубляется бесчисленными дополнения — так называемыми плагинами (plugins). Чтобы получить представление о их количестве, достаточно в CLI задать поиск по шаблону geany-plugin:

$ apt search geany-plugin | wc -l

вывод которой в Mint 17.1 Rebecca на момент сочинения этих строк будет таким:

     66

То есть на 20.01.2015 для Geany сочинено 66 примерно плагинов. Почему примерно — сейчас расскажу.

Дело в том, что три пакета из выведенного списка играют особую роль. Это — geany-plugins-common, geany-plugin-addons и geany-plugins. Первый из них, как можно догадаться по его имени, содержит компоненты, общие для всех плагинов, то есть локально-зависимые. Как-правило, он устанавливается в качестве зависимости любого другого «плагинного» пакета.

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

  • DocList — кнопка на панели инструментов, вызывающая список открытых документов и предложения их закрытия:

05-geany_098

  • OpenURI — если элемент под курсором являет собой URI (например, http-адрес), то в контекстное меню по щелчку правой кнопкой мыши добавляются пункты Открыть URI и Редактировать URI очевидного назначения (адрес открывается в браузере, прописанном в настройках Geany):

05-geany_099

  • Systray — помещает пиктограмму Geany в системный трей, по щелчку левой кнопкой мыши на которой главное окно Geany сворачивается или распахивается; щелчок правой кнопкой вызывает контекстное меню с пунктами Открыть, Сохранить все, Параметры и Выход:

05-geany_100

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

$ apt install geany-plugin-addons

Однако установить этот плагин (как и любой другой) мало — его надо ещё и включить. Делается это через меню Инструменты -> Менеджер модулей:

05-geany_101

На скриншоте можно видеть кнопку Параметры — она может быть активной не для всех плагинов, но для geany-plugin-addons как раз активна, и вызывает панель его настроек, содержащую полный список аддонов, каковые могут быть включены или выключены очевидным образом:

05-geany_102

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

Что же до пакета geany-plugins — это на самом деле метапакет, объединяющий в себе в виде списка остальные 63 «плагинные» пакеты, устанавливаемые при его инсталляции одним махом. Хотя каждый из них может быть установлен и в индивидуальном порядке. Поскольку лично мне нужны далеко не все плагины, на следующей странице в индивидуальном порядке я и рассмотрю некоторые из них. А пока напомню только, что установка полного набора плагинов не приводит к их мгновенной активизации — её нужно проделать вручную только что описанным способом. А некоторые из плагинов — ещё и настроить, о чём будет сказано в каждом конкретном случае.

Geany и его макросы

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

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

В Mint’е соответствующий плагин собран в виде отдельного пакета, который отыскивается так:

$ apt search geany-plugin | grep macro
p   geany-plugin-macro              - macro plugin for Geany
p   geany-plugin-macro:i386         - macro plugin for Gean

После чего его остаётся только установить:

$ apt install geany-plugin-macro

Впрочем, это можно сделать и через mintinstall, о чём было сказано в соответствующем очерке.

Да, разумеется, надо не забыть активировать плагин через главное меню: Инструменты -> Менеджер модулей, как это было описано в предыдущем миниочерке. А также заглянуть в его настройки через кнопку Параметры. Где, впрочем, ничего делать не надо — обе необходимые опции включены по умолчанию:

05-geany_103

После этого в меню Инструменты появляются пункты Запись макроса и Редактировать макрос:

05-geany_104

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

05-geany_105

После чего выполнить действия, которые составят содержание макроса. Например, я использую их для ввода html-тегов, причём не всех, а только самых употребимых (мной), о которых легко забыть во время окончательного оформления страницы в CMS (я пользуюсь WodrPress’ом). Поэтому я просто вводу здесь текст открывающего и закрывающего тега (во избежание лишней работы автозакрытиые тегов средствами самой Geany лучше отключить). После чего снова обращаюсь к меню Инструменты, где пункт Запись макроса превращается в Остановить запись макроса

05-geany_106

Самая сложная задача здесь — это подобрать комбинацию клавиш. Каковая должна быть

  1. мнемонически значимой, и
  2. не задействованной среди горячих клавиш самой Geany и рабочей среды, в которой она запущена.

Поскольку выполнение второго требования с каждым днём становится всё сложнее, то и с мнемоникой приходится извращаться. Например, для ввода тега для моноширинного шрифта мне пришлось задействовать комбинацию Alt+m — от monospace, и так далее. Впрочем, это та земля, на которой каждый умирает в одиночку — в соответствие со своими потребностями и возможностями. Кроме того, комбинации горячих клавиш, привязанные к макросам, не работают при русской раскладке клавиатуры — хотя все штатные хоткеи Geany от раскладки не зависят. Однако это горе не великое — всё равно переключаться с кириллицы на латиницу и обратно приходится очень часто.

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

05-geany_107

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

05-geany_108

Порядок действий по редактированию макросов очевиден, поэтому останавливаться на этом вопросе не буду. Замечу только, что это — не единственный способ выполнения данной процедуры. Ибо описание всех макросов содержится в файле /home/alv/.config/geany/plugins/Geany_Macros/settings.conf. Это — обычный текстовый файл, и в соответствующем предыдущему скриншоту виде выглядит так:

 [Settings]
Save_Macros=true
Question_Macro_Overwrite=true

[Macros]
A0=code
B0=109
C0=8
D0=2170,<code>,2170,</code>,2304,2304,2304,2304,2304,2304,2304
A1=highlighted
B1=104
C1=8
D1=2170,<strong>,2170,</strong>,2304,2304,2304,2304,2304,2304,2304,2304,2304
A2=strike
B2=115
C2=8
D2=2170,<s>,2170,</s>,2304,2304,2304,2304
A3=italic
B3=105
C3=8
D3=2170,<em>,2170,</em>,2304,2304,2304,2304,2304
A4=listing
B4=112
C4=8
D4=2170,<pre>,2329,2329,2170,</pre>,2302
A5=link
B5=117
C5=8
D5=2170,<a href=\\»\\»>,2170,</a>,2304,2304,2304,2304
A6=remote
B6=114
C6=8
D6=2170,<a href=\\»\\» target=\\»_blank\\» rel=\\»nofollow\\»>,2170,</a>,2304,2304,2304,2304

А потому может быть отредактирован непосредственно в текстовом редакторе — например, в самом Geany.

Geany и multiterm

Не так давно мы говорили о штатном встроенном терминале Geany — его хватает почти во всех случаях. Однако у него есть и более функциональный аналог — Multiterm, реализованный в виде плагина geany-plugin-multiterm. Его особенностью, как можно догадаться из названия, является поддержка вкладок (Tabs). Плагин этот входит в состав метапакета geany-plugins, но может быть установлен и отдельно, например, так:

$ apt install geany-plugins

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

05-geany_109

После этого в окне сообщений появляется новая вкладка, которая так и называется Multiterm. И по умолчанию имеет весьма бледный вид:

05-geany_110

В частности, запущенный в этом окне шелл и представляется как /bin/bash. Однако он запущен в режиме эмуляции POSIX shell, то есть не умеет ни автодополнения, ни истории команд… короче, ничего, за что мы так любим современные командные оболочки. Вызванное по аналогии со штатным терминалом контекстное меню позволяет открыть новую вкладку или переместить окно Multiterm в боковую панель (зачем это нужно — не знаю), но не содержит никаких возможностей для настройки:

05-geany_111

Кстати, в Mint’е не работает и пункт Open Window — и сейчас станет ясно почему.

Однако доступ к настройкам возможен прямым редактированием конфига этого плагина — ~.config/geany/plugins/multiterm/multiterm.conf. Он разделяется три секции:

  • General Settings — общие свойства;
  • Default Shell — свойства умлочальной оболочки;
  • Other Shells — свойства прочих оболочек.

В первой из них можно, в частности, переопределить значение параметра external_terminal с умолчального xterm на, например, gnome-terminal. После этого волшебным образом заработает пункт Open Window из контекстного меню — он будет открывать терминал GNOME: дело в том, что в Mint’е по умолчанию xterm не устанавливается.

В секции Default Shell следует в первую очередь заменить этот самый default’ный шелл на что-то более человеческое, отредактировав строку

command=sh

должным образом, например, у меня таким:

command=/bin/zsh

Очевидно, что, отредактировав строки

bg_color=#ffffff
fg_color=#000000
font=Monospace 9

можно изменить цвет фона, текста и шрифтоначертание с кеглем для него, соответственно. Например, у меня это сделано так:

bg_color=#D6D6D6
fg_color=#000000
font=Monospace 15

А сняв комментарий со строки

scrollback_lines=1024

можно установить желаемую величину для прокрутки истории.

В Multiterm нет опции следования пути текущего файла — смена каталога возможна только прямой командой cd. Поэтому его можно держать включённым в паре со щтатным терминалом, когда требуется одновременный доступ и к каталогу текущего документа, и к некоему фиксированному каталогу. И даже к нескольким — не будем забывать про возможность открытия табов, в каждом из которых запускается свой экземпляр шелла.

К сожалению, в Multiterm не и кое-чего другого, более важного. В частности, в нём категорически отказываются работать стандартные кейбиндинги типа Control+A, Control+E и им подобные. Поэтому в качестве замены штатному терминалу Geany он никак не годится. Но как его дополнение в некоторых случаях может быть полезен.

Geany и управление файлами

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

Прежде чем заводить речь о средствах управления файлами в Geany, надо напомнить сказанное ранее о его боковой панели, посредством которой управление файлами осуществляется. По умолчанию, без подключени каких бы то ни было плагинов, она содержит две вкладки — Символы и Документы.
Отображение любой из этих вкладок (и даже обеих сразу) можно отключить через меню — Правка -> Настройка -> Интерфейс -> Интерфейс:

05-geany_112

Что я и делаю, так как обычно они мне не нужны. А высвободившуюся боковую панель (вывод которой, кстати, тоже можно отключить вообще) использую как раз для управления файлами. Средств для чего в Geany как минимум два (не считая средств CLI, доступных через встроенный терминал). Первое из них — filebrowser, который ныне входит в штатный комплект основного пакета. Однако включается он по прежнему через меню Инструменты -> Менеджер модулей ->Просмотр файлов:

05-geany_113

Впрочем, ничего особенного, кроме просмотра файловой иерархии и простейших средств навигации, оно и не даёт:

05-geany_114

Разве что через пункт Параметры из контекстного меню можно включить полезные пункты Следовать пути текущего файла и Использовать каталог проекта.

Хотя в комбинации со средствами CLI из встроенного терминала даже такой примитив оказывается полезным. Так, самым простым средством создания нового документа оказывается не главное меню Geany Файл -> Создать(или соответствующая кнопка на инструментальной панели), ибо потом надо долго рыскать, куда записать этот самый новосозданный файл, чтобы он нашёл свое место в структуре проекта. А гораздо проще, при включённом следовании, так во встроенном терминальном окне команду

$ touch [файл_имя_рек]

Затем в боковой панели нажать кнопку Обновить и их неё же открыть новосозданный пустой файл.

Но в Geany есть и более мощное средство управления файлами — плагин geany-plugin-treebrowser. Который устанавливается стандартным образом, и точно так же включается. После чего из контекстного меню становятся доступными многие функции стандартного файлового менеджера:

05-geany_115

Да, не все, какие могут потребоваться. Но по крайней мере создавать новый файл в составе существующего проекта становится легко и просто. А с остальным, ребята, и сами разберётесь, если будет нужно…

Geany: управление проектами

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

Тут-то на помощь сочинителю приходят встроенные в текстовый редактор средства управления проектами — если, конечно, они в нём есть. Благо, в Geany такие средства имеются, и даже не в единственном экземпляре: одно штатное и два внештатных, обеспечивающихся отдельными плагинами.

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

05-geany_116

Однако прежде не плохо выполнить некоторые глобальные настройки, общие для всех проектов. Которые выполняются через пункты Правка -> Настройки -> Общее. Сначала по вкладке Запуск указывается общий путь к файлам проекта. Поскольку проект наверняка будет не один (иначе не стоило бы и огород городить), есть смысл задать его в максимально обобщённом виде, а далее дописывать конкретные подкаталоги:

05-geany_117

Здесь же полезно задать стартовый каталог (для меня удобно, чтобы он совпадал с путём к подкаталогам проектов, но это уж каждый для себя решит сам) и включить загрузку файлов из последней сессии. После чего перейти на вкладку Прочее и там в секции Проекты отметить пункт Использовать файлы сессий для проектов. В сочетании с загрузкой файлов из последней сессии на предыдущей вкладке это приведёт к тому, что при старте Geany будет открываться последний проект в том самом состоянии, в каком работа с ним была прервана:

05-geany_118

А вот пункт Хранить файл проекта внутри основного каталога проекта включается по желанию. По умолчанию Geany хранит все файлы описания проектов (вида project_name.geany)в отдельном каталоге, который так и называется — path2/projetcs (или, в русской локализации, path2/проекты). Если же включить означенный пункт, то файл описания проекта будет размещаться непосредственно в его каталоге. Мне это представляется удобным, особенно при сохранении резервных копий, однако применителю следует определить это для себя.

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

05-geany_119

Если все настройки были сделаны, как описано выше — то достаточно задать это самое имя проекта (совпадающее с именем каталога с его файлами), и нажать кнопку Создать. И проект, вместе с файлом его описания (в данном случае /home/data/current/alv.me/distros/distros.geany), будет создан.

Для открытия существующего проекта предназначен пункт меню Проект -> Открыть, после чего в дереве файловой иерархии потребуется отыскать каталог проекта, а в нём — файло описания:

05-geany_120

Это может быть достаточно скучно. И потому между существующими проектами проще переключаться через Проект -> Последние проекты:

05-geany_121

Впрочем, и в том, и в другом случае, как я уже говорил, проект будет открыт точно в том состоянии, в котором с ним была прекращена работа — то есть со всеми файлами, открытыми в последней сессии.

Основные данные о проекте можно посмотреть через Проект -> Свойства. Здесь, в частности, можно поменять имя проекта, его описание и рабочий каталог:

05-geany_122

А вот изменить путь к файлу описания проекта здесь не получится. Но это можно сделать через конфигурационный файла Geany — ~/.config/geany/geany.conf. Это простой текстовый файл, в котором отражаются все настройки редактора, выполненные интерактивно. Но который можно и отредактировать непосредственно. В частности, именно здесь, в секции [project], можно изменить путь к файлу описания проекта — например, если его рабочий каталог был перемещён в другое место файловой иерархии.

Кроме штатной системы управления проектами, для этой цели в Geany существует два плагина — geany-plugin-gproject и geany-plugin-prj. Первый является дополнением штатного средства, предлагая управление проектами Geany на основе шаблонов. Включение его через Инструменты -> Менеджер модулей приводит к появлению в боковой панели вкладки Проект с несколькими пиктограммами. Честно говоря, я так и не придумал, как прикрутить шаблоны к своим проектам — и главное, зачем мне это нужно. И потому отключил этот плагин.

Плагин же geany-plugin-prj представляет собой полную систему управления проектами, альтернативную штатной. При его включении в боковой панели также появляется вкладка Проект — абсолютно пустая, но с контекстным меню по правой кнопке мыши:

05-geany_123

Вследствие своей альтернативности этот плагин игнорирует штатные файлы описания проектов — для него их надо создавать с нуля, как можно видеть на приведённом скриншоте. Выбор пункта Новый проект вызывает такую вот панель:

05-geany_124

В ней указывается имя проекта, определяются расположение файла его описания (это dot-файл geanyprj и рабочий каталог. После нажатия кнопки Создать все файлы рабочего каталога включаются в проект и выводятся в соответствующей вкладке боковой панели, и генерируется файл описания:

05-geany_125

После создания проекта через контекстное меню на его вкладке в боковой панели становятся доступными, помимо прочих, пункты Найти в проекте и Настройки. Собственно, поиск в проекте — это главная особенность альтернативного управления проектами:

05-geany_126

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

Ну а через пункт Настройки, как и в штатном «управителе проектами», можно поменять его имя и базовый каталог (но не положение и имя файла описания проекта):

05-geany_127

Все функции контекстного меню дублируются также в меню главном — Инструменты -> Проект.

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

Текстовый редактор Komodo Edit

Текстовый редактор Geany я применял на протяжении многих лет, люблю его и более или менее знаю. А потому и уделил ему столько места. Однако последнее время основным моим инструментом для работы с текстами стал Komodo Edit. И не написать о нём здесь я не мог. Мой стаж Komodo’вания едва составляет полгода, так что особых подробностей не будет — лишь отдельные заприсовки по его применению. Но надеюсь, что кому-нибудь они пригодятся для ориентировки в океане текстовых редакторов.

Обзор

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

  1. Komodo IDE, полноценная интегрированная среда разработки, имеющая статус коммерческой, стоимостью под сотню баксов (для осознания того, за что они платятся, доступна трёхнедельная Trial’ная версия), и
  2. Komodo Edit (далее KE), представляющий собой развитый текстовый редактор с поддержкой управления проектами, протоколированием макросов и прочими функциями, сопоставимыми с таковыми в Geany; он распространяется на условиях Mozilla Public License, то есть являет собой свободный Open Source в чиcтом виде.

Общее между этими программами то, что они разрабатываются одними и теми же людьми — сотрудниками фирмы Active State, Komode IDE полностью, Komode Editor — при участии сообщества.

Для установки Komodo Editor (далее KE) предлагается скачать его в виде архива бинарников с сайта фирмы (текущая на данный момент версия — 8.5.4), развернуть архив и запустить установочный скрипт. Этот рецепт подходит для произвольного дистрибутива.

Однако в дистрибутивах из кланов Ubuntu и Mint’а можно поступить проще и правильней: KE имеется на Launchpad‘е в виде бинарного пакетая. Так что для его установки просто подключаем его репозиторий:

$ sudo add-apt-repository ppa:mystic-mirage/komodo-edit

Выполняем обновление локального кеша:

$ apt update

Проверяем доступность пакета и его точное имя:

$ apt search komodo
i   komodo-edit                     - Komodo Edit is a free, open source editor
p   komodo-edit:i386                - Komodo Edit is a free, open source editor

После чего только и только остаётся этот пакет установить:

$=> sudo apt install komodo-edit

Теперь запустить редактор можно прямой командой komodo-editиз CLI или минитерминала. Ну и, конечно, из главного меню — Программирование -> KomodoEdit.

После первого запуска сначала появляется панель быстрого запуска, почти загораживающая всё остальное:

06-komodo_128

А после её закрытия (её можно удалить со старта раз и навсегда, вызывая по необходимости) KE предстаёт примерно в следующем обличье:

06-komodo_129

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

Русификация

Первое — русификация интерфейса KE. Таковая имеет место быть благодаря усилиям laborpago (за что и ему спасибо большое). И может быть выполнена двумя способами. Первый — скачать авторский пакет с его страницы. Он собран в виде расширения для KE — файла вида localru-*-ko.xpi — нужно только проследить, чтобы версия пакета соответствовала версии KE, ибо они жестко привязаны друг к другу.

Установка русификатора в этом случае выполняется через меню KE: Tools -> Add-ons, что вызывает такую панель:

06-komodo_130

Слева от поля для поискового запроса можно видеть кнопку весьма бледного вида, которая вызывает каскадное меню — в нём нужно выбрать пункт Установить дополнение из файла:

06-komodo_131

А по выборе нужного файла в следующей панели нажимается кнопка Install Now:

06-komodo_132

После чего остаётся только перезагрузить KE. Кстати, этот миниочерк сочинялся в KE после его русификации, и потому на всех скриншотах можно видеть русские буковки в интерфейсе (не раз-русифицировать же KE обратно, как сказал Жорж Милославский).

Второй способ русификации — ещё проще: в том же репозитории ppa:mystic-mirage/komodo-edit существует и штатный пакет аналогичного назаначения:

$ apt search komodo-edit-ru
p   komodo-edit-ru      - Komodo Edit is a free, open source editor

Который, соответственно, можно установить через apt.

Претензий к работе русификатора, установленного как Add-ons, у меня не было, но полноты раскрытия темы я решил попробовать и этот метод. Для чего отключил расширение localru через меню: Дополнения -> Языки, перезапустил KE, чтобы убедиться в возврате англоязычного интерфейса, и установил пакет из репозитория:

$=> sudo apt install komodo-edit-ru

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

$=> sudo apt install --reinstall komodo-edit-ru

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

06-komodo_133

Иными словами, это просто один и тот же пакет laborpago. Только из авторского дополнения его компоненты устанавливаются в .komodoedit/8.5/XRE/extensions/, а из deb-пакета — в /usr/lib/komodo-edit/mozilla/extensions/. Что во втором случае требует, соответственно, привилегий администратора, но зато русификация распространяется на всех возможных пользователей KE.

Оба способа русификации — вполне штатные: первый — с точки зрения KE, второй — с позиций deb based дистрибутивов, оба допускают автоматическое обновление, ну и русские слова в результате получаются одними и теми же. Так что каким способом пользоваться — дело вкуса. С точки зрения сборки собственных ремиксов для меня оказался предпочтительным второй.

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

06-komodo_134

Однако оказалось, что проблема эта решается сама собой, причём не просто, и даже не очень просто, а ещё проще. Из просмотра сайта ActiveState Community выяснилось, что в KE используются те же самые словари, что и в Mozilla, то есть словари для hunspell‘а. Однако общесистемные словари, например, вроде установленного у меня hunspell-ru-ie-yo (с поддержкой буквы Ё) он не видит — ему требуется собственные их копии, расположенные в каталоге /usr/lib/komodo-edit/mozilla/dictionaries. По умолчанию там лежат файлы только для словаря американского английского: en-US.aff и en-US.dic. Так что достаточно скопировать в него из /usr/share/hunspell файлы ru_RU.aff ru_RU.dic — и русский язык в панели спеллинга появится незамедлительно:

06-komodo_135

06-komodo_136

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

Управление проектами

Следующий вопрос, живо меня интересующий — управление проектами. И здесь всё оказалось очень здорово. Во-первых, управление проектами в KE есть. Во-вторых, проект создаётся не просто, а очень просто (то есть проще даже, чем в Geany). Например, это можно сделать через меню Проект -> Новый проект, задав имя проекта и рабочий каталог для него:

06-komodo_137

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

06-komodo_138

В левой боковой панели легко выводится файловая иерархия внутри каталога текущего проекта (по умолчанию — до 10 уровней вложенности, при необходимости можно увеличить). Здесь же не менее легко открывается подпанель со списком созданных проектов, через которую легко переключаться между ними. При этом, как и при создании нового проекта, файлы предыдущего проекта можно сохранить в открытом состоянии, параллельно с файлами проекта следующего. И переключаться между ними через вкладки главного окна, предназначенного для редактирования текста.

Возможность параллельной работы с файлами из разных проектов — та самая функция, которой мне так не хватало в Geany, ибо я постоянно работаю с несколькими самостоятельными, но тесно связанными проектами, между которыми необходим обмен данными. И KE мне такую возможность предоставил.

Макросы

Второй очень важный для меня момент связан с макросами. Для применителя-текстовика, работающегов разных жанрах, очень важно иметь возможность расширить базовую функциональность редактора в соответствие со своими задачами, причём сделать это простым и понятным способом. В Geany имеется удобный режим протоколирования макросов с возможностью их последующего редактирования. А если ли что-нибудь подобное в KE?

Оказалось, что в KE прибегать к сочинению собственных макросов поводов не много. Ибо он штатно снабжён их набором, вполне достаточным, например, для простой разметки html-документов, как в существующем виде, так и после минимального редактирования. Впрочем, и режим протоколирования действий для помещения их в макросы также имеется, как и возможность последующего редактирования.

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

Штатно в KE не обнаруживается статистики документов. Однако среди макросов нашёлся один, подсчитывающий количество слов с помощью утилиты wc. Правкой буквально одного символа можно заставить его считать число символов в документе или объём его файла в байтах.

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

Теги для выделения текста:

  • Code — ввод моноширинного текста, хоткей Alt+m (от Monospace);
  • Emphasis — ввод курсивного шрифтоначертания, хоткей Alt+i (от Italic);
  • Strong — ввод полужирного шрифтоначертания, хоткей Alt+b (от Bold);
  • Strike — ввод зачёркнутого выделения, хоткей Alt+s (от Strike).

Теги для текстовых блоков:

  • Pre — командные конструкции, скрипты etc., хоткей Alt+p (от Pre);
  • Quote — цитаты, хоткей Alt+c (от Citata);
  • List Or — нумерованный список, хоткей Alt+o (от Ordered);
  • List Un — маркированный список, хоткей Alt+l (от List).

Теги для ссылок:

  • URI Link — ссылка внутри сайта, хоткей Alt+u (от URL);
  • URI Remote — ссылка вне сайта, хоткей Alt+r (от Remote);
  • Name Anch — анчор внутри страницы, хоткей Alt+n (от Name);
  • Name URI — ссылка на внутренний анчор, хоткей Alt+a (от Anchor).

Разные прочие теги:

  • Doctype — вставка Doctype, lang=»ru-RU», content=»text/html; charset=UTF-8», хоткей Alt+d (от Doctype);
  • Count — подсчёт в выделении количества строк, слов, байт и символов командой wc -lwmc, хоткей Alt+w (от Wc).

А также всё, что потребуется впредь.

В заключение хотел бы напомнить, что Alt-последовательности для ввода макросов работают только при латинской раскладке клавиатуры. Однако постоянного переключения с кириллицы на латиницу можно избежать, определив одну из «удержальных» клавиш, например, Right Control.

Настройки

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

Функции поиска и замены работают как для отдельных файлов и их выделенных фрагментов, так и для каталогов, а также целых проектов. Кроме того, имеется последовательный наращиваемый поиск, как в браузерах. Результаты поиска, в том числе и последовательного, по умолчанию подсвечиваются в течении заданного в настройках времени, которое может быть изменено в любую сторону. Не запрещается и вообще отключить режим подсветки при поиске.

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

Наверное, я далеко не единственный, у кого при быстром лабании по клавишам (а лабать медленно я не умею) часты перестановки соседних символов. В Kate для исправления этого (то есть для транспонирования соседних буковок) существует штатная комбинация — Control+T. Это была та фича, по которой я проливал горючие слёзы, работая в Geany — там возможности траспонирования не имеется. А вот в KE она обнаружилась — и я немедленно присвоил ей ту же последовательность, что и в Kate.

Особо следует сказать о настройке инструментальной панели. При первом запуске в KE в ней можно видеть пиктограммы для выполнения некоего набора действий, которые разработчики отнесли к числу наиболее частых. Однако мнение применителя на этот счёт может быть более иным. Учитывая это, разработчики предоставили достаточно возможностей для настраивания инструментальной панели. Чтобы ими воспользоваться, достаточно правого клика на панели и выбора пункта Настройка из появившегося контекстного меню:

06-komodo_139

Панель настроки инструментов выглядит так:

06-komodo_140

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

06-komodo_141

Далее я расправился с остальными панелями:

06-komodo_142

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

06-komodo_143

Если одноимённая пиктограмма Стандартной панели вызывается стандартное же окно c файловым древом, то здесь появляется выпадающее меню со списком подкаталогов домашнего каталога пользователя, определённого стандартом freedesktop.org: Desktop, Documents, Download и так далее:

06-komodo_144

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

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

06-komodo_145

При желании можно включить и подписи к иконкам, однако я полагаю это не нужным: в результате на панели может просто не хватить места:

06-komodo_146

Тем более что всплывающих при наведении на пиктограмму подсказок даже по первости достаточно, а потом приходит автоматизм.

В общем, выполнив некоторые настройки (далеко не все возможные), я привёл KE вот к такому виду:

06-komodo_147

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

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

Внизу — окно сообщений, в настоящий момент в нём выведен результат подсчёта символов в текущем документе. Оно приведено тут чисто для демонстрации, в обычном рабочем режиме это окно у меня закрыто. Правый сайдбар я тоже уберу с глаз долой, как только закончу коллекционирование макросов.

Вывод графики

И ещё одна особенность обнаруживается у KE — он умеет показывать картинки: достаточно в панели управления файлами щёлкнуть на имени файла изображения — и оно немедленно появится в его главном окне:

06-komodo_148

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

06-komodo_149

После чего в одной половине окна можно сочинять текст, а в другой — просматривать иллюстрирующие его картинки:

06-komodo_150

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

06-komodo_151

В общем, ме05-geany_097aчта сочинителя повествовательных текстов, особенно линуксописателя, которому постоянно приходится просматривать скриншоты. Не хватает возможности вызова внешнего графического редактора на предмет ресазинга и кадрирования картинок, без этого можно прожить. Да и надо поглядеть, нет ли этой функции среди расширений.

И последнее о Komodo Edit

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

Да, ещё, как говорят, KE показывает себя довольно тормознутым на слабых машинах. В силу того, что у меня слабых машин не водится, я этого не заметил. Но учитывать это наблюдение следует.

Заключение по редакторам

Пора подвести итог по текстовым редакторам. Если возможностей Gedit’а для работы с текстами не хватает — и Geany, и Komodo Edit будут более чем достойными ему альтернативами. Какая из них лучше? Однозначного мнения у меня не сложилось. В пользу первой альтернативы — лучшая поддержка спеллинга, более высокое быстродействие на слабых машинах и, главное, наличие встроенного терминала. За KE — более развитые средства управления файлами (в том числе и не только текстовыми) и проектами, в частности — возможность держать параллельно несколько открытых проектов. Ну и практически неограниченные возможности настройки и расширения функционала за счёт собственных макросов нельзя сбрасывать со счёта.

В результате достоинства KE лично для меня перевесили его недостатки, и в назначил его своим основным инструментом для работы с текстами. Сохранив, однако, тёплые чувства к Geany, много лет прослужившим мне верой и правдой. Почему выше этот редактор и был описан столь подробно — к аналогичному описанию KE я ещё морально не готов.

Оглавление

Оставить комментарий

Перейти к верхней панели