Copyright © 2000, 2001 Seth Rothberg
Copyright © 2002, 2003, 2005 Anders Lund
Copyright © 2005 Dominik Haumann
Разрешается копировать, распространять и/или изменять этот документ на условиях лицензии GNU для свободной документации, версии 1.1 или более поздней, опубликованной Фондом Free Software Foundation; без неизменямых разделов, без текста на первой странице, без текста на последней странице. Копия лицензии находится здесь the section entitled "GNU Free Documentation License".
Kate — это текстовый редактор для программистов, для KDE версии 2.2 и выше.
В данном руководстве описан редактор Kate версии 2.5.0
Содержание
Список примеров
Добро пожаловать в Kate — мощный текстовый редактор для программистов, который работает в среде KDE версии 2.2 и выше. Настраиваемая подсветка синтаксических конструкций для широкого диапазона языков программирования (начиная от C, C++ и HTML и заканчивая сценариями bash), возможность создавать и разрабатывать проекты, многодокументный интерфейс (MDI), встроенный эмулятор терминала — вот лишь небольшая часть возможностей Kate.
Kate — это больше, чем текстовый редактор для программистов. Многодокументный интерфейс позволит вам открыть и редактировать сразу несколько конфигурационных файлов UNIX®. Этот документ был написан в Kate.
Редактирование этого руководства...
Если вы когда-либо использовали текстовый редактор, у вас не возникнет проблем с Kate. В следующих двух разделах Запуск Kate и Работа в Kate мы расскажем вам все, что нужно для того, чтобы начать продуктивно работать с редактором.
Запустить Kate можно двумя способами: из или из командной строки.
Откройте меню программ KDE, щёлкнув левой кнопкой мыши на значке с большой буквой K, которая находится на панели внизу вашего экрана. В появившемся выберите подменю +. Появится список доступных редакторов. Выберите .
Если вы не изменяли параметры конфигурации Kate, он загрузит вам последние редактируемые файлы. Читайте раздел Настройка Kate, чтобы узнать, как включить или выключить эту возможность.
Запустить Kate можно набрав название программы в командной строке. Если вы укажете имя файла в качестве параметра, как это сделано в приведенном ниже примере, то редактор откроет или создаст этот файл.
%
kate
myfile.txt
Если у вас есть доступ в Internet, то можно открывать (и сохранять) удалённые файлы, благодаря реализации "прозрачной" работы с сетью в KDE.
%
kate
ftp://ftp.kde.org/pub/kde/README_FIRST
При запуске Kate из командной строки можно указать следующие ключи:
kate --help
Вывести основные ключи командной строки.
kate --help-qt
Перечислить ключи, которые позволяют изменить способ взаимодействия Kate и Qt™.
kate --help-kde
Перечислить ключи, которые позволяют изменить способ взаимодействия Kate и KDE.
kate -s
--start
сеанс
Запустить kate и открыть сеанс сеанс
. Если указанный сеанс не существует, он будет создан. Если Kate с данным сеансом уже запущен, то переданные в командной строке файлы будут открыты в уже существующем окне программы.
kate -u
--use
URL
Открыть файл в уже запущенном экземпляре Kate, если такой есть. Так как Kate имеет многодокументный интерфейс, в одном окне возможно открытие нескольких файлов (а служебная панель "Документы" позволяет переключаться между ними). Если вы хотите чтобы такое поведение было по умолчанию, вы можете соответствующим образом изменить привязки типов файлов в KDE и создать alias в вашем интерпретаторе.
kate -p
--pid
PID
Открыть файл в экземпляре с указанным PID (Process ID). Используется с ключом --use
.
kate --encoding
кодировка
URL
Кодировка файла. Вы можете, например, для файлов с расширением .cp1251 указать использовать кодировку Window$, а для .koi - KOI8-U.
kate --line
строка
URL
Перейти к строке с указанным номером после открытия документа.
kate --column
позиция
URL
Перейти в указанную позицию строки после открытия документа.
kate --stdin
Получить текст из стандартного ввода. Аналогично указанию -
в качестве имени файла.
kate --tempfile
Поддерживается начиная с Kate 2.5.1. Если она указана, переданные через командную строку файлы интерпретируются как временные и удаляются после закрытия, если только они не были изменены.
kate --help-all
Перечислить все ключи командной строки.
kate --author
Показать список авторов Kate в окне терминала.
kate -v
--version
Вывести версии Qt™, KDE и Kate.
kate --license
Показать лицензию.
В разделе Начало работы вы узнаете о четырёх опциях, которые позволят вам быстро настроить основные возможности Kate. Раздел Комбинации клавиш содержит описание некоторых сочетаний клавиш для тех, кто не может или не желает работать с мышью.
В этом разделе описываются несколько подпунктов меню , которые помогут быстро настроить Kate на ваш вкус.
Когда вы впервые запустите Kate (если до сих пор ещё это не сделали) то увидите две области с белым фоном. Над ними будет находиться панель инструментов с наиболее часто используемыми командами. Ещё выше - строка меню.
Область слева - это боковая панель. В ней доступны список открытых файлов (вкладка "Документы") и проводник ("Проводник") в виде "служебных панелей". Переключаться между ними можно при помощи ярлыков, которые находятся вверху боковой панели.
Если Kate запущен для открытия файла (например, из Konqueror), то в правой области вы увидите текст редактируемого файла, а в списке файлов, который находится на боковой панели -- его имя. С помощью селектора файлов можно просматривать файловую структуру и открывать файлы для редактирования.
Отобразить или скрыть служебные панели Проводник и Документы можно с помощью меню +. Это меню даст вам первое впечатление о мощи и гибкости Kate. В этом разделе мы обсудим четыре пункта этого меню:
Показать/скрыть список файлов. Если окно боковой панели не открыто, Kate откроет его как отдельное, не присоединенное окно. Для того чтобы присоединить окно, зацепите его за две тонкие параллельные линии над закладками, щелкнув по ним левой кнопкой мыши, и, не отпуская кнопку, перетащите окно на редактируемую область. Когда вы найдёте то положение, которое вам нужно, отпустите левую кнопку мыши.
Если вы успешно зацепили окно, указатель мыши превратится в две перпендикулярные двунаправленные стрелки -- курсор перетаскивания.
Показать/скрыть селектор файлов. Этот пункт меню схож с предыдущим с одним различием: он управляет панелью проводника по файловой системе.
Показать/скрыть эмулятор терминала внизу главного окна Kate. Эмулятор терминала предоставляет вам командную строку внутри приложения.
Почти все сочетания клавиш Kate можно перенастроить через меню Настройка. По умолчанию горячие клавиши в Kate настроены следующим образом:
Insert | Переключить режим ввода текста с режима вставки в режим замены. В режиме вставки при вводе символа текст справа от курсора будет смещён правее на одну позицию, и символ будет вставлен в освободившееся пространство. В режиме замены при вводе символ, который стоит справа от курсора, будет заменён введенным. |
Стрелка влево | Переместить курсор на один символ влево. |
Стрелка вправо | Переместить курсор на один символ вправо. |
Стрелка вверх | Переместить курсор на одну строку вверх. |
Стрелка вниз | Переместить курсор на одну строку вниз. |
Page Up | Переместить курсор на одну страницу вверх. |
Page Down | Переместить курсор на одну страницу вниз. |
Backspace | Удалить один символ слева от курсора |
Home | Переместить курсор на начало файла. |
End | Переместить курсор на конец файла. |
Delete | Удалить один символ справа от курсора (или удалить весь выделенный текст). |
Shift+Стрелка влево | Выделить один символ текста слева от курсора. |
Shift+Стрелка вправо | Выделить один символ текста справа от курсора. |
F1 | Справка. |
Shift+F1 | |
Ctrl+F | |
F3 | |
Ctrl+B | Поставить закладку. |
Ctrl+C | Копировать выделенный текст в буфер обмена. |
Ctrl+N | Создать документ. |
Ctrl+P | |
Ctrl+Q | Выход -- закрыть редактор. |
Ctrl+R | |
Ctrl+S | Сохранить текущий файл. |
Ctrl+V | Вставить текст из буфера обмена. |
Ctrl+X | Скопировать выделенный текст в буфер обмена, после чего удалить его. |
Ctrl+Z | |
Ctrl+Shift+Z |
Сеанс - это список документов, которые открываются при его открытии, и информация о расположении элементов интерфейса. Вы можете создавать бесконечное множество именованных сеансов и использовать безымянные и анонимные сеансы для файлов, открываемых только один раз. Благодаря реализации концепции сеансов появилась возможность запуска нескольких экземпляров Kate одновременно - с разными сеансами в каждом.
Поддержка сеансов присутствует в трёх областях:
Ключи командной строки - появилась возможность выбора сеанса, в котором следует открывать файлы.
Меню Сеанс - позволяет переключаться между сеансами.
Окно настройки - позволяет настроить параметры работы с сеансами.
При создании нового сеанса используется конфигурация Default Session. Для того чтобы сохранить конфигурацию окна в этом станартном сеансе, включите сохранение конфигурации окна на странице параметров сеансов (в настроках kate), загрузите станартный сеанс, настройте параметры окна и сохраните сеанс снова.
При загрузке любого другого сеанса в заголовке окна Kate выводится его имя, таким образом оно имеет формат "имя-сенаса
: имя-документа-или-URL
- Kate"
Если при открытии файлов из командной строк указывается ключ --start
или он выбирается в диалоге выбора сеансов, то перед собственно открытием указанных файлов загружаются файлы их выбранного сеанса. Kate может открывать файлы всегда в новом сеансе. Для этого отметьте выберите соответствующий флажок на странице параметров сеанса в настройках программы, или укажите ключ имя-сеанса
--start
с пустым аргументом: ''
.
Начиная с Kate 2.5.1 PID текущего экземпляра экспортируется в переменную окружения KATE_PID
. Для открытия файлов из встроенного терминала используется текущий экземпляр программы, если явно не указано иного.
Использование нескольких сеансов позволяет эффективно организовать работу в разных областях - ведь для каждой из них требуется разный набор файлов. Однако, если вы отказываетесь принимать всё новое, вернуть старое поведение Kate можно следующим образом:
Программа должна запускаться с ключом --use
- добавьте его в команду запуска в привязках типов файлов, кроме того можно создать alias в вашем интерпретаторе.
Включите загрузку последнего сеанса при запуске программы.
Включите сохранение списка файлов при закрытии сеанса.
Загрузите сеанс по умолчанию
В нем детально описаны все команды меню, параметры настройки, инструменты, диалоговые окна, модули. Также здесь описано основное окно Kate, сам редактор и различные понятия и концепции, которые используются в приложении.
Чтобы открыть руководство, нажмите клавишу F1 или выберите пункт меню .
Контекстная помощь позволяет получить немедленную справку по какому-либо элементу графического окна, будь то кнопка или любая другая область окна.
Мы постарались обеспечить контекстной помощью все элементы, для которых это имеет смысл. Окно настройки Kate полностью снабжено контекстной помощью, также как и многие другие диалоговые окна.
Чтобы вызвать контекстную помощь, нажмите сочетание клавиш Shift-F1 или выберите пункт меню ->. Указатель мыши изменится на стрелку со знаком вопроса; теперь вам просто нужно щелкнуть левой кнопкой мыши на нужном элементе окна -- небольшое окно с контекстной помощью тут же появится на экране (если, конечно, такая помощь доступна).
Некоторые диалоговые окна имеют кнопку . Нажатие этой кнопки приведет к открытию соответствующего раздела документации в KHelpCenter.
Пока Kate не предоставляет возможности чтения документации, относящейся к редактируемому документу. В зависимости от типа редактируемого файла, вам может быть полезен встроенный терминал Konsole, например, для просмотра руководств UNIX® (man-страницы) или документации в формате info. Вы также можете использовать Konqueror.
Окно, представление, документ, панель, редактор... Что означают эти понятия в терминологии Kate? Эта глава даст ответы на все вопросы, связанные с окнами Kate.
Главное окно Kate -- это стандартное окно приложения KDE с несколькими служебными панелями, открываемыми через боковые вкладки. Главное окно содержит строку меню с расположенными на ней подменю и панель инструментов, на которой находятся кнопки для часто используемых команд.
Самая главная часть окна -- это область редактирования; по умолчанию она содержит один компонент для редактирования текста, в котором вы будете работать с документами.
Окно инструментов может быть пристыковано к главному окну, после чего оно ведет себя как обычный элемент управления (посмотрите на панель инструментов -- и вы поймёте). Список окон инструментов, использующих возможности пристыковки:
И, возможно, другие служебные панели, добавляемые модулями.
Размещение служебных панелей можно изменить. Для это щёлкните правой кнопкой на вкладке панели и выберите край экрана, в который следует её перенести.
Служебная панель может иметь Постоянное размещение. В этом случае при переходе к другой служебной панели последней будет выделено не всё пространство, а при её скрытии будет показана служебная панель, имеющая постоянное размещение.
В Kate можно редактировать несколько документов одновременно, разделив область редактирования на панели(наподобие тех, что используются в Konqueror и emacs). Используя панели (фреймы), вы можете просматривать в области редактирования несколько документов (или несколько экземпляров одного документа). Например, если в начале файла у вас расположены важные определения, с которыми вы будете часто сверяться, то вы наверняка оцените эту возможность по достоинству. Ещё пример: если вы пишете программу, то удобно будет в одной панели открыть заголовочный файл, а в другом -- файл реализации.
Если один и тот же документ открыть в нескольких панелях редактора, то все изменения (редактирование и выделение текста), сделанные в одной панели, будут немедленно отражены во всех остальных. Операция поиска и перемещение курсора действуют только в активной панели.
В текущей версии Kate нельзя открыть один и тот же документ несколько раз в том смысле, что редактироваться будет только один экземпляр, и изменения не будут отражаться во втором.
После разделения редактора на две панели они имеют одинаковую ширину и отображают текущий документ этого редактора. Новая панель будет снизу (в случае разделения по горизонтали) или справа (в случае разделения по вертикали). Активной становится новая панель -- об этом говорит маленький зелёный индикатор в строке состояния.
Список файлов показывает все открытые документы в виде списка. Рядом с изменёнными файлами отображается небольшая пиктограмма в виде дискеты.
Если открыты два или более файлов с одинаковыми именами (расположенные в разных каталогах), после имени второго будет добавлено «<2>» и т.д. Во всплывающей подсказке документа отображается полное имя, включающее путь - это поможет вам не запутаться и выбрать нужный файл.
Чтобы отобразить документ в активной панели, щёлкните в списке на имени документа.
Список файлов можно отсортировать посредством выбора команд из контекстного меню, это можно сделать по:
По порядку открытия
По имени документа.
По их полному имени (с протоколом).
По умолчанию, история перехода по документам будет визуализироваться в списке файлов - самый последний документ документ будет иметь более тёмный фон. Это можно отключить на странице Параметры списка документов окна настроек программы.
Стандартное положение списка в главном окне Kate - слева.
Служебная панель Обзор файловой системы представляет собой окно просмотра каталогов, которое позволяет быстро открыть нужный файл в активном фрейме.
Служебная панель Обзор файловой системы состоит из следующих элементов, сверху вниз:
Содержит стандартные кнопки навигации:
Отобразить в окне содержание вашего домашнего каталога.
Перейти в родительский каталог (по отношению к текущему), если это возможно.
Отобразить в окне предыдущий посещенный каталог. Если в истории обзора нет предыдущих посещенных каталогов, эта кнопка будет недоступна.
Перейти в следующий посещенный каталог. Это означает, что если вы в каталоге A нажали кнопку и вернулись в каталог B, то, нажав на кнопку , вы снова попадете в A. Если в истории обзора нет следующего посещенного каталога, эта кнопка будет недоступна.
Перейти в каталог активного документа. Эта кнопка будет запрещена, если активный документ - новый, несохранённый файл или каталог, в котором находится файл, не может быть выбран.
Здесь можно ввести путь к каталогу для обзора. Строка адреса содержит список предыдущих введенных каталогов; чтобы выбрать один из них, используйте кнопку со стрелкой справа от строки.
Строка адреса поддерживает возможность автозавершения текста, метод завершения можно выбрать из контекстного всплывающего меню, которое вызывается нажатием правой кнопки мыши на ней.
Стандартное окно KDE для обзора каталогов.
Позволяет задать фильтр для файлов, отображаемых в окне обзора каталогов. Фильтр состоит из стандартных символов; можно ввести несколько масок, разделяя их пробелами. Например: *.cpp *.h *.moc
Чтобы отобразить все файлы, введите один символ звездочки: *
.
Строка фильтрации сохраняет последние десять введенных фильтров (необязательно, чтобы все они были введены в текущем сеансе работы), чтобы установить один из них, нажмите на кнопке со стрелкой справа от строки и выберите нужный из списка.
Встроенный эмулятор терминала - тот же Konsole. Чтобы показать его, выберите пункт меню -> или нажмите клавишу F7. Сразу после отображения окно эмулятора терминала получает фокус ввода. Если включена опция Синхронизировать Konsole с активным документом, терминал будет сменять текущий каталог на каталог активного документа при его отображении и смене активного документа с одного на другой.
Стандартное положение в главном окне Kate - внизу, под областью редактирования.
Вы можете настроить Konsole через контекстное меню терминала; дополнительную информацию можно найти в руководстве Konsole.
В меню находится подменю . Из него можно вызвать внешние программы, передав им какую-либо информацию о текущем документе, например его URL, выделенным текстом.
Внешние инструменты определяются пользователем на соответствующей странице окна настройки программы.
Редактор Kate -- это область редактирования в главном окне Kate. Этот же редактор используется в KWrite, а также в Konqueror для отображения текстовых файлов, находящихся на вашем компьютере или в сети.
Редактор состоит из следующих частей:
Здесь отображается текст вашего документа.
Полосы прокрутки показывают положение видимой части текста документа; они используются для перемещения по документу. При перемещении ползунка курсор вставки остается на месте.
Полосы прокрутки отображаются только если размер текста документа выходит за пределы области редактирования; и наоборот, когда нет необходимости в прокручивании текста, полосы прокрутки не отображаются.
Граница пиктограмм -- это небольшая панель слева от области редактирования. На ней отображаются маленькие пиктограммы напротив помеченных строк.
Вы можете установить или убрать закладку на какой-либо строке, просто щёлкнув левой кнопкой мыши на границе пиктограмм напротив этой строки.
Отображение границы пиктограмм переключается пунктом меню ->
Панель номеров строк показывает номера видимых строк документа.
Отображение панели номеров строк переключается пунктом меню ->.
Полоса сворачивания блоков позволяет сворачивать и разворачивать отдельные блоки кода. Группировка строк в блоки осуществляется на основе правил подсветки синтаксиса.
Перемещение по тексту в Kate производится аналогично большинству графических редакторов - клавишами со стралками и Page Up, Page Down, Home, End, а также их разными комбинациями с клавишами Ctrl и Shift. Клавиша Shift позволяет выделять текст, а Ctrl имеет разные значения для разных клавиш, с которыми она выступает в комбинации:
Для клавиш Вверх и Вниз: прокрутка документа вместо перемещения курсора.
Для клавиш Влево и Вправо: перемещение по словам, а не по символам.
Для клавиш Page Up и Page Down: перемещение на край видимой области.
Для клавиш Home и End: перемещение в начало или конец документа, а не строки.
Kate также предоставляет возможность перехода от открывающей скобки (в т.ч. фигурной и квадратной) к соответствующей закрывающей и наоборот: Поместите курсор перед открывающей или после закрывающей скобки (обе скобки должны выделиться жёлтым фоном) и нажмите Ctrl-6.
Кроме того для быстрого перехода в заданную позицию в документе, можно использовать закладки.
Существует два основных способа выделения текста в Kate: с помощью мыши и с помощью клавиатуры.
Чтобы выделить текст мышью, щёлкните левой кнопкой на начале текста, который хотите выделить, и, не отпуская кнопки, переместите курсор мыши на конец текста. Выделенная область текста меняется по мере перемещения указателя.
Двойной щелчок левой кнопкой мыши позволяет выделить слово.
Тройной щелчок выделяет всю строку.
Если при нажатии левой кнопки мыши была нажата клавиша Shift, текст будет выделен следующим образом:
Если ничего не было выделено, от позиции ввода (текстовый курсор) до позиции курсора мыши.
Если был выделен текст, то от этого выделения и до позиции курсора мыши, включая само выделение.
При выделении текста мышью он автоматически копируется в буфер обмена. Его можно вставить в редактор или в другое приложение, щёлкнув средней кнопкой мыши в нужном месте.
Чтобы выделить текст при помощи клавиатуры, нажмите клавишу Shift и выделите нужный блок текста, используя клавиши навигации (клавиши со стрелками, Page Up, Page Down, Home и End, возможно, в комбинации с Ctrl)
Дополнительную информацию можно найти в разделе Навигация по тексту в этой главе.
Чтобы скопировать выделенный фрагмент текста, выберите пункт меню -> или нажмите соответствующий акселератор (по умолчанию Ctrl+C).
Чтобы снять выделение, выберите пункт меню -> или нажмите соответствующую быструю клавишу (по умолчанию Ctrl+Shift+A), или просто щёлкните левой кнопкой мыши где-нибудь в редакторе.
Когда режим вертикального выделения включен, вы можете выделить определённые столбцы символов в нескольких строках (проще говоря, выделить прямоугольный блок текста). Например, этот режим выделения может пригодиться, если у вас строки разделены табуляцией.
Режим вертикального выделения можно переключить, выбрав пункт меню ->
Если режим замены выделенного фрагмента включен, любой ввод или вставка текста приведёт к замене выделенного к этому моменту текста на новый текст. Если этот режим выключен, новый текст будет добавлен в позиции текстового курсора.
По умолчанию режим замены выделенного фрагмента включен.
Включить или выключить этот режим можно на странице "Выделение" в окне настройки.
Если включен режим постоянного выделения, ввод символов или перемещение текстового курсора не вызовет снятия выделения с ранее выделенного фрагмента. Это значит, что вы можете переместить курсор за пределы выделения и вводить текст.
По умолчанию режим постоянного выделения отключен.
Включить или выключить этот режим можно на странице "Выделение" в окне настройки.
Если режимы постоянного выделения и замены выделенного фрагмента включены, ввод или вставка текста в позицию курсора, если последний находится в пределах выделенного фрагмента, вызовет его замену и снятие выделения.
Чтобы скопировать текст, выделите его и выберите пункт меню ->. Также при выделении текста мыши он автоматически копируется в буфер выделения X-сервера.
Для вставки текста, находящегося в буфере обмена, выберите пункт меню ->.
Также вы можете вставить текст из буфера выделения (последний выделенный с помощью мыши текст) в редактор нажатием средней кнопки мыши в нужном месте.
Если вы используете рабочий стол KDE, вы можете выбрать ранее скопированный текст, используя программу Klipper, чей значок находится в лотке Kicker.
Диалоговые окна поиска и замены текста очень похожи, с той только разницей, что в диалоговом окне замены текста присутствует поле для ввода строки замены и еще несколько дополнительных параметров.
Следующие параметры являются общими:
Здесь нужно ввести строку поиска. Интерпретация строки зависит от параметров, описанных ниже.
Если эта опция включена, строка поиска считается регулярным выражением. Кнопка слева предназначена для графического редактирования выражения (кнопка будет доступна, если параметр включен).
Подробнее о регулярных выражениях написано в соответствующей главе.
Если параметр включен, поиск будет различать регистр букв.
Если эта опция включена, сопоставление будет положительным только в том случае, если с обоих сторон найденной строки будут стоять разделители слов, т.е. не алфавитно-цифровые символы -- любой другой отображаемый символ или конец строки.
Если эта опция включена, поиск начнётся с позиции текстового курсора, иначе -- с первой строки документа.
Если эта опция включена, поиск будет искать первое совпадение, которое находится до стартовой точки (позиция курсора или начало документа, если включена опция С начала документа).
Диалоговое окно Замена текста содержит несколько дополнительных опций:
Здесь нужно ввести заменяющую строку.
Эта опция недоступна, если нет выделенного текста или включена опция Подтверждать замену. Она позволяет выполнить замену совпавших фрагментов только в выделенном фрагменте текста.
Если эта опция включена, то перед каждой заменой будет выдано небольшое диалоговое окно, которое предложит вам несколько вариантов возможных действий:
Заменить текущее совпадение (в редакторе оно отображается выделенным).
Не заменять текущее совпадение и перейти к следующему совпадение (если оно есть).
Заменить все оставшиеся совпадения без выдачи предупреждающего окна.
Пропустить текущее совпадение и завершить процесс поиска.
В текущей версии Kate не предусмотрено возможности задания т.н. минимальных регулярных выражений (т.е. тех, которые берут совпадение по минимуму). Это будет исправлено в будущих версиях.
Если вам нужно найти какой-то текст, откройте диалоговое окно Поиск текста, нажав сочетание клавиш Ctrl+F или выбрав пункт меню ->, введите строку для поиска, установите нужные параметры и нажмите на . Если поиск начинался с позиции курсора и ничего не было найдено до конца документа (или начала -- при поиске в обратном направлении), вам будет предложено произвести поиск в оставшейся части документа.
При нахождении, совпадение выделяется в редакторе и диалоговое окно Поиск текста исчезает с экрана, но его настройки сохраняются, это делает поиск следующего совпадения очень простым:
Чтобы найти следующее совпадение в том же направлении поиска, выберите пункт меню -> или нажмите клавишу F3.
Чтобы вернуться к предыдущему совпадению, выберите пункт меню -> или нажмите сочетание клавиш Shift+F3.
Если при поиске была достигнута граница документа (начало или конец), вам будет предложено начать поиск с другой границы документа.
Если вам нужно заменить какой-то текст на другой, откройте диалоговое окно Замена текста, нажав сочетание клавиш Ctrl+R или выбрав пункт меню ->, введите строку для поиска и, если нужно, заменяющую строку (если она будет пуста, каждое совпадение будет просто удалено), установите нужные параметры и нажмите на .
При использовании регулярных выражений в поиске и замене текста можно добавлять обратные ссылки, чтобы использовать текст документа, совпавший с подвыражением, заключенным в скобках (собственно, это подвыражение и есть обратная ссылка).
Подробнее об этом читайте в разделе Приложение B, Регулярные выражения.
В командной строке доступны команды find, replace и ifind (поиск по мере набора).
Закладки позволяют вам отметить некоторые строки, чтобы потом было легко их найти.
Вы можете установить или убрать закладку двумя способами:
Переместите курсор ввода на нужную строку и выберите пункт меню -> (Ctrl+B)
Щёлкните напротив нужной строки на границе пиктограмм.
Закладки находятся в меню . Каждая из них представлена в виде отдельного пункта меню с надписью, состоящей из номера строки и первых нескольких символов этой строки. Чтобы переместить курсор ввода на строку, помеченную закладкой, откройте это меню и выберите нужную закладку.
Для быстрого переходе между закладкам воспользуйтесь меню -> (Alt+Page Down) или -> (Alt+Page Up).
Эта возможность позволяет отформатировать текст таким образом, чтобы ни одна строка не выходила за пределы определенной максимальной длины строки; для этого длинная строка разбивается на две или более строк, причем она разбивается на границе ближайших двух слов.
Чтобы включить или выключить её, воспользуйтесь опцией на странице правки диалогового окна Настройки.
Чтобы установить максимальную длину строки (в символах), воспользуйтесь параметром на странице правки диалогового окна Настройки.
Если перенос строк включен, готовьтесь к следующим полтергейстам:
При наборе редактор автоматически вставит разрыв строки при достижении максимальной длины строки.
При загрузке документа редактор автоматически разобьёт длинные строки на несколько строк нормальной длины (если они содержат пробелы -- иначе перенос строк невозможен).
В текущей версии невозможно установить перенос строк только для определенных типов файлов, или хотя бы ограничить действие этого параметра на уровне документа. Это будет исправлено в будущих версиях Kate.
Компонент редактора Kate поддерживает множество различных режимов автоматической расстановки отступов для разных форматов. Выбрать один из них можно посредством ->. Модуль расстановки отступов также предоставляет пункт меню ->, который пересчитывает отступ выделенного текста или текущей строки.
Во всех режимах отступа используются параметры текущего документа, связанные с расстановкой отступов.
Все такие параметры можно задать с помощью переменных документа и типов файлов.
Доступные режимы расстановки отступов
Выключить расстановку отступов.
Расстановка отступов аналогично предыдущей непустой строке. Вы можете совмещать его с командами расстановки отступов меню .
Для исходных текстов на языках, подобных C -- C++, C#, java, javascript и т.д. Этот режим не будет работать со сценарными языками, такими как Perl или PHP.
Альтернативный режим для C-подобных языков, с теми же ограничениями.
Специально для сценариев на языке Python.
Отступы для разметки XML. Это не работает для HTML, а только для XHTML, из-за неправильной работы со старым стилем тегов HTML (например <br>)
Экспериментальный и может изменить своё поведение или вообще исчезнуть в будущем.
Он отличается тем, что его параметры можно настроить переменными в самом документе (или в настройках типа файла). Распознаются следующие переменные:
Регулярное выражение строки, после которой следует добавить один отступ. var-indent-indent: Регулярное выражение строки, в которой следует добавить один отступ.
Регулярное выражение строки, в которой следует снять один отступ.
Список символов, приводящих к автоматическому перерасчёту отступов при наборе
Список скобок для обработки. Любая комбинация квадратных, фигурных и круглых скобок. Каждые из них обрабатываются так: если найдена одна открывающая скобка, добавляется один отступ, если закрывающая - снимается.
var-indent-couple-attribute
При поиске открывающих/закрывающих скобок, учитывать только символы с данным атрибутом. Это должно быть имя атрибута из файла определения синтаксиса, например "Symbol". Если не указано, используется 0 (обычно это 'Normal Text').
В Kate предусмотрены две формы модулей - модули собственно для Kate и модули для компонента редактора. Последний используется другими приложожениями, такими как KDevelop, Quanta, KWrite.
Оба типа модулей настраиваются в окне параметров, в котором также можно настроить сами модули, если они это предусматривают
Многие модули помещены в пакет kdeaddons, другие модно найти поиском в Интернет. несколько модулей поставляются вместе с компонентом редактора -- модуль автозавершения, заклвдок, вставки файлов, тезауруса, проверки орфографии и поиска по мере набора.
Команды "Комментировать" и "Раскомментировать", которые доступны из меню , позволяют добавить или убрать маркеры комментариев для выделенного блока текста (или для текущей строки, если текст не выделен), при условии, что комментарии поддерживаются форматом редактируемого текста.
Правила комментирования определяются синтаксисом; таким образом, если подсветка синтаксиса не включена, то команды "Закомментировать" и "Раскомментировать" будут недоступны.
Некоторые форматы поддерживают только однострочные маркеры комментариев, другие -- только многострочные, третьи -- и те, и другие. Если многострочные маркеры недоступны, то комментирование блока, в котором не до конца выделена последняя строка, будет невозможным.
Предпочтение отдаётся комментированию отдельных строк однострочными маркерами, если последние допустимы синтаксисом и если такое комментирование возможно -- это помогает избежать проблем со вложенными комментариями.
При удалении маркеров комментариев выделение снимается с раскомментированного текста. При удалении маркеров многострочного комментария пробелы снаружи маркеров игнорируются.
Чтобы закомментировать выделенный текст (или активную строку), выберите пункт меню-> или нажмите соответствующее сочетание клавиш (по умолчанию Ctrl+D).
Чтобы удалить маркеры комментариев, выберите пункт меню -> или нажмите соответствующее сочетание клавиш ( по умолчанию Ctrl+Shift+D).
Модуль Kate имеет встроенную командную строку, позволяющую производить различные действия, оставляя интерфейс минималистским. Она представляет из себя поле ввода внизу области редактора. Для получения к ней доступа, выберите пункт меню -> или нажмите F7 (по умолчанию). Команды, доступные из неё, описаны ниже, кроме того, модули могут предоставлять свои дополнительные команды.
Для выполнения команды введите её и нажмите Enter. На месте команды будет выведено сообщение об успешном её выполнении или об ошибке. Если вы вызвали командную строку клавишей F7, она будет автоматически скрыта по прошествии нескольких секунд. Для того чтобы убрать сообщение и ввести новую команду, нажмите F7 ещё раз.
Вы всегда можете получить справку с помощью команды help. Для получение списка всех доступных команд, введите help list, для просмотра справки по определённой команде - help команда
.
Для навигации по истории команд, воспользуйтесь стрелками Вверх и Вниз. При отображении команды из истории, её аргументы будут выделены, так что заменить их на другие легко.
Установленные таким способом параметры применяются только к текущему экземпляру редактора и не сохраняются. Удобно, если нужно установить параметры, отличные от стандартных (например, отступ).
Типы аргументов
Используется для команд включения/выключения. Допустимые значения - on
, off
, true
, false
, 1
или 0
Целое число
Строка
set-tab-width [INTEGER width]
Устанавливает расстояние между позициями табуляции
set-indent-width [INTEGER width]
Устанавливает ширину отступа. Только при создании отступов пробелами.
set-word-wrap-column [INTEGER width]
Устанавливает максимальную длину строк в случае, если включён автоматический перенос.
set-icon-border [BOOLEAN enable]
Устанавливает видимость рамок пиктограмм.
set-folding-markers [BOOLEAN enable]
Устанавливает видимость маркеров сворачивания блоков кода.
set-line-numbers [BOOLEAN enable]
Устанавливает видимость нумерации строк.
set-replace-tabs [BOOLEAN enable]
Заменять при вводе символы табуляции на пробелы.
set-remove-trailing-space [BOOLEAN enable]
Удалять пробелы в конце строки при снятии с неё курсора.
set-show-tabs [BOOLEAN enable]
Представлять символы табуляции пробельное пространство в конце строк маленькими точками.
set-indent-spaces [BOOLEAN enable]
Вставлять заданное количество пробелов для каждого уровня отступа, вместо одного символа табуляции.
set-mixed-indent [BOOLEAN enable]
Использовать для отступов как символы табуляции, так и пробелы. Это реализуется путём замены пробелов в количестве, кратном ширине символа табуляциями, на последние.
Эта команда также включит расстановку отступов пробелами, и установит ширину отступов, если она не указана, в половину значения tab-width
(для текущего документа на время выполнения).
set-word-wrap [BOOLEAN enable]
Динамический перенос слов
set-replace-tabs-save [BOOLEAN enable ]
Заменять символы табуляции на пробелы при сохранении.
set-remove-trailing-space-save [BOOLEAN enable]
Удалить пробелы в конце строк при сохранении.
set-indent-mode [name]
Выбрать режим расстановки отступов. Параметр name
может иметь следующие значения: 'cstyle', 'csands', 'xml', 'python', 'varindent' и 'none'. При других значениях используется 'none'.
set-highlight [highlight]
Выбрать формат для подсветки, один из содержащихся в подменю->. Доступно также автозавершение параметра.
Команды, которые непосредственно изменяют текущий документ.
indent
Подставляет отступы к выделенным строкам или к текущей.
unindent
Снимает отступы с выделенных строк или с текущей.
cleanindent
Очистить отступы в выделенных строках или в текущей в соответствии с параметрами расстановки отступов для текущего документа.
comment
Вставляет маркеры, отмечающие выделенные строки или текущую как комментарии, в соответствии с форматом текущего файла (определяется способом подсветки синтаксиса).
uncomment
Удалить маркеры, отмечающие выделенные строки или текущую как комментарии, в соответствии с форматом текущего файла.
kill-line
Удаляет текущую строку.
replace [pattern] [replacement]
Заменить текст, совпадающий с pattern
на replacement
. Для включения пробелов в pattern
, нужно заключить в двойные или одинарныекавычки и pattern
, и replacement
. Если аргументы не заключены в кавычки, первое слово будет принято за pattern
, а остальное - за replacement
. Если replacement
не задать, все pattern
будут удалены.
Для настройки параметров поиска, нужно указать соответствующие флаги после двоеточия (replace:options pattern replacement
). Возможные параметры:
b
Искать в обратном направлении.
c
Искать от позиции курсора.
e
Искать только в выделенном тексте.
r
Аргумент pattern
- регулярное выражение. Вы можете использовать \N
в replacement
для получения N-ной подстроки найденного текста.
s
С учётом регистра.
p
Подтверждать каждую замену.
w
Только целые слова.
date [format]
Вставить строку с датой/временем в указанном формате (задаётся параметром format
), или в «yyyy-MM-dd hh:mm:ss», если параметр упущен. Доступны следующие подстановки:
d | Номер дня в месяце без ведущего нуля (1-31). |
dd | Номер дня в месяце с ведущим нулём (01-31). |
ddd | Сокращённое название дня недели ('Пн'..''Вс, 'Mon'..'Sun'). |
dddd | Полное названия дня недели ('Понедельник'..'Воскресенье', 'Monday'..'Sunday'). |
M | Номер месяца без ведущего нуля (1-12). |
MM | Номер месяца с ведущим нулём (01-12). |
MMM | Сокращённое название месяца ('Янв'..'Дек', 'Jan'..'Dec'). |
yy | Год двумя цифрами (00-99). |
yyyy | Год четырьмя цифрами (1752-8000). |
h | Час без ведущего нуля (0..23 или 1..12, в зависимости от настроек). |
hh | Час с ведущим нулём (00..23 or 01..12, в зависимости от настроек). |
m | Минуты без ведущего нуля (0..59). |
mm | Минуты с ведущим нулём (00..59). |
s | Секунды без ведущего нуля (0..59). |
ss | Секунды с ведущим нулём (00..59). |
z | Миллисекунды без ведущих нулей (0..999). |
zzz | Миллисекунды с ведущими нулями (000..999). |
AP | Использовать 12-часовый формат часов. AP будет заменено на "AM" или "PM". |
ap | Использовать 12-часовый формат часов. ap будет заменено на "am" или "pm". |
char [identifier]
Эта команда позволяет вставить символ по его числовому идентификатору в десятичной, восьмеричной или шестнадцатеричной системах счисления. Чтобы использовать её, откройте диалоговое окно "Команда правки" и наберите char: [number]
в строке ввода, после чего нажмите кнопку .
"Типичный пользователь" при виде этих команд обязательно вздрогнет и начнёт искать на клавиатуре кнопку "Windows". В самом деле, кому придёт в голову искать текст подобным образом? Но вы же не "типичный", не так ли? Поэтому попробуем разобраться в этих двух sed-подобных командах. Первая выполняет поиск/замену в текущей строке, вторая -- во всём файле (%s///).
Вкратце, команды производят поиск текста, заданного маской поиска -- регулярным выражением (regexp) между первой и второй наклонной чертой, и, при нахождении, выполняет замену выражением, которое задано между второй и третьей чертой. Круглые скобки в маске поиска позволяют задать подстроки в найденном тексте, на которые можно потом ссылаться в выражении замены. Обратная ссылка -- это регулярное выражение, которое при совпадении заменяется на фактический текст и может быть использовано в шаблоне замены. Для этого, в нужном месте поставьте обратную черту, а за ней номер подстроки по порядку (\1
-- для первой пары скобок, \2
-- для второй, и т. д.).
Чтобы искать сами скобки (
или )
, нужно предварить их обратной чертой: \(\)
Если в самом конце указать i
, поиск будет проводиться с учётом регистра, а если g
- будут заменены все вхождения текста, совпадающего с регулярным выражением, иначе - только первое.
Пример 6.2. Замена текста в текущей строке
Будучи противником принципа "разделяй и властвуй", вы решили откомпилировать свою программу. Но компилятор начал на вас ругаться: класс myClass
, упомянутый в строке 3902, не определён.
"Чёрт!", - думаете вы, -- "да это же мой класс MyClass
". Вы добираетесь до строки 3902 и, вместо того, чтобы пытаться искать слово в этой длинной строке (а кто сейчас укладывает каждую строчку кода в 60 символов?), вы запускаете диалоговое окно "Команда правки", вводите s/myclass/MyClass/i
, жмёте , сохраняете и компилируйте -- успешно и без ошибок.
Пример 6.3. Замена текста во всём файле
Представьте себе, что у вас есть файл, в котором вы несколько раз упоминаете некоего человека по имени «госпожа Иванова». Но вдруг вам сообщают, что эта самая госпожа Иванова вчера вышла замуж за господина с редкой фамилией «Петров». Естественно, вам нужно заменить все упоминания о госпоже Ивановой на текст «госпожа Петрова».
Вызовите командную строку и введите следующий текст: %s/госпожа Иванова/госпожа Петрова/
-- и ваша работа сделана.
Пример 6.4. Более сложный пример
Этот пример показывает, как пользоваться обратными ссылками и классами символов (если вы не знаете, что это такое, советуем ознакомиться с приведенными ниже разделами).
Допустим, у вас набрана такая строка:
void MyClass::DoStringOps( String &foo, String &bar String *p, int &a, int &b )
Теперь вы думаете, что это недостаточно "красивый" код, и решаете, что вам нужно использовать ключевое слово const
с параметрами, передаваемыми по ссылке (теми, перед которыми стоит амперсанд). Вы также хотите удалить лишние пробелы.
Запустите диалоговое окно "Команда правки" и наберите: s/\s+(\w+)\s+(&)/ const \1 \2/g
, и не забудьте нажать кнопку -- иначе ничего не выйдет. Символ g
в конце команды указывает компилятору "пересчитывать" регулярное выражение обратной ссылки каждый раз, когда встречаются совпадения.
Вывод: void MyClass::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &b )
Миссия завершена! Ну, и что же произошло? Мы искали некоторое количество пробелов (\s+
), за которыми идут несколько латинских символов (\w+
), следом за ними опять несколько пробелов (\s+
), после которых стоит амперсанд, и по ходу дела сохраняли эти алфавитные символы и амперсанд для использования их в операции замены. После этого мы заменили совпадающие части строки следующей последовательностью: один пробел, за которым идёт спецификатор «const», за ним ещё один пробел, после которого наши сохранённые символы (\1
), ещё один пробел и сохранённый амперсанд (\2
)
В одном случае латинские символы составили слово «String», в другом -- слово «int», т.е. символьный класс \w
с последующим знаком +
определяет символьный набор произвольной длины.
goto [INT line]
Перейти к указанной строке.
find [pattern]
Перейти к первому образцу, заданному параметром pattern
. Последующие вхождения образца можно найти посредством пункта меню -> (клавиша по умолчанию - F3).
Параметры команды поиска можно задавать добавлением двоеточия и "флагов" после её имени (find:options pattern
). Флаги - набор из следующих букв:
b
Искать в обратном направлении.
c
Искать от позиции курсора.
e
Искать только в выделенном тексте.
r
Аргумент pattern
- регулярное выражение. Вы можете использовать \N
в replacement
для получения N-ной подстроки найденного текста.
s
С учётом регистра.
w
Только целые слова.
ifind [pattern]
Поиск по мере набора. Поддерживается установка дополнительных флагов
b
Искать в обратном направлении.
r
Поиск по регулярному выражению.
s
С учётом регистра.
c
Искать от позиции курсора.
Сворачивание кода позволяет скрывать участки документа в редакторе, упрощая осмотр громоздких документов. В Kate разделение на сворачиваемые участки определяется правилами подсветки синтаксиса, следовательно, доступно не для всех форматов файлов. В основном, сворачивание кода доступно в режиме написания исходного кода, XML-разметки и т.п. Большинство способов подсветки позволяют также самостоятельно определять скрываемые области, чаще всего используя ключевые слова BEGIN
и END
.
Для того чтобы включить/отключить функцию сворачивания, выберите пункт меню ->. На панели маркеров сворачивания с левой стороны документа появится графическое представление сворачиваемых участков. Знак "-" показывает, что участок развёрнут, знак "+" обозначает свёрнутый участок. Щелчок на знаке "+" приведёт к разворачиванию свёрнутого участка, и наоборот (с одновременным изменением графического представления).
Для управления состоянием сворачиваемых участков служат четыре команды, смотрите справку по меню.
Если вы не хотите использовать функцию сворачивания, можно отключить параметр Показать маркеры сворачивания (если доступны) на странице настройки внешнего вида редактора
Начиная с версии 2.5, компонент редактора Kate поддерживает написание сценариев на языке ECMA, известном также как JavaScript.
Сценарии можно вызывать только из встроенной командной строки. При этом необходимо, чтобы сценарий и файл .desktop (если он существует) находились в той папке, в которой Kate сможет их разыскать. Подходящая папка для этого - katepart/scripts
в папках данных KDE. Найти папки данных можно командой kde-config --path
data
. Как правило, существуют системная и пользовательские папки данных. Естественно, сценарии в системных папках доступны всем пользователям системы, а в пользовательских - только их владельцам.
Эта функциональность находится на экспериментальной стадии разработки, весьма вероятно его изменение в дальнейшем.
Сценарии нельзя добавлять в меню или назначать им комбинации клавиш. Может быть, в дальнейшем мы сможем это исправить.
Также невозможно использовать в сценариях аргументы. Потерпите, в светлом будущем это вполне может произойти ;)
Здесь приведен полный список функций и свойств, доступных для объектов document и view. Разумеется, доступны любые стандартные объекты языка, такие как Math, String, Regex и т.д.
Во время исполнения сценария, объектом document
является текущий документ, а объектом view
является текущий вид (панель).
Конечно, в настоящее время типы аргументов в JavaScript не используются, они просто информируют, какие виды значений ожидаются функциями.
Глобальные функции
debug( string
) [функция]
параметры
string
выводимая строка
Выводит строку на стандартный поток ошибок, используя функцию kDebug()
. Для вывода используется выделенное пространство, в начало может быть добавлен префикс Kate (KJS Scripts):
Программный интерфейс (API) класса document
document.attribute( line
, column
); [функция]
Параметры
uint line
Строка, в которой находится атрибут.
uint column
Столбец, в котором находится атрибут.
Возвращает числовые значения позиции атрибута в документе [line
,column
]. Атрибут представляет собой вид или стиль текста, а также используется для определения подсветки синтаксиса в различных частях текста смешанных форматов вроде HTML или PHP.
document.canBreakAt( Char c
, uint attribute
); [функция]
Параметры
c
Знак для проверки
attribute
Атрибут для позиции c
.
Возвращает допустимость разрыва строки на знаке c с атрибутом attribute. Результат зависит от того, какие атрибуты допускают разрыв строки без потери принадлежности подсветки.
document.canComment( uint start_attribute
, uint end_attribute
); [функция]
Параметры
start_attribute
Атрибут начала участка комментария.
end_attribute
Атрибут конца участка комментария.
Возвращает принадлежность start_attribute и end_attribute к одной и той же системе подсветки синтаксиса. Если это так - всё нормально.
document.clear(); [функция]
Очищает документ.
document.commentStart( uint attribute
); [функция]
Параметры
attribute
Атрибут текста, для которого вводится строка commentStart.
Возвращает строку, необходимую для начала многострочного комментария к тексту с атрибутом, или пустую строку, если в этом тексте не поддерживаются многострочные комментарии.
document.commentMarker( uint attribute
); [функция]
Параметры
attribute
Атрибут текста, для которого вводится строка commentMarker
Возвращает пометку остатка строки как комментария к тексту с атрибутом, либо пустую строку для текста, в котором не поддерживаются комментарии в той же строке.
document.commentEnd( uint attribute
); [функция]
Параметры
attribute
Атрибут текста, для которого вводится строка commentEnd
Возвращает строку, необходимую для окончания многострочного комментария к тексту с атрибутом, либо пустую строку для текста, в котором многострочные комментарии не поддерживаются.
document.editBegin(); [функция]
Начало группы редактирования. Все действия включаются в одну группу отмены до вызова editEnd().
document.editEnd(); [функция]
Окончание группы редактирования.
document.highlightMode; [свойство:только для чтения]
Название режима подсветки (JavaScript или C++). Если к документу не применяется режим подсветки, устанавливается значение None. Помните - необходимо использовать англоязычное название.
document.indentMode; [свойство:только для чтения]
Название режима отступов документа, такое как normal
или cstyle
. Помните - если режим отступов не задан, устанавливается значение none
.
document.indentWidth; [свойство:только для чтения]
Устанавливает ширину отступа. Только при создании отступов пробелами.
document.insertLine( uint line
, string text
); [функция]
Параметры
line
номер строки в документе
text
вставляемый текст
Вставляет новую строку с текстом text
в строку под номером line
.
document.insertText( uint line
, uint column
, string text
); [функция]
Параметры
line
номер строки
column
номер столбца
text
вставляемый текст
Вставляет текст text
в строку номер line
, столбец номер column
.
Возвращает размер документа в байтах.
document.lines(); [функция]
Возвращает число строк в документе.
Логическая величина. Сообщает, применяется ли в документе смешанный тип отступов. Если это так - отступы осуществляются при помощи и пробелов, и позиций табуляции, сходно с редактором Emacs.
uint line
); [функция]Параметры
line
номер строки
Удаляет строку документа номер line.
document.removeText( uint startLine
, uint startColumn
, uint endLine
, uint endColumn
); [функция]
Параметры
startLine
указывает начальную строку
startColumn
указывает начальный столбец
endLine
указывает конечную строку
endColumn
указывает конечный столбец
Удаляет участок текста, начиная от строки номер startLine
и столбца номер startColumn
до строки номер endLine
и столбца номер endColumn
.
document.setText( string text
); [функция]
Параметры
text
текст документа
Приводит всё содержимое документа к тексту с параметрами text
.
document.spaceIndent; [свойство:только для чтения]
Логическая величина. Сообщает, применяется ли к документу отступ пробелами. Если это так, то отступы в документе производятся на величину indentWidth между уровнями, иначе сдвиг происходит на одну позицию табуляции.
document.textFull(); [функция]
Возвращает весь текст документа. Если в тексте есть переводы строк, то знак перевода строки отобразится как \n
.
document.textLine( uint line ); [функция]
Параметры
line
строка номер
Возвращает текст строки номер line
.
document.textRange( uint startLine
, uint startColumn
, uint endLine
, uint endColumn
); [функция]
Параметры
startLine
указывает начальную строку
startColumn
указывает начальный столбец
endLine
указывает конечную строку
endColumn
указывает конечный столбец
Возвращает указанный участок текста. Если в пределах участка есть переводы строк, то знак перевода отобразится как \n
.
Аппаратно-программный интерфейс (API) view
view.clearSelection(); [функция]
Снимает выделение со всего текста.
view.cursorColumn(); [функция]
Возвращает столбец, в котором находится курсор (учитываются все знаки табуляции).
view.cursorColumnReal(); [функция]
Возвращает номер столбца, в котором реально находится курсор (знак табуляции считается за один символ).
view.cursorLine(); [функция]
Возвращает номер строки, в которой находится курсор.
view.hasSelection(); [функция]
Если выделенный текст есть, возвращает true
, иначе false
.
view.removeSelectedText(); [функция]
Если есть выделенный текст, он удаляется.
view.selectAll(); [функция]
Выделяет весь текст.
view.selection(); [функция]
Возвращает выделенный текст. Если в пределах выделенного текста есть переводы строк, они отображаются знаком \n
.
view.selectionEndColumn; [свойство:только для чтения]
Возвращает номер последней позиции выделяемого участка.
view.selectionEndLine; [свойство:только для чтения]
Возвращает номер последней строки выделяемого участка.
view.selectionStartColumn; [свойство:только для чтения]
Возвращает номер начальной позиции выделяемого участка.
view.selectionStartLine; [свойство:только для чтения]
Возвращает номер начальной строки выделяемого участка.
view.setCursorPosition( uint line
, uint column
); [функция]
Параметры
line
Указывает строку для курсора.
column
Указывает столбец для курсора.
Устанавливает курсор ввода в позицию [line
, col
]. Установка курсора происходит визуально, символ табуляции считается за несколько символов, в зависимости от расположения текста, но не больше значения параметра Ширина табуляции. Отсчёт номеров строк и столбцов начинается от нуля.
view.setCursorPositionReal( uint line
, uint column
); [функция]
Параметры
line
Указывает строку для курсора.
column
Указывает столбец для курсора.
Устанавливает курсор в позицию [line
, col
]. При рассчёте позиции табуляция соответствует одному символу. Отсчёт строк и столбцов начинается от нуля.
view.setSelection( uint startLine
, uint startColumn
, uint endLine
, uint endColumn
); [функция]
Параметры
startLine
указывает начальную строку
startColumn
указывает начальный столбец
endLine
указывает конечную строку
endColumn
указывает конечный столбец
Устанавливает выделение от строки номер startLine
и столбца номер startColumn
до строки номер endLine
и столбца номер endColumn
.
Пример 6.6. Пример сценария
В качестве примера рассмотрим небольшой сценарий, переводящий выделенный текст в верхний регистр. Очевидно, сначала необходимо проверить, есть ли выделенный текст вообще. Если есть - возьмём этот текст, изменим регистр и заменим его новым текстом. Сценарий будет выглядеть примерно так:
if ( view.hasSelection() ) { column = view.selectionStartColumn; line = view.selectionStartLine; selection = view.selection().toUpperCase(); document.editBegin(); view.removeSelectedText(); document.insertText( line, column, selection ); document.editEnd(); }
Для группировки действий так, чтобы их можно было отменить одним вызовом пункта меню , мы поместили строки
view.removeSelectedText()и
document.insertText()между
document.editBegin()и
document.editEnd().
Пример 6.7. Пример файла .desktop
Вот пример простого .desktop-файла, соответствующего приведенному выше сценарию.
[Desktop Entry] Encoding=UTF-8 Name=Kate Part JavaScript Uppercase Comment=Script to uppercase the selection X-Kate-Command=uppercase-selection X-Kate-Help=<p>Usage: <code>uppercase-selection</code></p>
Мы видим, что здесь можно определить кодировку, ввести название, комментарий, указать путь к справке с помощью X-Kate-Help и название для командной строки через X-Kate-Command. Если файлы находятся в SVN-хранилище KDE, то пункты Name, Comment and X-Kate-Help автоматически переводятся на другие языки командами переводчиков KDE.
Kate может разыскивать в определённых папках (см. выше) файлы *.js
. Для каждого найденного файла будет проведен поиск соответствующего файла .desktop
, например файлу uppercase.js соответствует файл uppercase.desktop.
Если требуемый файл .desktop
не найден, сценарий будет зарегистрирован в командной строке katepart с именем без расширения .js, для нашего примера это будет uppercase
.Если такое формирование названия команды подходит, и вам не требуются какие-то дополнительные возможности, которые предоставляет файл .desktop
, он может не понадобиться вам совсем.
Если файл .desktop
найден, то katepart считывает имя из пункта .desktop-файла X-Kate-Command, например X-Kate-Command=uppercase-selection.
По этой команде создаётся новый документ. Он будет добавлен в перечень , который находится слева на боковой панели, и будет назван Безымянный.
Открывает диалог выбора файла KDE, позволяющийоткрыть один или несколько файлов.
Эта команда позволяет открыть файл, который вы недавно редактировали, выбрав его в подменю.
В подменю выводится список приложений, связанных с mime-типом текущего файла.
Команда открывает диалог со списком доступных программ, позволяя вам выбрать другое приложение и открыть в нём текущий файл. Ваш файл будет оставаться открытым в Kate.
Эта команда сохраняет текущий файл. Пользуйтесь ею почаще. Если текущий документ Безымянный, то вместо команды будет выполнена команда .
С помощью этой команды вы можете назвать или переименовать файл. Она открывает диалог сохранения файла, который работает аналогично диалогу открытия. Вы можете перемещаться по файловой системе, быстро просматривать содержание файлов и фильтровать отображение файлов с помощью файловых масок.
Введите имя, которое вы хотите присвоить сохраняемому файлу, и нажмите .
Эта команда сохраняет все открытые файлы.
Обновляет текущий файл. Эта команда удобна, если файл, открытый в Kate изменен другой программой.
Вывод текущего файла на печать.
Экспортирует текущий файл в формат HTML для просмотра в виде Интернет-страницы.
Открывает почтовую программу и прикрепляет файл к письму.
Эта команда закрывает текущий файл. Если файл был изменён со времени последнего сохранения - будет предложено сохранить его перед закрытием.
Эта команда закрывает все файлы, которые были открыты в Kate.
Эта команда закрывает Kate и все открытые файлы. Если вы изменили какие-либо из них с момента их последнего сохранения - будет предложено сохранить эти файлы.
Меню содержит набор команд для работы с текущим документом.
Пункты меню
Отменяет последнюю команду редактирования (ввод, копирование, вырезание и т.д.).
Если включён режим группировки отмены, эта команда может отменить несколько однотипных команд вроде ввода символов.
Отменяет последний откат.
Удаляет выделенный текст (если есть) и помещает его копию в буфер обмена.
Копирует выделенный текст (если есть) в буфер обмена.
Копирует выделенный текст с подсветкой синтаксиса, установленной для HTML.
Копирует первую запись из буфера обмена в позицию курсора.
Если включён режим замены выделенного фрагмента, вставленный текст заменит выделенный фрагмент (если он есть).
Выделяется весь текст.
Снимает выделение с текста (если есть).
Переключает режим выделения. Если выбран режим выделения «BLOCK», то можно делать вертикальное выделение, например, выделить столбцы с пятого по десятый в строках 9-15.
Строка состояния показывает текущий режим выделения («NORM» или «BLOCK»).
Открывает диалог поиска, который позволяет найти нужный текст в редактируемом документе.
Переход к нижележащему совпадению с текущим шаблоном, начиная от позиции курсора.
Переход к вышележащему совпадению с текущим шаблоном, начиная от позиции курсора.
Открывает диалог замены одной текстовой строки другой строкой.
Открывает диалог перехода к нужной строке по её номеру.
В меню для каждого открытого документа существует отдельный пункт, выбор которого приводит к переходу фокуса ввода на соответствующий файл. Если открыты несколько фреймов, то редактор для текущего документа будет отображен в активном.
Кроме того, для перехода по открытым документам доступны пункты меню:
Пункты меню
Загружает в редактор предыдущий документ очереди. Если открыты несколько фреймов, то документ будет загружен в активный.
Порядок следования документов в очереди определяется порядком, в котором документы были открыты. Это противоречит логической предыстории редактирования (сравните с поведением браузера). Возможно, эта «непредсказуемость» будет исправлена в будущих версиях Kate.
Загружает в редактор следующий документ очереди. Если открыты несколько фреймов, то документ будет загружен в активный.
Порядок следования документов в очереди определяется порядком, в котором документы были открыты. Это противоречит логической предыстории редактирования (сравните с поведением браузера). Возможно, эта «непредсказуемость» будет исправлена в будущих версиях Kate.
Меню позволяет управлять фреймами и настраивать параметры, относящиеся к текущему редактору.
Пункты меню
С помощью этой команды можно перемещать фокус ввода из области редактирования на командную строку и обратно.
Это меню содержит доступные схемы. Здесь можно изменить схему для текущего документа, а для изменения предустановленной схемы воспользуйтесь диалогом настройки
Включает/отключает динамический перенос строк текущего документа. При динамическом переносе текст в окне можно просматривать без горизонтальной перемотки, то есть строка, непрерывная на самом деле, для удобства делится на несколько.
Включает/отключает отображение вертикальных линий, указывающих позицию переноса строк, заданную в диалоге настройки. Эта функция доступна только для моноширинных шрифтов.
Скрывает/отображает панель значков слева от окна редактирования.
Скрывает/отображает панель с номерами строк слева от окна редактирования.
Включает/отключает отображение закладок (или других отметок) на полосе вертикальной прокрутки. Если включено, то на полосе прокрутки отображаются тонкие линии, окрашенные в цвет отметки. Щёлкните на такой линии средней кнопкой мыши, и курсор переместитcя в отмеченную область.
Включает/отключает отображение панели маркеров сворачивания блоков кода слева от окна редактирования. Более подробно об этом написано в разделе Сворачивание блоков кода.
Сворачивает все блоки верхнего уровня в документе.
Разворачивает все блоки верхнего уровня в документе.
Сворачивает ближайший к курсору блок.
Разворачивает ближайший к курсору блок.
Меню позволяет работать с закладками активного документа.
Ниже описанных здесь пунктов меню располагаются пункты самих закладок. Текст каждого такого пункта -- номер и несколько символов строки, на которую указывает эта закладка. Выбрав пункт меню закладки, вы попадете на начало помеченной строки. Редактор автоматически выполнит прокрутку текста, если эта строка будет не видна.
Пункты меню
Устанавливает или удаляет закладку для текущей строки активного документа (если закладки не было, она устанавливается, иначе удаляется).
Удаляет все закладки из текущего документа.
Переместит курсор на начало вышележащей строки с закладкой. Текст пункта включает номер и несколько первых символов строки. Этот пункт появляется, только если выше курсора есть строка с закладкой.
Переместит курсор на начало нижележащей строки с закладкой. Текст пункта включает номер и несколько первых символов строки. Этот пункт появляется, только если ниже курсора есть строка с закладкой.
Перенесет выделенный текст во встроенный эмулятор терминала. Новая строка к тексту не добавляется.
Это подменю содержит все настроенные вами внешние инструменты.
Устанавливает статус "Только для чтения" для текущего документа, тем самым предохраняя его от любых возможных изменений.
Выбор типа файла для текущего документа. Перекрывает параметр тип файла, указанный в -> на вкладке Типы файлов.
Выбор нестандартной схемы подсветки для текущего документа. Перекрывает глобальный режим подсветки, указанный в ->.
Выбор режима отступов для текущего документа. Перекрывает глобальный режим отступов, указанный в ->.
Выбор кодировки для текущего документа, отличной от указанной в -> на вкладке Открытие/Сохранение. Если файл не изменён, то он будет открыт повторно в указанной кодировке, а если изменён - то будет выполнено преобразование текущего текста в указанную кодировку.
Выбор окончания строки для текущего документа. Перекрывает стандартную настройку в ->.
Запускает проверку правописания -- программу, разработанную для помощи пользователям в поиске и исправлении ошибок правописания. Щелчок на этом пункте меню вызывает окно проверки орфографии, где вы можете контролировать процесс проверки. В этом диалоге есть три поля ввода, расположенные вертикально, с надписями, описывающими их назначение, слева. Предназначение этих полей ввода:
Здесь программа проверки орфографии показывает рассматриваемое слово. Это происходит, когда программа не находит этого слова в своём словаре -- файле, содержащим список правильно написанных слов, с которыми сверяется каждое проверяемое слово.
Если программа обнаруживает в своём словаре похожие слова, первое из них будет показано в этом поле. Вы можете принять предлагаемое слово, ввести свой вариант или выбрать другой вариант из списка ниже.
Программа проверки орфографии может разместить здесь список возможных замен для проверяемого слова. При щелчке на любом из предлагаемых слов оно появляется в поле ввода Заменить на:, расположенном выше.
Если у вас есть несколько словарей, то здесь вы можете выбрать, какой из них использовать.
В правой части диалога расположены 5 кнопок для управления проверкой правописания:
При нажатии этой кнопки Ошибочное слово: будет добавлено в словарь программы проверки орфографии, т.е. в дальнейшем это слово будет считаться написанным правильно.
При нажатии на эту кнопку в документе происходит замена рассматриваемого слова словом из поля ввода Заменить на:.
При нажатии на эту кнопку будет исправлено не только Ошибочное слово:, но и все экземпляры этого слова в документе.
При нажатии на эту кнопку проверка будет продолжена без изменения текущего слова.
При нажатии на эту кнопку программа проверки будет пропускать все экземпляры неизвестного слова в документе.
Игнорируемые слова не запоминаются программой, то есть при следующуй проверке правописания это будет отмечено вновь.
Ещё три кнопки расположены внизу диалога проверки правописания:
Вызывает справочную систему KDE и открывает этот документ.
Останавливает процесс проверки правописания с сохранением внесенных изменений
Отменяет внесенные изсенения и завершает процесс проверки правописания.
Запускает проверку правописания, но начинается она от позиции курсора, а не от начала документа.
Проверяет правописание в выделенном фрагменте.
Увеличивает отступ параграфа на один шаг. Размер шага зависит от параметров расстановки отступов.
Уменьшает отступ параграфа на один шаг. Размер шага зависит от параметров расстановки отступов.
Приводит в порядок отступы в выделенном фрагменте или в текущей строке. Это обеспечивает соответствие режима отступов установленному вами правилу.
Выравнивает текущую строку или строки в выделенном фрагменте согласно правилам отступа для документа.
Добавляет знак комментария, отделенный от начала текста в строке пробелом.
Удаляет знак комментария и пробел, которым этот знак отделялся от начала текста в строке.
Переводит выделенный текст или букву под курсором в верхний регистр.
Переводит выделенный текст или букву под курсором в нижний регистр.
Переводит заглавные буквы выделенного текста в верхний регистр.
Объединяет выделенные строки (или текущую строку с нижележащей) в одну, разделяя их пробелом. Пробелы в начале и конце строк удаляются.
Включает статический перенос строк в документе, то есть если длина строки превышает величину, указанную на вкладке настройки редактора в поле "Переносить после" меню ->, будет вставлен символ новой строки.
Это меню содержит пункты для использования сеансов и управления ими.
Создает новый сеанс. Все текущие файлы будут закрыты.
Открывает один из существующих сеансов, для выбора предоставляется диалог.
Это подменю позволяет быстро открыть существующий сеанс.
Сохраняет текущий сеанс. Если сеанс безымянный, будет предложено назвать его.
Сохраняет текущий сеанс под именем, которое будет предложено ввести.
Отображает диалог управления сеансами, где их можно переименовывать и удалять.
Меню позволяет настроить свойства главного окна, например, отображение панелей инструментов, а также предоставляет доступ к другим окнам настройки.
Это подменю представляет все доступные панели инструментов, каждый пункт включает/отключает соответствующую панель.
Включает/отключает полноэкранное отображение.
В будущих версиях Kate эта команда переместится в меню Окно.
Отображает стандартный диалог KDE Настройка комбинаций клавиш.
Отобразить стандартное окно KDE Настроить панели инструментов
Открыть диалоговое окно Настройки Kate
Открывает ещё одно окно Kate. Новое окно будет точно таким же, как предыдущее.
Разделяет фрейм (который может быть главной областью редактирования) на два равных фрейма, причем новый будет располагаться слева от текущего. Новый фрейм становится активным, и в него загружается тот же документ.
Разделяет фрейм (который может быть главной областью редактирования) на два равных фрейма, причем новый будет располагаться в нижней половине. Новый фрейм становится активным, и в него загружается тот же документ.
Закрывает текущий фрейм. Если область редактирования не была разделена на фреймы, этот пункт будет недоступен.
При закрытии фрейма документ, который был загружен в этот фрейм, не закрывается -- он все еще будет доступен из меню и списка файлов.
Если окно разделено, то передает фокус следующему фрейму.
Если окно разделено, то передает фокус предыдущему фрейму.
Включает/выключает боковые панели. Команда не действует на панели с органами управления, боковые паели остаются видимыми, и, конечно, продолжают действовать горячие клавиши.
Включает/выключает отображение списка файлов Kate.
Включает/выключает отображение служебной панели Проводник.
Включает/выключает отображение инструмента Поиск в файлах.
Включает/выключает отображение встроенного эмулятора терминала.
Терминал создается при первом включении этого пункта.
При отображении эмулятор терминала получает фокус ввода, так что вы сразу можете вводить команды. Если включен параметр Синхронизировать терминал с активным документом, который находится на странице Общая диалога настройки, то текущий каталог будет изменён на каталог текущего документа, если это локальный файл.
Если вы установили пакет kdeaddons, то вместе со стандартными пунктами меню у вас будут пункты меню .
Запускает Центр помощи KDE и открывает справочное руководство по Kate. (Этот документ вы и читаете).
Вид курсора меняется на стрелочку со знаком вопроса. Нажимая на различные элементы внутри Kate, вы увидите подсказку с объяснениями назначения и действия данного элемента (если она для него существует).
Открывается диалог отправки сообщения об ошибке. Он служит для того, чтобы вы могли отправить сведения об обнаруженной вами ошибке в программе или свое «пожелание», чтобы какая-либо пока что отсутствующая возможность была реализована в будущих версиях программы.
Будут выведены сведения о версии и авторах программы.
Будут выведены сведения о версии KDE.
Kate предоставляет несколько средств настройки. Наиболее важные из них:
Главный инструмент настройки приложения Kate, редактора и дополнительных модулей.
Предоставляет доступ к часто изменяемым параметрам. Из этого меню можно открыть диалоги настройки.
Позволяет разделить текущею окно, включить/отключить отображение панелей значков и номеров строк для редактируемого документа.
Поведение встроенного терминала определяется его настройкой в Центре управления KDE, и может быть изменено через контекстное меню или меню .
В диалоге настройки слева отображаются разделы, организованные в древовидную структуру, а справа - страница настройки, соответствующая выбранному разделу.
Параметры настройки делятся на две основные группы
Эта группа содержит страницы общей настройки программы Kate
Здесь можно настроить несколько основных параметров Kate
Если флажок установлен, в заголовке окна Kate будет отображать не только имя файла, но и полный путь к нему.
Если флажок установлен, встроенный терминал будет менять свой текущий каталог при каждой смене активного документа. Если сброшен, вам придётся перемещаться по дереву каталогов вручную.
Если флажок установлен, Kate уведомит вас об изменении файла другой программой, как только главное окно получит фокус ввода. Вы можете производить обновления, сохранять или отменять изменения сразу для группы файлов.
Если флажок сброшен, то, при получении фокуса ввода файлом, изменённым другой программой, Kate задаст вопрос о необходимых действиях.
Если флажок установлен, Kate сохранит мета-данные (закладки, настройку сеанса), даже когда вы закроете документ. Эти данные могут понадобиться, если документ вновь будет открыт в прежнем виде.
Устанавливает время, в течение которого будут храниться мета-данные файла. Долговременное хранение приводит к переполнению базы данных.
Раздел содержит параметры, связанные с использованием сеансов.
Если флажок установлен, Kate будет восстанавливать настройку окна в каждом новом сеансе.
Определяет поведение Kate при запуске. Эту настройку можно изменить параметрами командной строки.
Если установить этот флажок, Kate при каждом запуске будет начинать новый безымянный сеанс.
При запуске Kate может открывать прошлый сеанс. Удобно, если вы не любите менять настройки.
Kate может предлагать на выбор несколько недавних сеансов. Эта настройка действует по умолчанию. Удобно для любителей частой смены настроек.
Изменения данных сеанса (открывавшихся файлов и, если было включено, настройки окна) не сохранятся. Естественно, будет задан вопрос о сохранении изменённых файлов. Установите этот флажок - и при открытии нового сеанса ненужные файлы перестанут открываться.
Kate сохранит данные любого сеанса, если он не безымянный. Если флажок установлен, ваш сеанс будет восстановлен в том самом виде, в котором вы его закрыли. Это поведение по умолчанию.
Вопрос о сохранении сеанса будет задан при закрытии любого именованного сеанса.
Выберите нужные вам кнопки для диалога выбора файла путём перемещения их в окно Выбранные действия. Расположение кнопок установите стрелками рядом с окном.
Диалог выбора файла может автоматически переходить к директории, содержащей текущий документ, при наступлении следующих событий:
При активизации документа
При показе панели выбора файлов
Установите размер журнала. Сохраняются только фактические адреса, копии удаляются.
Установите желаемое количество сохраняемых фильтров. Сохраняются только сами фильтры, копии удаляются.
Определите, будет ли сохраняться расположение и фильтр для каждого сеанса.
Позволяет вам включить визуализацию истории перехода по документам (через оттенки фона соответствующих пунктов списка), а также настроить используемые для этого цвета. Для подробностей, обратитесь к разделу Список документов.
Порядок сортировки документов в списке. Эти же команды можно найти в контекстном меню списка документов.
На этой странице представлены установленные модули Kate. Для каждого отображается название и краткое описание. Для подключения нужного модуля нужно установить соответствующий флажок.
Если модуль настраиваемый, параметры его настройки появятся в дочернем окне этой страницы.
Меню содержит подменю . Эти инструменты вызывают внешние приложения для обработки данных соответствующего типа (интернет-адреса, директории, текста или выделения). На этой странице можно настраивать меню, редактировать, добавлять и удалять инструменты.
Внешний инструмент - это фактически команда оболочки с подстановкой данных текущего документа.
Свойства внешних инструментов
Название пункта меню "Внешние инструменты".
Сценарий, который будет выполнен при выборе пункта меню. Доступны следующие подстановки:
Полный адрес текущего документа или, если новый документ ещё не был сохранён, пустая строка.
Список полных адресов всех открытых файлов (кроме несохранённых) через пробел.
Папка текущего документа или пустая строка, если последний ещё не сохранён.
Имя текущего файла без пути или пустая строка, если файл ещё не сохранён.
Номер строки текущего документа, в которую будет вставлен курсор.
Позиция курсора в текущей строке.
Выделенный текст или пустая строка, если такового нет.
Весь текст документа. Учтите, его длина может превысить максимально допустимую командной строки. Пользуйтесь осторожно.
Главный исполняемый файл - сценарий. Если его нет в папке, указанной в переменной окружения PATH
, следует указать полный путь к нему.
Разделённый запятыми список mime-типов, для которых команда должна быть доступна. В настоящее время не используется.
Дополнительно можно применить сохранение текущего или всех документов перед выполнением сценария. Удобно, если сценарий считывает файл с диска.
Вы сможете вызвать этот внешний инструмент из Командной строки редактора введя exttool-команда_правки
(т.е. название команды дополняет «exttool-»).
Группа содержит параметры, относящиеся к компонентам редактора. Большинство из них предустановлены, но могут быть изменены установками параметров Установки, специфичные для типов файлов, Переменные документа. Параметры для текущего документа можно также изменить динамически с помощью команд правки (F7).
При установленном флажке строки будут переноситься в пределах окна.
Определяет отображение маркёров динамического переноса строк.
Устанавливает отступ динамически перенесённой строки от уровня предыдущей. Такой код удобнее читать.
Дополнительно можно установить предел отступов динамически перенесённых строк в процентах. Например, если установить этот параметр в 50%, экрана, то за этим пределом отступ применяться уже не будет.
Если флажок установлен, то в текущем документе будут показаны маркёры сворачивания блоков кода (если сворачивание доступно).
Если флажок установлен, то слева от текстового поля будут отображаться значки, например значки закладок.
Если флажок установлен, то слева от текста будут отображаться номера строк.
Если флажок установлен, то на полосе прокрутки текущего документа будут отображаться отметки, например закладки.
Закладки будут упорядочены по номерам строк, на которые они установлены.
Новая закладка будет добавлена в конец списка, независимо от её положения в документе.
Если флажок установлен, в редакторе будут отображаться вертикальные линии для выравнивания отступов.
В этой части диалога можно настроить цвета и шрифты для любой выбранной вами цветовой схемы. Можно создать новую схему или удалить существующую. Каждая схема содержит пакет настроек шрифтов и цветов для обычного и выделенного текстов.
Kate использует предустановленные параметры. Для включения иной схемы необходимо выбрать её в выпадающем списке.
Это основной цвет текстового поля.
Фон выделенного текста. По умолчанию действует глобальная настройка KDE.
Цвет текущей строки. Цветовое выделение поможет следить за фокусом ввода.
В этом списке можно выбрать цвета для различных типов закладок. Этот цвет подмешивается к фону текущей строки, поэтому может не вполне соответствовать установленному. В эти же цвета окрашиваются отметки на полосе прокрутки.
Определяет окраску всех панелей, находящихся слева от текстового поля (если они отображаются).
Этим цветом окрашиваются номера строк (если они отображаются).
Этим цветом окрашиваются соответствующие друг другу фигурные скобки.
Этим цветом окрашиваются маркёры слева от динамически перенесённых строк (если они выровнены вертикально) и маркёры статического переноса строк.
Этим цветом окрашиваются пустые пространства текста, если их отображение включено.
Выбор шрифта для схемы. Доступен любой шрифт из вашей системы, можно настроить размер по умолчанию. Образец текста приводится в нижней части диалога, поэтому результат изменения виден сразу.
Стили обычного текста наследуются из стилей выделенного, поэтому редактор может более вразумительно отображать текст. Например, текст комментария использует стили почти всех текстовых форматов, которые kate в состоянии обрабатывать.
Во время настройки стиля есть возможность предварительно просмотреть её результаты.
Для каждого стиля можно настроить обычные атрибуты, цвета фона и самого текста. Перенастроить фон можно через контекстное меню.
Здесь можно настроить стили текста для определённого правила подсветки. Имеются предустановленные настройки, но в выпадающем списке Подсветка можно установить другие параметры.
Во время настройки стиля есть возможность предварительно просмотреть её результаты.
Для каждого стиля можно настроить обычные атрибуты, цвета фона и самого текста. Перенастроить фон можно через контекстное меню. Есть возможность сравнить текущий стиль с предустановленным и устранить возможное несоответствие.
Можно заметить, что многие стили подсветки содержат другие стили, представленные группами в списке. Например, большинство стилей используют стиль Alert, а многие форматы языков программирования используют стиль Doxygen. Цвета редактирования для этих групп применяются только во время работы с соответствующими форматами.
Если флажок установлен, то нажатие клавиши Home вызовет перемещение курсора в начало строки.
Если флажок установлен, то курсор ввода будет перемещаться клавишами Влево и Вправо на предыдущую/следующую строку в начало/конец строки, так же как в большинстве других редакторов.
Если флажок сброшен, то курсор невозможно переместить левее начала строки, но можно переместить правее конца строки, что удобно для программистов. Когда флажок установлен, перемещение курсора стрелочными клавишами за конец строки (вправо) вызовет его смещение на начало следующей строки. Перемещение курсора левее начала строки вызовет его переход на конец предыдущей строки. Если флажок сброшен, то передвижение курсора вправо за конец строки приведёт только к движению его в пределах данной строки, а передвижение левее начала строки вообще невозможно.
Этот параметр определяет реакцию курсора на нажатие клавиш Page Up или Page Down. Если флажок сброшен, то первое нажатие клавиши вызовет появление новой страницы. Если флажок установлен, то первое нажатие клавиши вызовет сначала перемещение курсора в начало или конец видимого текста, и только потом откроется новая страница.
Количество строк, остающихся по возможности видимыми над и под курсором.
Выделенный фрагмент будет перезаписан вводимым текстом, выделение будет снято при перемещении курсора.
При перемещении курсора и вводе текста фрагмент остаётся выделенным.
Если флажок установлен, то при нажатии клавиши TAB будут введены пробелы в количестве, определённом параметром tab-width
.
Если установить этот флажок, Kate будет отображать символы табуляции маленькими точками.
Это может вызвать также отображение в виде точек завершающих пробелов. В будущих версиях Kate будет исправлено.
Этим параметром определяется количество пробелов, заменяющих символ табуляции при включённом параметре Заменять символы табуляции пробелами.
Перенос строк - это свойство редактора автоматически начинать новую строку и переносить курсор на её начало. Kate автоматически начинает новую строку при достижении величины, определённой параметром Переносить после:.
Включает/выключает статичный перенос строк.
Если этот параметр включён, то на границе переноса строк будет отображаться вертикальная линия, как определено в меню -> на вкладке Правка. Заметьте, что этот маркёр может отображаться, только если вы используете моноширинный шрифт.
Здесь устанавливается количество символов, после которого начинается новая строка при включённом параметре Перенос строк.
Kate может автоматически удалять лишние завершающие пробелы.
Когда пользователь вводит левую скобку любого вида, Kate автоматически подставляет аналогичную скобку справа от курсора.
Здесь устанавливается предельное число операций, которые Kate будет сохранять в памяти. Чем больше это число, тем больше памяти будет занято откатами. Указав число 10, пользователь получит возможность кнопкой "Отменить действие" вернуться назад на десять своих последних шагов и выбрать из них наиболее удачный.
Здесь определяется, где Kate будет искать текст для поиска (этот текст будет автоматически помещён в диалог поиска текста):
Не искать нигде:Поиск текста не производится.
Только в выделении: Используется текущее выделение (если возможно).
В выделении, затем в текущем слове: Используется, если возможно, текущее выделение, в противном случае текущее слово.
Только в текущем слове: Используется, если возможно, только то слово, в котором находится курсор.
Текущее слово, затем выделение: Используется, если возможно, текущее слово, в противном случае текущее выделение.
Выбор используемого по умолчанию режима отступов. Настоятельно рекомендуется пользоваться значением Нет
или Обычный
, а для формирования других режимов использовать установки, специфичные для типов файлов, таких как файлов кода C/C++ или XML.
При наборе комментариев в стиле doxygen к ним автоматически добавляются "*". Этот параметр применяется только там, где возможно.
Символы табуляции заменяются пробелами в количестве, указанном тут же, в поле Количество пробелов:.
Применяется смешанный режим отступов табуляторами и пробелами.
Устанавливает количество пробелов, вводимых для замены символов табуляции, если этот флажок установлен.
Если этот флажок установлен, то редактор не будет убирать отступы в последующих строках выделения, когда в предыдущих отступы снимаются. Может быть полезно, если вам часто приходится снимать отступы с блоков кода.
Отступы длиной более, чем заданное число пробелов, не будут сокращаться.
Для отступов используется клавиша tab.
Для отступов используется клавиша backspace.
Клавишей Tab вставляются символы отступа.
Клавишей Tab вставляются символы табуляции.
Клавишей Tab можно сделать отступ в текущей строке.
Устанавливает кодировку по умолчанию для сохраняемых файлов.
Выбор необходимого формата окончания строк для текущего файла. Выбрать можно между форматами UNIX®, DOS/Windows® или Macintosh.
Выбор этого параметра поредоставит редактору самостоятельно определять формат конца строки. Первое найденное окончание строки будет применено затем ко всему файлу.
Редактор будет загружать в память указанное количество блоков текста (каждый примерно из 2048 строк). Если размер файла больше указанного предела, то остальные блоки будут сброшены на диск, а затем в случае надобности загружены в память.
Подобный сброс может вызывать задержки во время навигации по файлу. Большее количество блоков ускоряет работу за счёт увеличения количества используемой памяти.
Лучше выбрать максимально доступное количество блоков. Ограничения разумны только в случае нехватки памяти.
Лишние пробелы в конце строки при загрузке и сохранении будут автоматически удаляться.
Редактор просмотрит заданное количество уровней иерархии папок в поисках файла настройки Kate и загрузит из него строку настройки.
Создание резервной копии при сохранении означает, что при записи на диск изменённого файла будет записана также резервная копия с именем <prefix><filename><suffix>', без внесённых изменений. Суффикс по умолчанию ~, а префикс по умолчанию пуст.
Установите этот флажок, если хотите сохранять резервные копии локальных файлов.
Установите этот флажок, если хотите сохранять резервные копии удалённых файлов.
Введите префикс для вставки перед именами сохраняемых резервных файлов.
Введите суффикс для вставки после имён сохраняемых резервных файлов.
Эта группа параметров используется для изменения стилей подсветки для каждого типа языков программирования. Любые изменения, сделанные в других вкладках этого диалога, влияют только на данный стиль подсветки.
Выбор языка для настройки.
Просмотр сведений о правилах подсветки синтаксиса выбранного языка: имя автора и лицензия.
Список расширений файлов, используемых для определения необходимого режима подсветки.
Нажатие кнопки с символом мастера вызовет диалог выбора доступных mime-типов.
Текст в поле Расширения файлов при изменении mime-типа будет изменяться соответственно.
Устанавливает приоритет правила подсветки.
Нажатием этой кнопки можно загрузить новое или обновить существующее правило подсветки синтаксиса с веб-сайта Kate.
Здесь вы можете указать параметры редактора для разных типов файлов. При открытии документа, его тип определяется по расширению или mime-типу. Если подходят несколько типов, будет использован тип с высшим приоритетом.
Тип файла с наивысшим приоритетом указывается в выпадающем списке первым. Если есть другие подходящие типы, они тоже присутствуют в списке.
Эта кнопка используется для создания нового типа файлов. При нажатии все поля под ней становятся редактируемыми, и в них вводятся те свойства, которыми должен обладать ваш новый тип файлов.
Для удаления существующего типа файлов, выберите его в выпадающем списке и нажмите кнопку "Удалить".
Тип файла с наивысшим приоритетом указывается в выпадающем списке первым. Если есть другие подходящие типы, они тоже присутствуют в списке.
Название типа текущего файла должно соответствовать тексту соответствующего пункта меню ->.
Название раздела используется для организации типов файлов в меню ->.
Это поле позволяет настроить обработку выбранных типов файлов с использованием переменных Kate. Можно настроить почти любой параметр (подсветку, отступы, кодировку и т.п.).
Список всех доступных переменных содержится в руководстве.
Маски позволяют выбирать файлы по их расширению. Типичная маска состоит из звёздочки и расширения файла, например *.txt; *.text
. Строка состоит из списка разделённых точкой с запятой масок.
Запускает мастер выбора mime-типов.
Устанавливает приоритет типа файлов. Если при открытии файла к нему подходят несколько типов, будет использован тип с наивысшим приоритетом.
Здесь можно изменить настройку горячих клавиш. Если хотите изменить настройки по умолчанию - выберите действие и нажмите кнопку По выбору.
Строка поиска позволяет просмотреть сочетания клавиш, определённые для различных действий.
Переменные документа - аналог "modeline" в emacs и vi. Формат:kate: ИМЯ_ПЕРЕМЕННОЙ ЗНАЧЕНИЕ; [ ИМЯ_ПЕРЕМЕННОЙ ЗНАЧЕНИЕ; ... ]
, такие строки, конечно, могут быть расположены в комментариях (если такое понятие присутствует в формате файла). Имена переменных должны быть неразрывны. Всё, что расположено до следующих точки с запятой, есть значение. Точка с запятой необходимы.
Пример строки с переменными, включающими расстановку отступов для файлов C++, java или javascript:
// kate: space-indent on; indent-width 4; mixedindent off; indent-mode cstyle;
Поиск таких строк производится только в первых и последних 10 строках файла.
Кроме множества стандартных переменных katepart, таковые могут предоставляться модулями, в этом случае они должны быть описаны в документации к модулю.
Чтение конфигурации происходит в следующем порядке:
Глобальная настройка.
Данные восстановленного сеанса.
Настройка "Типы файлов".
Переменные документа.
Изменённые во время работы параметры.
Переменные, не описанные ниже, хранятся в документе и могут использоваться другими объектами, такими как модули, для собственных целей. Например, переменная режима отступов использует для своей настройки переменные документа.
Приведённые ниже переменные доступны в версии Kate 2.4. В следующих версиях, возможно, будут добавлены другие. Возможны 3 типа значений переменных:
BOOL - on|off|true|false|1|0
INTEGER - любое целое число
STRING - всё остальное
Доступные переменные
auto-brackets [BOOL]
Включает/выключает автоскобки.
auto-center-lines [INT]
Устанавливает количество строк автоцентровки.
auto-insert-doxygen [BOOL]
Включает/выключает вставку лидирующей звёздочки в комментариях doxygen. Работает только с расстановщиком отступов cstyle.
background-color [STRING]
Устанавливает фоновый цвет документа, например "#ff0000".
backspace-indents [BOOL]
Включает/выключает ввод отступов клавишей backspace.
block-selection [BOOL]
Включает/выключает поблочное выделение.
bracket-highlight-color [STRING]
Устанавливает цвет подсветки скобок, например "#ff0000"
current-line-color [STRING]
Устанавливает цвет активной строки, например "#ff0000".
dynamic-word-wrap [BOOL]
Включает/выключает динамический перенос строк.
eol | end-of-line [STRING]
Устанавливает режим конца строк. Возможные значения - «unix», «mac» и «dos»
encoding [STRING]
Устанавливает кодировку документа. Называть кодировку нужно точно, например «utf-8».
font-size [INT]
Устанавливает размер шрифта.
font [STRING]
Устанавливает гарнитуру шрифта. Называть гарнитуру нужно точно, например «courier».
icon-bar-color [STRING]
Устанавливает цвет панели значков, например #ff0000
.
icon-border [BOOL]
Включает/выключает отображение панели значков.
folding-markers [BOOL]
Включает/выключает отображение маркёров сворачивания блоков кода.
indent-mode [STRING]
Устанавливает режим расстановки переносов. Возможные значения - «none», «normal», «cstyle», «csands», «python», «xml». Подробности см. в разделе «Использование автоотступа».
indent-width [INT]
Устанавливает ширину отступов.
keep-extra-spaces [BOOL]
Включает/отключает учёт лишних пробелов при расчёте ширины отступа.
keep-indent-profile [BOOL]
Если имеет значение true, то отступ не снимается с блока до тех пор, пока хоть одна строка сохраняет отступ.
line-numbers [BOOL]
Включает/выключает отображение номеров строк.
mixed-indent [BOOL]
Включает/выключает смешанные отступы в стиле Emacs.
overwrite-mode [BOOL]
Включает/выключает режим замены.
persistent-selection [BOOL]
Включает/выключает снятие выделения текста при переводе курсора.
remove-trailing-space [BOOL]
Включает/выключает динамическое удаление завершающих пробелов.
replace-tabs-save [BOOL]
Включает/выключает преобразование символов табуляции в пробелы при сохранении.
replace-tabs [BOOL]
Включает/выключает динамическое преобразование символов табуляции в пробелы.
replace-trailing-space-save [BOOL]
Включает/выключает удаление завершающих пробелов при сохранении.
scheme [STRING]
Устанавливает цветовую схему. Строка должна содержать название одной из существующих в вашей системе цветовых схем.
selection-color [STRING]
Устанавливает цвет выделенного текста, например "#ff0000".
show-tabs [BOOL]
Включает/выключает отображение символов табуляции.
smart-home [BOOL]
Включает/выключает умную реакцию на Home.
space-indent [BOOL]
Включает/выключает заполнение отступов пробелами.
tab-indents [BOOL]
Включает/выключает выполнение отступов символами табуляции.
tab-width [INT]
Устанавливает ширину табуляции.
undo-steps [INT]
Устанавливает максимальное количество откатов.
word-wrap-column [INT]
Устанавливает максимальную длину строк в случае, если включён автоматический перенос.
word-wrap-marker-color [STRING]
Устанавливает цвет маркёров переноса, например "#ff0000".
word-wrap [BOOL]
Включает/выключает жёсткий перенос слов.
wrap-cursor [BOOL]
Включает/выключает перенос курсора.
Разработка (c) 2000-2005 Команда разработчиков Kate.
Команда Kate:
(cullmann AT kde.org)
Координатор проекта и ключевой разработчик
(anders AT alweb.dk)
Ключевой разработчик, подсветка синтаксиса для языка Perl, документация
(kde AT jowenn.at)
Ключевой разработчик, подсветка синтаксиса
(michael.bartl1 AT chello.at)
Ключевой разработчик
(phlip_cpp AT my-deja.com)
Компилятор проекта
(bastian AT kde.org)
Отличная система буферизации
(newellm AT proaxis.com)
Тестирование...
(gholam AT xtra.co.nz)
Ключевой разработчик
(digisnap AT cs.tu-berlin.de)
Автор KWrite
(koch AT kde.org)
Перенос KWrite в KParts
(gebauer AT bigfoot.com)
Точно не определено
(hausmann AT kde.org)
Точно не определено
(glenebob AT nwlink.com)
Журнал действий KWrite, интеграция KSpell
(sdmanson AT alltel.net)
Подсветка синтаксиса XML в KWrite
(jfirebaugh AT kde.org)
Заплатки и прочее
(dhdev AT gmx.de)
Разработчик, Мастер подсветки синтаксиса
Много других людей внесли свой вклад:
(merlim AT libero.it)
Подсветка для Spec-файлов RPM, Diff и прочее
(rocky AT purdue.edu)
Подсветка для VHDL
Подсветка для SQL
Подсветка для Ferite
Подсветка для ILERPG
Подсветка для Java и прочее
Подсветка для LaTeX
Подсветка файлов сборки, а также для Python
Подсветка для Python
Исправление ошибок, модуль XML
Документация (c) 2000-2001 Сэт Ротберг (Seth Rothberg) (sethmr AT bellatlantic.org)
Документация (c) 2002-2005 Андерс Лунд (Anders Lund) (anders AT alweb.dk)
Перевод на русский: Андрей Балагута (uj2 AT mail.ru)
Редакция и обновление перевода: Николай Шафоростов (shafff AT ukr.net)
Обновление перевода: Алексей Опарин (opaleksej AT yandex.ru)
Этот документ распространяется на условиях GNU Free Documentation License.
Программа распространяется на условиях лицензии GNU General Public License.
Содержание
Синтаксическая подсветка позволяет отображать текст в редакторе разными цветами и стилями, таким образом отделяя одни синтаксические понятия от других. Например, в исходном тексте программы можно ключевые слова выделить полужирным шрифтом, а типы данных и комментарии отображать разными цветами, выделяя их из основного текста. Это улучшает читаемость документа и повышает продуктивность работы автора.
Функция Perl, отображенная с использованием синтаксической подсветки.
Та же самая функция, но без подсветки.
Какой из примеров легче читать?
Kate имеет гибкую, легко настраиваемую систему синтаксической подсветки, в стандартную поставку редактора входят правила подсветки синтаксиса для большого числа языков программирования, разметки и других текстовых форматов. Все определения хранятся в простых текстовых файлах в формате XML, поэтому вы можете свободно создавать собственные правила.
При открытии файла Kate автоматически подбирает правила подсветки, основываясь на MIME-типе (который, в свою очередь, определяется расширением файла) или содержании файла, если расширения нет. Если Kate неправильно определил тип файла, выберите нужный режим подсветки вручную в меню ->.
Вы можете настроить стили и цвета доступных синтаксических определений на вкладке Схемыдиалога Настройка Kate , а соответствующие им MIME-типы - на вкладке Подсветка .
Синтаксическая подсветка улучшает читаемость корректно оформленного текста, но не факт, что текст некорректен, если он неправильно отображается системой подсветки. Синтаксическая разметка текста - достаточно сложный процесс, сложность которого зависит от формата файла, поэтому авторы синтаксических определений считают удачей, если 98% текста отображается корректно, но не стоит забывать об оставшихся 2%.
На сайте Kate вы можете загрузить обновлённые или дополнительные правила синтаксической подсветки. Для этого нужно щёлкнуть на кнопке на вкладке Подсветка диалога Настройка Kate.
В этом разделе подробно рассматривается механизм синтаксической подсветки Kate. Прочитав его, вы сможете изменять существующие или создавать свои синтаксические определения.
Когда вы открываете файл, первое, что делает Kate - определяет, какое синтаксическое определение использовать для него. При чтении и наборе система подсветки анализирует текст в редакторе, используя правила, указанные в синтаксическом определении, и помечает границы контекстов и стилей.
При вводе система динамически анализирует текст, поэтому, если вы удалите символ, который был помечен как начало или конец контекста, стиль окружающего текста автоматически изменится.
Синтаксические определения Kate хранятся в XML-файлах. Они содержат:
Правила определения роли текста, организованного в контекстные блоки
Списки ключевых слов
Определения стилей
Система подсветки анализирует текст последовательно от начала до конца. Указатель анализатора перемещается от символа к символу, проверяя текст на соответствие правилам и помечая границы контекстов. Правила применяются к текущей строке в порядке их объявления, и при соответствии к ней применяется контекст, указанный в правиле. После этого указатель смещается на конец области соответствия и начинается новый цикл проверки правил, принадлежащих установленному контексту.
Правила - это сердце системы подсветки. Правило может быть строкой, символом или регулярным выражением, с которым сравнивается текст документа. Оно содержит информацию о стиле, который будет применен к тексту, если последний соответствует правилу. Оно может переключить текущий контекст системы на явно указанный или предыдущий контекст.
Правила организованы в контекстные группы. Контекстная группа используется для определения главных понятий в формате, например, строка, заключенная в двойные кавычки, или блок комментария в исходном тексте программы. Такая организация правил позволяет предотвратить проверку правил, неприменимых к текущему контексту (правил из других контекстов). Эта структура делает систему подсветки более гибкой, позволяя определять одинаковые правила в разных контекстах, что делает возможным одинаковые последовательности символов отображать разными стилями в зависимости от контекста, в котором они находятся.
Контексты могут образовываться динамически, чтобы сделать возможным использование правил, справедливых для данного момента.
В некоторых языках программирования целые и вещественные числа трактуются компилятором по-разному (компилятор - это программа, которая преобразует исходный текст программы в двоичный исполняемый файл). Синтаксис языка может определять символы, имеющие специальное значение, если они находятся в строке, заключенной в кавычки. В этих случаях есть смысл выделять их в тексте для более удобного чтения. Иногда бывает полезно выделять символы, не имеющие специального значения - это тоже под силу системе синтаксической подсветки Kate.
Синтаксическое определение может содержать столько стилей, сколько нужно для данного формата.
Во многих форматах существуют списки слов, имеющих специальное значение. Например, в языках программирования такими словами будут являться управляющие операторы, названия типов данных и встроенные функции. Это концептуальные слова, поскольку они определяют саму суть синтаксиса. Система синтаксической подсветки Kate использует списки подобных слов, чтобы подчеркнуть концептуальные элементы формата.
Если вы откроете файл исходного кода на C++, на Java™ или документ HTML, то увидите, что разные форматы отображаются в одних и тех же цветах. Дело в том, что Kate содержит предустановленный набор стандартных стилей. Синтаксические определения по возможности используют этот набор.
Это позволяет подобным образом отображать похожие концепции в различных форматах. Например, комментарии есть почти во всех языках программирования, разметки и скриптах.
Каждый стиль в синтаксическом определении основывается на одном из стандартных стилей. Поэтому, если вы часто используете какой-то формат с большим количеством стилей, следует проверить его конфигурацию на предмет их совпадения. Приведём небольшой пример. В Kate определен всего один стандартный стиль для отображения строковых констант, но в языке программирования Perl существует два вида строк. Согласитесь, было бы гораздо лучше отображать их по разному - вы заходите в диалоговое окно настройки Kate и изменяете соответствующие стили. Все доступные стандартные стили будут рассмотрены позже.
В этом разделе вы познакомитесь с XML-форматом определения синтаксической подсветки. Вначале, на небольшом примере, будут кратко объяснены главные компоненты и их значение, затем мы более подробно остановимся на правилах подсветки.
Формальное определение (DTD) находится в файле language.dtd
, в каталоге $
. KDEDIR
/share/apps/katepart/syntax
Основные разделы файла определения синтаксической подсветки Kate
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">
language
. Доступные атрибуты:Необходимые атрибуты:
name
определяет название языка. Впоследствии оно появляется во всех меню и диалогах.
section
указывает категорию.
extensions
определяет расширения файлов, вроде "*.cpp;*.h"
Дополнительные атрибуты:
mimetype
связывает файл с определенным типом MIME.
version
указывает текущую версию файла определений.
kateversion
указывает новейшую из поддерживаемых версий Kate.
casesensitive
определяет чувствительность ключевых слов к регистру.
priority
определяет приоритет в случае использования разных правил подсветки. Действует правило с высшим приоритетом.
author
содержит имя и email-адрес автора.
license
содержит лицензию, обычно LGPL, Artistic, GPL и т.п.
hidden
определяет, будет ли отображаться название в меню Kate.
Итак, следующая строка может быть примерно такой:
<language name="C++" version="1.00" kateversion="2.4" section="Sources" extensions="*.cpp;*.h" />
highlighting
, состоящий из необязательного list
и обязательных - contexts
и itemDatas
.Элемент list
содержит список ключевых слов. В нашем случае это class и const.Списков можете добавить, сколько хотите.
Элемент contexts
содержит все контексты. По умолчанию, подсветка начинается с первого контекста. В контексте Normal Text есть два правила, одно из которых проверяет наличие в тексте слов, соответствующих списку ключевых слов, другое определяет наличие кавычек и переключает контекст к строковому типу. Подробнее правила описаны в следующей главе.
Элемент itemDatas
содержит сведения о цветах и стилях, применяющихся в контекстах и правилах. В нашем примере itemData
использует контексты Normal Text, String и Keyword.
<highlighting> <list name="somename"> <item> class </item> <item> const </item> </list> <contexts> <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" > <keyword attribute="Keyword" context="#stay" String="somename" /> <DetectChar attribute="String" context="string" char=""" /> </context> <context attribute="String" lineEndContext="#stay" name="string" > <DetectChar attribute="String" context="#pop" char=""" /> </context> </contexts> <itemDatas> <itemData name="Normal Text" defStyleNum="dsNormal" /> <itemData name="Keyword" defStyleNum="dsKeyword" /> <itemData name="String" defStyleNum="dsString" /> </itemDatas> </highlighting>
general
. Здесь могут содержаться сведения о ключевых словах, сворачивании блоков кода, комментариях и отступах.Раздел comment
определяет, какой строкой вводится однострочный комментарий. Можно пользоваться также многострочными комментариями, используя multiLine с дополнительным атрибутом end. Это используется тогда, когда пользователь нажимает комбинацию клавиш, назначенную для действия закомментировать/раскомментировать.
Секция keywords
определяет чувствительность ключевых слов к регистру. Остальные атрибуты рассмотрим позднее.
<general> <comments> <comment name="singleLine" start="#"/> </comments> <keywords casesensitive="1"/> </general> </language>
В этой части указаны все возможные атрибуты для контекстов, itemDatas, ключевых слов, комментариев, сворачивания кодов и отступов.
context
относится к группе contexts
. Контекстом определяются некоторые особые правила (например, что происходит при достижении подсвеченной структурой конца строки). Доступные атрибуты:name
- название контекста. Правила используют это название для переключения на указанный контекст.
lineEndContext
определяет, на какой контекст подсвеченная структура переключается при достижении конца строки. Это может быть название другого контекста, #stay
, если контекст не меняется (т.е. не делать ничего) или #pop
для выхода из контекста. Например, набор #pop#pop#pop
приведет к троекратному выходу из контекста.
lineBeginContext
определяет контекст при достижении начала строки. По умолчанию: #stay.
fallthrough
определяет поведение в случае переключения подсвеченной структуры на контекст, указанный в fallthroughContext, если не найдено соответствующее правило. По умолчанию: false.
fallthroughContext
указывает следующий контекст, если не найдено соответствующее правило.
Если dynamic
имеет значение true, то контекст запоминает строки/метки-заполнители, сохранённые в динамических правилах. Это необходимо, например, для текущих документов. По умолчанию: false.
itemData
принадлежит группе itemDatas
. Он определяет стиль и цвет шрифта, их можно устанавливать самому в тех случаях, когда это необходимо. И все же, рекомендуется придерживаться стандартных стилей, чтобы помочь пользователю свободно ориентироваться в любом языке . Название атрибута (name) и defStyleNum обязательны, остальные нет. Доступные атрибуты:name
даёт название itemData. Контексты и правила будут использовать это название при обращении к itemData в своих атрибутах attribute.
defStyleNum
определяет стиль, используемый по умолчанию. Доступные стандартные стили будут детально описаны ниже.
color
определяет цвет. Правильные форматы '#rrggbb' или '#rgb'.
selColor
определяет цвет выделенного текста.
Если italic
имеет значение true, шрифт будет курсивным.
Если bold
имеет значение true, шрифт будет полужирным.
Если underline
имеет значение true, текст будет подчёркнут.
Если strikeout
имеет значение true, текст будет зачёркнут.
keywords
в группе general
определяет свойства ключевых слов. Доступные атрибуты:casesensitive
может быть true или false. Если true, все ключевые слова будут проверяться на соответствие с учетом регистра
weakDeliminator
- это группа знаков, которые не могут разделять слова. Например, точка '.'
- разделитель слов. Если ключевое слово в list
содержит точку, оно будет использовано по назначению только, если точка будет определена как "нетвердый разделитель" (weak delimiter).
additionalDeliminator
определяют дополнительные разделители.
wordWrapDeliminator
определяют символы, после которых может происходить перевод строки.
По умолчанию разделителями слов и строк являются символы .():!+,-<=>%&*/;?[]^{|}~\
, пробел (' '
) и табуляция ('\t'
).
comment
в группе comments
определяет свойства комментариев, которые используются в меню-> и ->. Доступные атрибуты:name
может быть singleLine или multiLine. Если выбрать multiLine, то потребуются атрибуты end и region.
start
указывает строку начала комментария. В C++ это может быть "/*".
end
указывает строку окончания комментария. В C++ это может быть "*/".
region
должно быть названием сворачиваемого многострочного комментария. Допустим, если в ваших правилах указано beginRegion="Comment" ... endRegion="Comment", вы должны использовать region="Comment". В этом случае раскомментирование будет действовать, даже если не будет выделен весь текст многострочного комментария. Достаточно будет просто поместить курсор в его пределы.
folding
в группе general
определяет свойства сворачивания кода. Доступные атрибуты:Если indentationsensitive
имеет значение true, то маркёры сворачивания кода будут располагаться с учетом отступов, как в языке сценариев Python. Чаще всего в этом нет необходимости, поэтому по умолчанию этот параметр определен как false.
indentation
в группе general
определяет формат отступов, однако мы настоятельно рекомендуем не менять этот элемент, так как отступы обычно определяются типом файла или добавлением режимной строки в текстовый файл. Если вы всё-таки укажете способ отступа, он может оказаться навязанным пользователю, которому совсем не нужен. Доступные атрибуты:mode
- название формата отступов. Доступные форматы: normal, cstyle, csands, xml, python и varindent.
Стандартные стили уже были кратко описаны: Стандартные стили предопределяют настройки цветов и шрифтов.
dsNormal
, для нормального текста.
dsKeyword
, для ключевых слов.
dsDataType
, для типов данных.
dsDecVal
, для десятичных значений.
dsBaseN
, для значений с основанием, отличным от10.
dsFloat
, для значений с плавающей точкой.
dsChar
, для символов.
dsString
, для строк.
dsComment
, для комментариев.
dsOthers
, для всего остального.
dsAlert
, для вывода предупреждений.
dsFunction
, для вызова функций.
dsRegionMarker
, для маркёров участков.
dsError
, для подсветки ошибок и неверного синтаксиса.
В этом разделе описываются синтаксические правила.
При анализе строки каждое правило может «запросить» на проверку любое количество символов (даже ноль). Если правило подходит, к соответствующим символам применяется стиль или атрибут, определённый в правиле. Применяемое правило также может запросить переключение текущего контекста.
Правило выглядит примерно так:
<RuleName attribute="(identifier)" context="(identifier)" [rule specific attributes] />
Параметр attribute указывает, какой стиль применить к символам, соответствующим правилу. Параметр context определяет контекст, который будет установлен в случае применения правила.
Параметр context может принимать следующие значения:
Идентификатор, т.е. название контекста.
order предписывает системе подсветки не менять текущий контекст (#stay
) или вернуться к предыдущему контексту (#pop
).
Чтобы вернуться назад на несколько контекстов, повторите нужное количество раз ключевое слово #pop: #pop#pop#pop
Некоторые правила могут иметь дочерние правила, которые проверяются только в том случае, если текст соответствует родительскому правилу. Всей совпавшей строке будут присвоены атрибуты, определенные в родительском правиле. Вот пример правила с дочерними правилами:
<RuleName (attributes)> <ChildRuleName (attributes) /> ... </RuleName>
Параметры конкретных видов правил описаны в следующих разделах.
Общие атрибуты
У любого правила есть следующие атрибуты, (common attributes)
, доступные всегда. attribute и context обязательны, остальные - нет.
attribute: Атрибут, описывающий определённые itemData.
context: Определяет контекст, на который происходит переключение в случае соответствия правилу.
beginRegion: Начало сворачиваемого блока кода. По умолчанию: не установлен (unset).
endRegion: Окончание сворачиваемого блока кода. По умолчанию: не установлен (unset).
Если lookAhead имеет значение true, то система подсветки больше не будет обрабатывать соответствия. По умолчанию: false.
firstNonSpace: Соответствие, только если строка начинается не с пробела. По умолчанию: false.
column: Соответствие, только если соответствует номер столбца. По умолчанию: не установлено (unset).
Динамические правила
У некоторых правил есть необязательный атрибут dynamic
, имеющий логическое значение (по умолчанию false). Если dynamic установить true, то правило может использовать метки-заполнители, заменяющие текст, соответствующий правилу регулярного выражения, переключенного к текущему контексту по своим атрибутам string
или char
. В атрибуте string
метка-заполнитель %N
(где N - цифра) будет заменена номером N
найденного регулярного выражения. В атрибуте char
метка-заполнитель должна быть цифрой N
, и будет заменена первым символом N
найденного регулярного выражения. Чтобы правило могло использовать эти атрибуты, оно должно содержать параметр (dynamic).
dynamic: логический атрибут (true|false).
Проверка на совпадение с одним определенным символом. Используется, например, для определения завершающего символа строки, заключённой в кавычки.
<DetectChar char="(character)" (common attributes) (dynamic) />
Параметр char
определяет символ.
Проверка на совпадение с двумя символами в заданном порядке.
<Detect2Chars char="(character)" char1="(character)" (common attributes) (dynamic) />
Параметр char
определяет первый символ для проверки, char1
- второй.
Проверка на совпадение с любым символом из заданного набора.
<AnyChar String="(string)" (common attributes) />
Параметр String
содержит набор допустимых символов.
Проверка на совпадение со строкой.
<StringDetect String="(string)" [insensitive="true|false"] (common attributes) (dynamic) />
Параметр String
должен содержать строку, которую нужно проверить на соответствие. Атрибут insensitive
по умолчанию имеет значение false
, он влияет на сравнение строк. Если этот параметр установлен true
, функция сравнения не будет учитывать регистр символов.
Проверка на совпадение с регулярным выражением.
<RegExpr String="(string)" [insensitive="true|false"] [minimal="true|false"] (common attributes) (dynamic) />
Параметр String
определяет регулярное выражение.
insensitive
имеет то же значение, что и в предыдущем правиле; по умолчанию установлен false
.
Параметр minimal
по умолчанию имеет значение false
и передаётся функции обработки регулярных выражений.
Символ перевода каретки (^
) в начале регулярного выражения говорит о том, что данное правило будет применяться только к тем цепочкам символов, которые начинаются с новой строки.
Более подробно регулярные выражения рассматриваются в разделе «Регулярные выражения».
Проверка на ключевое слово из указанного списка.
<keyword String="(list name)" (common attributes) />
В параметре String
нужно указать название списка ключевых слов. Этот список должен существовать.
Проверка на целое число.
<Int (common attributes) (dynamic) />
Это правило не имеет своих параметров. Дочерние правила обычно используются для определения комбинаций символов L
и U
после числа, которые конкретизируют тип целой константы в коде программы. Вообще, все правила могут быть использованы в качестве дочерних, хотя DTD разрешает использовать в качестве дочернего только правило StringDetect
.
Пример проверки на целые числа, следующие за символом 'L'.
<Int attribute="Decimal" context="#stay" > <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="true"/> </Int>
Проверка на число с плавающей точкой.
<Float (common attributes) />
У этого правила нет особых атрибутов. AnyChar
можно использовать как дочернее, обычно оно используется для проверки комбинаций. Для примера смотрите правило Int
.
Проверка на восьмеричное число (должно начинаться с нуля).
<HlCOct (common attributes) />
У этого правила нет особых атрибутов.
Проверка на шестнадцатеричное число (должно начинаться с символов «0x»).
<HlCHex (common attributes) />
У этого правила нет особых атрибутов.
Проверка на управляющий символ.
<HlCStringChar (common attributes) />
У этого правила нет особых атрибутов.
Проверка на специальное представление символов, которое используется в языках программирования, например, \n
(переход на новую строку) или \t
(символ табуляции).
Следующие символы соответствуют правилу, если они вводятся после обратной черты (\
): abefnrtv"'?\
. Также будут соответствовать шестнадцатеричные и восьмеричные числа, предварённые обратной чертой (например, \xff
и \033
).
Проверка на символ C.
<HlCChar (common attributes) />
У этого правила нет особых атрибутов.
Правило находит символы C, заключенные в одинарные кавычки (например, 'c'
). Внутри одинарных кавычек может быть как одиночный символ, так и управляющая последовательность, более подробно ознакомиться с которыми можно в описании правила HlCStringChar.
Проверка на строку, имеющую заданные начальный и конечный символы.
<RangeDetect char="(character)" char1="(character)" (common attributes) />
char
определяет символ, с которого начинается строка, а char1
- которым она заканчивается.
Это правило может быть использовано для поиска небольших строк, заключенных в кавычки, но, поскольку при проверке правила система подсветки работает с одной строкой, данное правило не сможет определить строку, разбитую символами перевода.
Проверка на символ перевода строки.
<LineContinue (common attributes) />
У этого правила нет особых атрибутов.
Это правило может быть удобно для переключения контекста в конце строки, если последним знаком будет обратная черта ('\'
). Это необходимо, например, в языках C/C++ для продолжения макросов и строк.
Включение правил из другого контекста или языка/файла.
<IncludeRules context="contextlink" [includeAttrib="true|false"] />
Атрибут context
определяет контекст, из которого берётся правило.
Если это простая строка, то включаются все правила из другого контекста, например:
<IncludeRules context="anotherContext" />
Если строка начинается с ##
, то система подсветки найдёт описание для другого языка с указанным названием, например:
<IncludeRules context="##C++" />
Если includeAttrib
выставить true, атрибут назначения должен быть таким же, как атрибут источника. Это необходимо, например, при вводе комментариев, если текст, соответствующий включаемому контексту, имеет иную подсветку, чем основной контекст.
Поиск пробелов.
<DetectSpaces (common attributes) />
У этого правила нет особых атрибутов.
Используйте это правило, если вы уверены, что в тексте есть несколько пробелов подряд, например в начале строк с отступом. Это правило поможет пропустить все пробелы разом, вместо проверки каждого из них по нескольким параметрам.
Поиск строк идентификаторов (таких как регулярные выражения: [a-zA-Z_][a-zA-Z0-9_]*).
<DetectIdentifier (common attributes) />
У этого правила нет особых атрибутов.
Используйте это правило, чтобы пропустить все буквенные символы разом, вместо проверки каждого из них по нескольким параметрам.
Усвоив принцип действия переключения контекста, вы без труда сможете написать своё определение подсветки. Подумайте о том, в какой ситуации какое правило следует применить. Регулярные выражения - мощное средство, но, по сравнению с другими правилами, очень медленное. Поэтому стоит воспользоваться следующими советами.
Проверяя на соответствие только пару символов, воспользуйтесь Detect2Chars
вместо StringDetect
. То же относится к DetectChar
.
Регулярные выражения несложны в использовании, но очень часто можно найти более быстрый способ. Допустим, вы ищете символ '#'
, это первый символ строки. Решение с регулярным выражением будет выглядеть примерно так:
<RegExpr attribute="Macro" context="macro" String="^\s*#" />. Этой же цели можно достичь значительно быстрее:
<DetectChar attribute="Macro" context="macro" char="#" firstNonSpace="true" />. Для поиска регулярного выражения
'^#'
можно применить DetectChar
с атрибутом column="0"
. Отсчет для атрибута column
идет посимвольно, поэтому знак табуляции для него - всего один символ. Можно переключать контексты без специальных символов. Допустим, вы хотите переключить контекст при достижении строки */
, но в новом контексте хотите продолжить обработку этой строки. Можно воспользоваться нижеследующим правилом, а атрибут lookAhead
заставит систему подсветки сохранить найденную строку для нового контекста.
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
Если известно, что в тексте много пробелов, воспользуйтесь DetectSpaces
.
Пользуйтесь DetectIdentifier
вместо регулярного выражения '[a-zA-Z_]\w*'
.
Старайтесь использовать стандартные стили, это удобно для пользователя.
Заглянув в другие XML-файлы, вы узнаете много нового о работе с правилами.
Проверить правильность XML-файла можно командой xmllint --dtdvalid language.dtd mySyntax.xml.
Если сложное регулярное выражение встречается часто, воспользуйтесь ENTITIES. Пример:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [ <!ENTITY myref "[A-Za-z_:][\w.:_-]*"> ]>
Теперь вместо регулярного выражения можно использовать &myref;.
Содержание
Это приложение содержит краткое, но, надеюсь, достаточно ясное введение в мир регулярных выражений. Здесь описаны регулярные выражения в той форме, в которой они используются в Kate; к сожалению, они не совместимы с с регулярными выражениями perl и grep.
Регулярные выражения - это средство, позволяющее описывать содержание строк в некотором формализованном виде, что даёт возможность приложениям определять принадлежность той или иной строки определённому формату. В дополнение ко всему некоторые приложения могут сохранять части совпавшей строки для их последующего использования.
Приведём небольшой пример. Допустим, вы хотите найти в тексте все абзацы, которые начинаются с фамилий «Петров» или «Иванов», за которыми следует любая форма глагола «рассказывать» (для чистоты эксперимента возьмём всего две формы «рассказал» и «рассказывал»).
С помощью обычного поиска вам бы понадобилось сначала найти фамилию «Петров», возможно, дополненную буквами «рассказ», что-то вроде этого: Петров рассказ
. При поиске совпадений пришлось бы пропускать все строки, которые стоят не в начале абзаца. После этого последовал бы повторный поиск для второй фамилии...
Регулярные выражения позволяют произвести такую операцию поиска за один раз, причём с гораздо большей точностью.
Регулярные выражения содержат правила, позволяющие точно выразить вид строки для поиска. Наш пример можно выразить словесно: «Строка, начинающаяся со слов „Петров“ или „Иванов“, перед которыми могут стоять до четырёх пробелов или символов табуляции, после фамилии должен стоять пробел, за пробелом - „рассказ“, после чего может (необязательно!) стоять суффикс „ыв“, и, наконец, суффикс „ал“». Посмотрите, как это можно записать в форме регулярного выражения:
^[ \t]{0,4}(Петров|Иванов) рассказ(ыв)?ал
Этот пример демонстрирует четыре основных понятия современных регулярных выражений:
Шаблоны
Утверждения
Квантификаторы
Обратные ссылки
Значок ^
, с которого начинается выражение - это утверждение, которое подтверждает совпадение только в том случае, если совпавшая цепочка символов начинается с новой строки.
[ \t]
и (Петров|Иванов) рассказ(ыв)?ал
- это шаблоны. Первый представляет собой символьный класс, который совпадает либо с пробелом, либо с символом табуляции. Второй содержит вложенный шаблон, совпадающий со словами Петров
или Иванов
, затем идёт проверка на точное совпадение со строкой рассказ
, потом ещё один вложенный шаблон, который определяет вхождение символов ыв
, и, в самом конце, проверка на точное совпадение с символами ал
Строка {0,4}
и символ вопроса после вложенного шаблона (ыв)
- это квантификаторы. Первый можно трактовать следующим образом: «возможен повтор предыдущего символа от 0 до 4 раз». Второй квантификатор действует аналогично, позволяя повторить стоящий перед ним вложенный шаблон 0 или 1 раз.
Все приложения, работающие с регулярными выражениями и поддерживающие обратные ссылки, при совпадении сохраняют всю строку и вложенные шаблоны в некоторой области памяти и предоставляют средства для получения этих значений. Поэтому мы можем получить всю совпавшую строку (при поиске в редакторе она обычно выделяется цветом) или, например, только фамилию.
Как вы могли убедиться на предыдущем примере, регулярные выражения - это очень эффективное средство поиска, позволяющее найти именно то, что вам нужно, без особых усилий.
В следующих разделах подробно рассмотрены шаблоны, символьные классы, утверждения, квантификаторы и обратные ссылки. В конце этой главы вы найдёте несколько полезных примеров.
Шаблоны состоят из символов и символьных классов. Допускается вложенность, в этом случае вложенные шаблоны заключаются в круглые скобки.
И в шаблонах, и в символьных классах некоторые символы имеют специальное значение. Если вы хотите использовать эти символы при поиске именно как символы, нужно записать их определённым образом, чтобы анализатор регулярных выражений считал их обычными литералами.
Делается это очень просто, нужно всего лишь поставить перед таким символом обратную косую черту (\
).
Анализатор регулярных выражений игнорирует обратную черту перед символами, которые не имеют специального значения в контексте; например, если вы вместо обычного символа «j» напишете \j
, анализатор его воспримет просто как «j». Таким образом, если вы не уверены, имеет ли символ специальное значение, можете спокойно ставить перед ним обратную косую черту.
Для указания символа обратной косой черты (в качестве литерала), продублируйте его: \\
.
Символьный класс - это выражение, которое позволяет проверить один символ на принадлежность определённому набору символов. Чтобы использовать его в регулярных выражениях, нужно в квадратных скобках записать все верные символы или сокращённые классы, описанные ниже.
Простые символьные классы содержат один или несколько символов, например, [abc]
(проверка на любой из символов «a», «b» или «c») или [0123456789]
(проверка на любую цифру).
Поскольку буквы и цифры упорядоченны логически, вы можете сокращать классы, используя диапазоны: [a-c]
аналогично [abc]
, [0-9]
аналогично [0123456789]
. Можно комбинировать диапазоны с обычным перечислением символов: [a-fynot1-38]
(проверка на любой из символов «a»,«b»,«c»,«d», «e»,«f»,«y»,«n»,«o»,«t», «1»,«2»,«3» или «8»).
Чтобы проверить символ без учёта регистра в любом случае (регулярное выражение может учитывать или не учитывать регистр символов), нужно написать примерно следующее: [aAbB]
.
Можно создать «исключающий» класс, который проверяет символ на «не вхождение» в заданный набор символов. Обычный символьный класс превращается в исключающий добавлением символа «^
» перед набором символов:
[^abc]
- проверка на любой символ, кроме «a», «b» и «c».
В дополнение к обычным литералам можно использовать следующие сокращения:
\a
Проверка на ASCII-символ звонка (BEL, 0x07).
\f
Проверка на ASCII-символ перевода страницы (FF, 0x0C).
\n
Проверка на символ перевода строки (LF, 0x0A, символ перехода на новую строку в Unix).
\r
Проверка на символ возврата каретки (CR, 0x0D).
\t
Проверка на символ горизонтальной табуляции (HT, 0x09)
\v
Проверка на символ вертикальной табуляции (VT, 0x0B).
\xhhhh
Проверка на символ в кодировке Unicode, соответствующий номеру hhhh (в пределах 0x0000-0xFFFF). \0ooo (первый символ - ноль) - проверка на символ в кодировке ASCII/Latin-1, соответствующий восьмеричному номеру ooo (в пределах 0-0377).
.
(точка)Проверка на любой символ (включая переход на новую строку).
\d
Проверка на цифровой символ. Аналогично классу [0-9]
.
\D
Проверка на любой символ, не являющийся цифровым. Аналогично [^0-9]
или [^\d]
\s
Проверка на пробельный символ. Фактически аналогично классу [ \t\n\r]
\S
Проверка на любой символ, не являющийся пробельным. Фактически равнозначно [^ \t\r\n]
и аналогично [^\s]
\w
Проверка на любой алфавитно-цифровой символ (как вы поняли, сюда включаются все буквы и цифры). Подчёркивание (_
) не входит в этот класс, в отличие от регулярных выражений perl. Это сокращение аналогично классу [a-zA-Z0-9]
\W
Проверка на любой символ, не являющийся алфавитно-цифровым. Аналогично классу [^a-zA-Z0-9]
или [^\w]
Аббревиатурные классы можно помещать в обычные классы; например, чтобы выполнить проверку на алфавитно-цифровой символ, точку или пробел, вы можете написать так: [\w \.]
В текущей версии не поддерживается нотация классов POSIX ([:<class name>:]
).
Ниже перечислены символы, имеющие специальное значение в определениях символьных классов («[]»). Для использования в качестве обычных литералов они должны быть предварены обратной косой чертой.
]
Закрывает символьный класс. Этот символ должен быть предварён обратной косой чертой, кроме тех случаев, когда стоит непосредственно в начале класса или сразу после символа ^
^
Если стоит в начале, объявляет исключающий класс. Чтобы использовать как литерал в начале класса, нужно поставить обратную косую черту.
-
(дефис)Определяет логический диапазон. Чтобы использовать в качестве литерала, всегда нужно ставить обратную косую черту.
\
(обратная черта)Спецсимвол (escape character). Чтобы использовать как литерал, продублируйте.
Если вы хотите выполнить проверку на один (любой) шаблон из определённого набора, используйте альтернативы. Чтобы объявить альтернативу, нужно все шаблоны набора записать через канал (|
).
Например, чтобы найти любое из имён «Вася» и «Петя», нужно использовать такое выражение: Вася|Петя
.
Вложенными называются шаблоны, заключённые в круглые скобки. Они используются в разных целях:
Используя вложенные шаблоны, вы можете группировать набор альтернатив внутри сложных шаблонов. Напомню, альтернативы разделяются символом перенаправления через канал («|»).
Например, чтобы найти одно из слов «int», «float» или «double», вы можете использовать шаблон int|float|double
. Если же вы хотите найти одно из этих слов, за которым идут пробелы, а за ними какие-то символы, то вы должны оформить альтернативу как вложенный шаблон: (int|float|double)\s+\w+
.
Чтобы создать обратную ссылку, оформите как вложенный шаблон ту часть выражения, которую нужно запомнить.
Например, если вы хотите найти два одинаковых слова, разделённых запятой и, возможно, пробелами, можно использовать такое выражение: (\w+),\s*\1
. Вложенный шаблон \w+
ищет цепочку алфавитно-цифровых символов, а всё выражение ищет ту же цепочку, за которой следует запятая, далее могут идти пробелы, а за ними точно такая же цепочка (строка \1
ссылается на первый вложенный шаблон, заключённый в круглые скобки).
Просматривающее утверждение - это вложенный шаблон, который начинается с символов ?=
или ?!
.
Например, чтобы найти слово «Билл», за которым может следовать что угодно, кроме слова « Гейтс», нужно составить такое выражение: Билл(?! Гейтс)
(оно совпадёт с «Билл Клинтон», «Билли хороший мальчик», но не с именем известного магната).
Вложенные шаблоны, использующиеся в качестве утверждений, не запоминаются.
Смотрите также раздел «Утверждения»
Следующие символы имеют специальное значение в шаблонах, поэтому, чтобы использовать их в качестве обычных символов, нужно впереди ставить обратную черту:
\
(обратная черта)С него должны начинаться все спецсимволы.
^
Проверка на начало строки.
$
Проверка на конец строки.
()
(левая и правая круглые скобки)Объявление вложенного шаблона.
{}
(левая и правая фигурные скобки)Объявление числового квантификатора.
[]
(левая и правая квадратные скобки)Объявление символьного класса.
|
(вертикальная черта)Логическое ИЛИ. Используется для разделения альтернатив.
+
(плюс)Квантификатор «один или более».
*
(звёздочка)Квантификатор «ноль или более».
?
(знак вопроса)Необязательный символ. Можно считать его квантификатором «ноль или один».
Квантификатор выполняют проверку на определённое количество повторений символа, шаблона или символьного класса.
Квантификаторы записываются в фигурных скобках ({
и }
). Общий вид квантификатора: {[минимальное-количество-совпадений][,[максимальное-количество-совпадений]]}
Использование квантификаторов лучше пояснить на примерах:
{1}
Ровно одно появление
{0,1}
Ноль или одно появление
{,1}
То же самое, но набирать меньше ;)
{5,10}
Как минимум 5 повторений, максимум - 10.
{5,}
Как минимум 5 повторений (без верхней границы).
Также определены несколько сокращений:
*
(звёздочка)аналогично {0,}
, найти любое количество повторений (вплоть до нуля повторений).
+
(плюс)аналогично {1,}
, как минимум одно появление.
?
(знак вопроса)аналогично {0,1}
, ноль или одно появление.
Используя квантификаторы без ограничений максимума, регулярное выражение захватывает строку по максимуму, такое поведение называется жадным.
Современные анализаторы позволяют определять как жадные, так и не жадные регулярные выражения. В основном, это проявляется в соответствующих элементах графического интерфейса, например, в диалоге поиска может быть опция «Минимальное совпадение».
Здесь приведено несколько примеров использования квантификаторов.
^\d{4,5}\s
Совпадёт с «1234 вперёд» и «12345 стоп», но не совпадёт ни с «567 восемь», ни с «223459 много».
\s+
Проверка на один или более пробельных символов.
(ля){1,}
Совпадёт с «ляляля» и с подстрокой «ля» в словах «кляча» и «земля»
/?>
Совпадёт с «/>» в «<closeditem/>», а также с «>» в строке «<openitem>».
Утверждения накладывают дополнительные условия на проверку регулярного выражения.
Утверждение не проверяет символы, скорее, оно анализирует совпавшую строку перед тем как подтвердить совпадение. Например, утверждение граница слова не пытается найти символ-разделитель слов, наоборот, оно проверяет, что в данной позиции нет алфавитно-цифрового символа. Это означает, что утверждение будет верно даже в случае отсутствия символа-разделителя, например, в конце строки поиска.
Некоторые утверждения являются шаблонами, но они лишь проверяют, есть или нет в данном месте строки совпадение заданному шаблону, не включая его в конечный результат (т.е. в "совпавший текст").
Регулярные выражения, описанные в этом руководстве, поддерживают следующие утверждения:
^
(начало строки)Проверка на начало строки.
Выражение ^Пётр
совпадёт с «Пётр» в строке «Пётр, здравствуйте!», но не в строке «Здравствуйте, Пётр!».
$
(конец строки)Проверка на конец строки поиска.
Выражение ты\?$
совпадёт с последним «ты» в строке «- Ты не сделаешь этого! - А ты?», но не совпадёт ни с какой частью строки «Ты не сделал этого, так?».
\b
(граница слова)Проверяет, есть ли в данном месте с одной стороны алфавитно-цифровой символ, а с другой - не алфавитно-цифровой (необязательно разделитель!).
Это утверждение используется для поиска границ слов; например, можно использовать два таких утверждения, чтобы найти целое слово. Выражение \bиз\b
совпадёт с отдельным словом «из» во фразе «Он выпал из этого окна, хорошо хоть, что тут низко», но не совпадёт с «из» в слове «низко».
\B
(нет границы слова)Действие этого утверждения обратно утверждению «\b».
Это значит, что данное утверждение будет совпадать, например, в середине слова: выражение \Bце\B
совпадёт с «це» в строке «сцена», но не в «целое».
(?=ШАБЛОН)
(подтверждающий просмотр)Просматривающие утверждения действуют аналогично обычным шаблонам, с той лишь разницей, что текст, совпавший (или не совпавший, в зависимости от типа просмотра) с утверждением, не будет включен в результирующее совпадение. Подтверждающий просмотр проверяет текст на предмет совпадения с ШАБЛОНОМ утверждения.
Выражение программ(?=\w)
совпадёт с «программ» в слове «программист», но не во фразе «Он написал много хороших программ!».
(?!ШАБЛОН)
(отрицающий просмотр)Отрицающий просмотр проверяет текст на предмет несовпадения с ШАБЛОНОМ.
Выражение const \w+\b(?!\s*&)
совпадёт с «const char» в строке «const char* foo», но не совпадёт с «const QString» в «const QString& bar», поскольку «&» совпадает с шаблоном отрицающего просмотра.
Kate - это часть проекта KDE http://www.kde.org/.
Kate входит в пакет kdebase на ftp://ftp.kde.org/pub/kde/, основном FTP-сервере KDE.
Чтобы собрать и установить Kate, введите следующие команды в каталоге дистрибутива Kate:
%
./configure
%
make
%
make install
Поскольку Kate использует autoconf и automake, у вас не должно возникнуть никаких проблем. Если же у вас возникли ошибки, сообщите о них в списки рассылки KDE.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team