Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

jEdit больше чем текстовый редактор

Оригинал: jEdit: a Text Editor and More
Автор: Adrian Klaver
Дата публикации: 26 октября 2011г.
Перевод: С. Русинов
Дата публикации перевода: 18 октября 2012г.

jEdit кросс-платформенный текстовый редактор, написанный на Java. Рассматриваемая в статье текущая версия 4.3.2, и она доступна в http://jedit.org. Кроме кросс-платформенного режима, jEdit предлагает другие функциональные возможности, такие как расширенная система плагинов, подсветка синтаксиса для 130 языков, встроенный макро язык и расширенная поддержка кодировок. Я написал эту статью используя jEdit, и я продемонстрирую некоторые эти функции в статье, в особенности некоторые плагины, которые посчитал очень полезными.

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

Установка довольно простая. Просто перейдите на страницу загрузки и сохраните инсталлятор jar. Если, у вас установлена отличная от Sun (Oracle) или Apple версия Java, проверьте совместимость по ссылке http://jedit.org/index.php?page=compatibility.
Из личного опыта, мне не удалось запустить jEdit под gcj (GNU Compiler for Java). При наличии совместимой версии Java выполните команду для установки:

$ java -jar jedit4.3.2install.jar

Эта команда запускает программу установки, которая установит редактор. jEdit сохраняет свои конфигурационные файлы под Linux в ~/.jedit/. Я упомянул об этом, потому что держу эту директорию синхронизированной между моим лэптопом и моей настольной машиной. В результате, я получаю совместимые рабочие среды между настольной и мобильной системами.

По своей сути jEdit - это просто текстовый редактор, несмотря на то, что текстовый редактор с большим количеством опций. Вы, можете сделать эти опции глобальными или применять их как per-buffer. Вы можете добраться до этих опций через пункт меню Utilites. Глобальные настройки сохраняются между сессиями редактирования, но с buffer опциями этого не произойдет, если вы не примените buffer-local метод. Buffer-local метод состоит в добавлении в файл указателей для jEdit с разделителем двоеточием. jEdit проверяет первые или последние десять строк на наличие этих указателей. Например, для задания точного абзацного отступа равного 2, запрета табуляции и "жестких" переносов, будут добавлены указатели:

:identSize=2:noTabs=True:wrap=hard: 

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

Также отметим, что jEdit поддерживает установки mode-specific, где mode тип файла, такой как Python (*.py), C (*.c), HTML (*.html) и другие. Различные режимы стали установками по умолчанию, однако они могут быть изменены. Одним из ключевых преимуществ этой системы режимов является подсветка синтаксиса файлов определенного типа. Другие опции доступны в слое редактора. Вы можете увидеть это на скриншотах в этой статье. Я предпочитаю запускать jEdit с двумя открытыми буферами, разделенными вертикально и с включенной нумерацией строк. Это позволяет видеть начало и конец файла одновременно, что особенно ценно для исходного кода.

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

jEdit имеет систему макросов (не рассматриваемую в этой статье), с ее помощью вы можете получить собственные решения задач или посмотреть доступные плагины и не изобретать колесо. До загрузки плагинов посмотрите установленные плагины в вашей системе. Плагины могут быть найдены по ссылке http://plugins.jedit.org или через пункт Plugins в меню программы. Для просмотра списка доступных плагинов кликните на пункте Plugins Manager, затем на вкладке Install. Выберите плагин и его описание отобразится внизу страницы. Отметьте любые плагин(ы) которые хотите установить и затем кликните на Install. Если плагин имеет зависимости, они также будут установлены.

Так, откуда запускаются плагины? Пойдем от простого к сложному, начнем с плагина WhiteSpace, предложенного мне пользователем из Bellingham Linux User Group. Он показывает и подсвечивает невидимые символы, такие как пробелы, табуляция и другие. Я установил его для показа замыкающих символов и дополнительно для их удаления при сохранении. Так же он показывает символы табуляции и заменяет их "мягкой" табуляцией в соответствии с настройками jEdit. При включении этой опции он конвертирует символы табуляции в определенное количество пробелов. WhiteSpace использует настройки для конвертирования существующих символов табуляции в пробелы или наоборот. Все выше сказанное помогает мне при работе с кодом Python, сохраняя эти беспокоящие пробелы в определенном порядке. Это также ценно, когда пишешь для Linux Journal, который требует заменять табуляцию пробелами. На рис. 1 показан WhiteSpace в действии на файле Python. На скриншоте показан один из способов его настройки. Другой способ настройки через меню Plugins—›Plugin—›Options—›WhiteSpace. Оба способа настройки имеют различия в доступных опциях и второй способ более предпочтителен для настройки работы плагина.

Рис. 1 Настройки плагина WhiteSpace

Рис. 1 Настройки плагина WhiteSpace

Другой плагин, который использую довольно часто, - JDiff. Как и его имя, он показывает различия между файлами. Конечно, можно использовать командную строку для вышеупомянутого случая. Преимущество плагина в том, что он предоставляет графическое отображение. На рис. 2 показан dual-diff режим, используемый для файлов этой статьи. Отсюда вы можете создать различный вывод. Так же можно пройтись по отличиям и применить их с одной стороны на другую.

Рис. 2 плагин JDiff в режиме сравнения Dual-Diff

Рис. 2 плагин JDiff в режиме сравнения Dual-Diff

Плагин JDiff имеет присоединяемую компоненту, которая позволяет вам более детально рассмотреть различия в строках между файлами (рис. 3). На скриншоте dual-diff (рис. 2) вы видите плагин VoxSpell в работе. Подчеркивающая линия - это работает проверка орфографии. Если посмотреть в файл, можно увидеть, что подчеркнутые слова plugin/plugins изменились на не подчеркнутые. Я кликнул правой кнопкой мыши на словах и добавил их в словарь как известные, не только для написания статьи. Следует отметить, что VoxSpell имеет зависимость от плагина Spell Check, который использует немного памяти, что может быть проблемой.

Рис. 3 JDiff присоединенное окно, показывающее отличия строк

Рис. 3 JDiff присоединенное окно, показывающее отличия строк

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

Плагин SQL позволяет работать с SQL-базой данных из редактора. Процесс установки плагина состоит из двух этапов. Вначале необходимо выполнить установку SQL плагина. Для этого перейдите в меню, затем Plugins —› Plugins Options —› SQL. Перейдите на страницу JDBC, используя кнопку Add Element, укажите путь(и) размещения JDBC драйверов, которые хотите сделать доступными программе. После этого SQL плагин может работать с Oracle, MySQL, PostgreSQL, Firebird, DB2, Progress, MS SQL Server 2000, Sybase и Teradata, если имеются необходимые драйвера JDBC.
Это предшествующий этап регистрации базы данных, которая может быть применена на следующем этапе.

Следующий этап - конфигурирование определенной базы данных (или нескольких) с проектом. На этом этапе Project Viewer вступает в работу. Вы применяете его для создания проекта (подробности далее). Я буду использовать проект, которым является эта статья. На панели проекта кликнем правой кнопкой мыши на имени проекта и выберем properties (свойства). Будет выведена последовательность диалоговых окон, которые нужно заполнить данными (рис. 4). В этом случае я использую Pagila - демо базу данных Postgres. Сейчас, из буфера jEdit, вы имеете доступ к базе данных (рис. 5). Всего сказанного немного, но посчитаем это за следующий этап.

Рис. 4 Добавление SQL сервера в проект

Рис. 5 Полученные данные SQL плагином

Рис. 5 Полученные данные SQL плагином

Панель инструментов SQL находиться над буферами. Вверху над левым буфером находится раскрывающийся список для выбора предварительно сконфигурированной базы данных (сервера базы данных). Справа от него имеются четыре кнопки: первая Execute selection (Отобрать данные), вторая Execute buffer (Отправить данные из буфера), Load object (Загрузить объект), и последняя Repeat last query (Повторить последний запрос). Правее последней кнопки находится раскрывающееся меню выбора Препроцессора. Например, я использую Variable substitution preprocessor. Это можно увидеть в правом буфере, выражение "actor_id > ?" в SQL операторе. (Подсветка синтаксиса происходит в соответствии с расширением файла *.sql)
Я выделил выражение, которое хочу запустить и затем кликнул на кнопку "Execute selection".
Поле ввода было представлено (не показано на рисунке) значением для "actor_id", равным 35, из-за действующего режима variable substitution. Результат выполнения представлен в отдельном окне. Результат можно сохранить как данные в формате CSV, или tab формате, или как INSERT statements (представление данных в виде таблицы). Так же можно скрыть или отобразить столбцы. Кроме этого, возможен запуск нескольких операторов сразу (рис. 6). Это надуманный пример, но он показывает, что это возможно. Все описанное выше позволило мне создать DDL (data definition language) файлы базы данных и запустить их из редактора.

Последняя функция SqlVFS (Sql Virtual File System), которая позволяет просматривать выбранную базу данных как файловую систему. Для этого перейдите в меню File—›Open—›Commands—›Plugins—›Show databases. На рис. 7 показан результат. Отметим, что указан размер данных 0 байт, но двойной щелчок на нем дает результат из таблицы.

Рис. 6 SQL плагин запуск нескольких операторов

Рис. 6 SQL плагин запуск нескольких операторов

Рис. 7 SqlVFS, представление базы данных как файловой системы

Рис. 7 SqlVFS, представление базы данных как файловой системы

Project Viewer - плагин, который облегчает обработку группы связанных файлов (проект). Для демонстрации этого я использовал файлы, которые составляют эту статью. Project Viewer создает в присоединяемом окне кнопку под главным меню программы. Щелчок на ней и будет показан раскрывающийся список с пунктом All Projects (все проекты). Выбрав его, вы увдите новое окно. Щелчок правой кнопкой мыши на All Projects, выбираем Add Project, и откроется другое окно (рис. 8). Вводим требуемые данные, щелчок на кнопке OK для создания проекта. Затем Project Viewer создает проект и выводит на экран параметры импортирования файлов в проект. По умолчанию он импортирует все, что находится в корневой директории проекта.

Рис. 8 Настройка проекта в Project Viewer

Рис. 8 Настройка проекта в Project Viewer

С этого момента, группа связанных вместе файлов рассматривается как проект. Преимущество Project Viewer состоит в том, что он позволяет отслеживать их состояние и вернуться к нему позже. Добавление директорий/файлов в проект возможно и позже, а не только при создании проекта. Просто кликните правой кнопкой мыши на имени проекта, выберите Add files и переместитесь в нужное размещение(я). Вы можете добавить новые файлы из существующей директории двумя способами, вручную и автоматически. Для ручного добавления кликните правой кнопкой мыши на имени проекта и выберите Reimport files. Для автоматического добавления откройте контекстное меню проекта, выберите Properties—›Auto Reimport и включите Enable automatic re-import и установите время обновления. На рис. 9 показаны видимые признаки статуса файлов, где подчеркиванием представлены открытые файлы, и цветовое выделение зависит от типа файлов.

Рис. 9 Файлы в Project Viewer

Рис. 9 Файлы в Project Viewer

Удобной функцией является Compact View - компактный вид проекта. Эта опция включается в General Options в настройках Project Viewer. Она представляет компоновочный вид в зависимости от структуры директорий. Эта статья не содержит достаточной глубины директорий, поэтому для иллюстрации преимуществ этой функции посмотрите на другой проект (рис. 10). Каждая строка связана с определенной директорией. Также отметим вкладку Working Files (рабочие файлы) в окне проекта. Вкладка группирует все ваши текущие открытые файлы, что полезно в крупном проекте.

Рис. 10 Project Viewer Compact View - компактный вид проекта

Рис. 10 Project Viewer Compact View - компактный вид проекта

Project Viewer имеет и другие функциональные возможности: архивирование файлов проекта в JAR (Java-архив), поиск и замена строки в файлах проекта и вложенных директориях. Возможность объединить все связанные файлы в проект в одном интерфейсе я стал ценить еще больше спустя некоторое время. Перемещение по дереву директорий проекта, переименование/перемещение/удаление файлов из дерева директорий также очень полезно.

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