<chapter id="advanced-editing-tools">
<chapterinfo>
<authorgroup>
<author
>&Anders.Lund; &Anders.Lund.mail;</author>
<author
>&Dominik.Haumann; &Dominik.Haumann.mail;</author>
<othercredit role="translator"
><firstname
>Юрій</firstname
><surname
>Чорноіван</surname
><affiliation
><address
><email
>yurchor@ukr.net</email
></address
></affiliation
><contrib
>Переклад українською</contrib
></othercredit
> 
</authorgroup>
</chapterinfo>
<title
>Додаткові інструменти редагування</title>

<sect1 id="advanced-editing-tools-comment">

<title
>Додавання/Вилучення позначок коментаря</title>

<para
>За допомогою пунктів <guimenuitem
>Закоментувати</guimenuitem
> і <guimenuitem
>Розкоментувати</guimenuitem
> меню <guimenu
>Інструменти</guimenu
> ви зможете додавати або вилучати позначки коментарів до позначеного фрагмента або поточного рядка (у разі, якщо нічого не позначено), якщо коментарі підтримуються форматом файла, який ви редагуєте.</para>

<para
>Правила коментування визначаються у файлі визначень синтаксису, отже, якщо не використано ніяких правил підсвічування синтаксису, коментування/вилучення коментарів буде неможливим. </para>

<para
>У деяких форматах файлів можливе коментування лише окремих рядків, у деяких форматах передбачено коментування одразу декількох рядків парою позначок коментаря, а у деяких форматах можливі обидва варіанти. Якщо коментування парою позначок не передбачено форматом файла, коментування останнього рядка за неповного його позначення у багаторядковому фрагменті тексту буде неможливим.</para>

<para
>Якщо форматом файла передбачено позначки для коментування окремого рядка, використанню цих позначок слід надавати перевагу, оскільки за такого варіанта ви уникнете проблем з вкладеними коментарями.</para>

<para
>Якщо ви вилучаєте позначки коментарів, вам не слід позначати фрагментів тексту, які не було закоментовано. Під час вилучення коментування парою позначок з позначеного фрагмента тексту всі пробільні рядки поза позначками коментарів у позначеному фрагменті буде проігноровано.</para>

<para
><indexterm
><primary
>закоментувати</primary
></indexterm
> Щоб додати позначки коментарів, скористайтеся пунктом меню <menuchoice
><guimenu
>Інструменти</guimenu
> <guimenuitem
>Закоментувати</guimenuitem
></menuchoice
> або відповідною комбінацією клавіш, типовою комбінацією є <keycombo action="simul"
>&Ctrl;<keycap
>D</keycap
></keycombo
>.</para>

<para
><indexterm
><primary
>розкоментувати</primary
></indexterm
> Щоб вилучити позначки коментарів, скористайтеся пунктом меню <menuchoice
><guimenu
>Інструменти</guimenu
> <guimenuitem
>Розкоментувати</guimenuitem
></menuchoice
> або відповідною комбінацією клавіш, типовою комбінацією є <keycombo action="simul"
>&Ctrl;&Shift;<keycap
>D</keycap
></keycombo
>.</para>

</sect1>

<sect1 id="advanced-editing-tools-commandline">
<title
>Командний рядок компонента редактора</title>

<para
>У компонент редактора &kappname; вбудовано інструмент для роботи з командним рядком, за допомогою якого ви зможете виконувати різноманітні дії за мінімального графічного інтерфейсу. Командний рядок — це текстова панель у нижній частині вікна редактора, щоб увімкнути показ цієї панелі скористайтеся пунктом меню <menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Перемкнутися до командного рядка</guimenuitem
></menuchoice
> або скористайтеся клавіатурним скороченням (типовим клавіатурним скороченням є <keycombo action="simul"
><keycap
>F7</keycap
></keycombo
>). У редакторі передбачено набір команд, документацію з яких наведено нижче, та додаткові команди, за допомогою яких можна керувати додатками до програми.</para>

<para
>Щоб виконати команду, введіть цю команду до командного рядка і натисніть клавішу &Enter;. За командним рядком ви зможете визначити, чи було виконано команду, у ньому ж можна переглянути повідомлення, яке могло бути виведено у відповідь на команду. Якщо ви вводили команду за після натискання клавіші <keycap
>F7</keycap
>, за декілька секунд панель командного рядка буде приховано. Щоб витерти виведене командою повідомлення і ввести нову команду, натисніть клавішу <keycap
>F7</keycap
> ще раз.</para>

<para
>У командний рядок вбудовано довідкову систему. Щоб розпочати роботу з довідкою, введіть команду <command
>help</command
>. Щоб переглянути список можливих команд, введіть команду <command
>help list</command
>. Щоб переглянути довідку з окремої команди, виконайте команду <command
>help <replaceable
>назва_команди</replaceable
></command
>.</para>

<para
>Під час роботи з командним рядком ви можете скористатися вбудованим журналом команд, таким чином ви можете зменшити час доступу до команд, які вже раніше було введено. Для навігації журналом команд скористайтеся клавішами <keycap
>↑</keycap
> і <keycap
>↓</keycap
>. Під час показу команд з журналу буде позначено параметри команди, — це спростить вам перезапис параметрів команди.</para>

<sect2 id="advanced-editing-tools-commandline-commands">
<title
>Стандартні команди командного рядка</title>

<variablelist>
<title
>Типи аргументів</title>

<varlistentry>
<term
>BOOLEAN</term>
<listitem
><para
>Цей тип використовується для команд, які вмикають або вимикаю певні налаштування. Можливими значеннями таких параметрів є <userinput
>on</userinput
>, <userinput
>off</userinput
>, <userinput
>true</userinput
>, <userinput
>false</userinput
>, <userinput
>1</userinput
> і <userinput
>0</userinput
>.</para
></listitem>
</varlistentry>

<varlistentry>
<term
>INTEGER</term>
<listitem
><para
>Ціле число.</para
></listitem>
</varlistentry>

<varlistentry>
<term
>STRING</term>
<listitem
><para
>Рядок, обмежений одинарними лапками (') або подвійними лапками ("), якщо у ньому містяться пробіли.</para
></listitem>
</varlistentry>

</variablelist>



<sect3 id="advanced-editing-tools-commandline-commands-configure">
<title
>Команди налаштування редактора</title>

<para
>Ці команди стосуються компонента редактора, за їх допомогою можна налаштовувати лише параметри показу поточного документа. Цими командами зручно користатися, якщо вам потрібно використати параметри, наприклад параметри відступів, відмінні від типових параметрів. </para>

<variablelist>

<varlistentry>
<term
><cmdsynopsis
><command
>set-tab-width</command
><arg choice="req"
>INTEGER ширина</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює ширину табуляції у значення <userinput
>ширина</userinput
>.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-indent-width</command
><arg choice="req"
>INTEGER ширина</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює відступ у значення кількості пробілів, визначене параметром <userinput
>ширина</userinput
>. Використовується, лише якщо увімкнено відступи з пробілів.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-word-wrap-column</command
><arg choice="req"
>INTEGER довжина</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює для параметра максимальної довжини рядка для примусового перенесення значення <userinput
>довжина</userinput
>. Цей параметр використовується, якщо увімкнено автоматичне розбиття тексту на рядки.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-icon-border</command
><arg choice="req"
>BOOLEAN вмикання</arg
> </cmdsynopsis
></term>
<listitem
><para
>Встановлює видимість бічної смужки піктограм.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-folding-markers</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює значення видимості позначок панелі згортання.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-line-numbers</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює значення видимості панелі номерів рядків.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-replace-tabs</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо має значення «true», введені вами знаки табуляції буде замінено пробілами. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-remove-trailing-space</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо цей параметр буде увімкнено, після переведення курсора на інших рядок пробіли наприкінці поточного рядка вилучатимуться.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-show-tabs</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо буде увімкнено цей параметр, символи табуляції і пробіли наприкінці рядка буде показано у вигляді маленьких крапок.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-show-indent</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо буде увімкнено цей параметр, відступи буде показано вертикальною крапчастою лінією.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-indent-spaces</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо буде увімкнено цей параметр, редактор робитиме відступ на <option
>indent-width</option
> пробілів, замість символу табуляції, під час переходу на наступний рівень відступу.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-mixed-indent</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо буде увімкнено цей параметр, &kappname; використовуватиме суміш з символів табуляції і пробілів для додавання відступів. Ширина кожного з рівнів відступу визначатиметься значенням параметра <option
>indent-width</option
>, загальний же відступ буде оптимізовано так, щоб у ньому використовувалася максимальна кількість символів табуляції.</para>
<para
>Після виконання цієї команди буде увімкнено створення відступів пробілами, якщо ширину відступу не було вказано, буде встановлено значення ширини відступу у половину значення параметра документа <option
>tab-width</option
> на час виконання команди.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-word-wrap</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює значення для динамічного перенесення слів у <userinput
>вмикання</userinput
> (true або false)</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-replace-tabs-save</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо увімкнути цей параметр, під час збереження документа символи табуляції буде замінено на пробіли.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-remove-trailing-space-save</command
><arg choice="req"
>BOOLEAN вмикання</arg
></cmdsynopsis
></term>
<listitem
><para
>Якщо увімкнути цей параметр, під час збереження документа пробіли наприкінці рядків документа будуть вилучатися.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-indent-mode</command
><arg choice="req"
>STRING назва</arg
></cmdsynopsis
></term>
<listitem
><para
>Встановлює режим автоматичного встановлення відступів у значення <userinput
>назва</userinput
>. Якщо програмі не вдасться розпізнати параметр <userinput
>назва</userinput
>, буде встановлено режим 'none'. Коректними значеннями режиму є «none», «normal», «cstyle», «haskell», «lilypond», «lisp», «python», «ruby» і «xml».</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-auto-ident</command
><arg choice="req"
>BOOLEAN скрипт</arg
></cmdsynopsis
></term>
<listitem
><para
>Увімкнути або вимкнути автоматичне встановлення відступів.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-highlight</command
><arg choice="req"
>STRING підсвічування</arg
></cmdsynopsis
></term>
<listitem
><para
>Визначає систему підсвічування синтаксису для поточного документа. Параметром команди має бути коректна назва підсвічування у тому вигляді, у якому ця система фігурує у меню <menuchoice
><guimenu
>Інструменти</guimenu
> <guisubmenu
>Підсвічування</guisubmenu
></menuchoice
>. У цій команді передбачено автоматичне доповнення параметра за списком.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>reload-scripts</command
></cmdsynopsis
></term>
<listitem
><para
>Перезавантажити всі <link linkend="dev-scripting"
>скрипти JavaScript</link
>, використані &kate;, зокрема скрипти встановлення відступів та скрипти командного рядка.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-mode</command
><arg choice="req"
>STRING режим</arg
></cmdsynopsis
></term>
<listitem
><para
>Вибрати схему типів файлів для поточного документа. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>nn[oremap]</command
><arg choice="req"
>STRING початкова</arg
> <arg choice="req"
>STRING відображена</arg
></cmdsynopsis
></term>
<listitem
><para
>Відобразити послідовність символів <userinput
>початкова</userinput
> на послідовність <userinput
>відображена</userinput
>.</para
></listitem>
</varlistentry>

</variablelist>

</sect3>

<sect3 id="advanced-editing-tools-commandline-commands-edit">
<title
>Команди редагування</title>

<para
>Наступні команди змінюють вміст поточного документа.</para>

<variablelist>
<varlistentry>
<term
><cmdsynopsis
><command
>indent</command
></cmdsynopsis
></term>
<listitem
><para
>Додає відступ у позначені рядки або поточний рядок.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>unindent</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучає початковий відступ з позначених рядків або поточного рядка.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>cleanindent</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучає відступи для позначених рядків або поточного рядка відповідно до параметрів відступів поточного документа. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>comment</command
></cmdsynopsis
></term>
<listitem
><para
>Додає позначки коментаря, які роблять позначений фрагмент тексту, позначені рядки або поточний рядок коментарями, відповідно до формату тексту, який визначено у параметрах підсвічування синтаксису поточного документа.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>uncomment</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучає позначки коментаря, які роблять позначений фрагмент тексту, позначені рядки або поточний рядок коментарями, відповідно до формату тексту, який визначено у параметрах підсвічування синтаксису поточного документа.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>kill-line</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучає поточний рядок.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>replace</command
><arg choice="req"
> STRING шаблон</arg
> <arg choice="req"
>STRING замінник</arg
></cmdsynopsis
></term>
<listitem
><para
>Замінює текст, що відповідає <userinput
>шаблону</userinput
>, на текст, вказаний у <userinput
>заміннику</userinput
>. Якщо вам потрібно включити пробіл у <userinput
>шаблон</userinput
>, вам слід взяти як <userinput
>шаблон</userinput
>, так і <userinput
>замінник</userinput
> у одинарні або подвійні лапки. Якщо у команді не буде лапок, перше зі слів-параметрів вважатиметься <userinput
>шаблоном</userinput
>, а решта — <userinput
>замінником</userinput
>. Якщо параметр <userinput
>замінник</userinput
> буде порожнім, всі рядки, які відповідають <userinput
>шаблону</userinput
> буде вилучено з тексту.</para>
<para
>Ви можете вказати прапорці налаштування пошуку за допомогою додавання двокрапки, за якою слід вказати одну або декілька літер, кожна з яких відповідатиме за налаштування. Команда викладатиме так: <userinput
>replace:параметри шаблон замінник</userinput
>. Можливі параметри: <variablelist>

<varlistentry>
<term
><userinput
>b</userinput
></term>
<listitem
><para
>Пошук назад.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>c</userinput
></term>
<listitem
><para
>Шукати від позиції курсора.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>e</userinput
></term>
<listitem
><para
>Шукати лише у позначеному фрагменті.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>r</userinput
></term>
<listitem
><para
>Пошук за формальним виразом. Якщо встановлено цей прапорець, ви зможете використовувати параметр <userinput
>\N</userinput
>, де N — номер підрядка у рядку «замінник».</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>s</userinput
></term>
<listitem
><para
>Виконати пошук з врахуванням регістру.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>p</userinput
></term>
<listitem
><para
>Запитувати про дозвіл на заміну наступного елемента.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>w</userinput
></term>
<listitem
><para
>Шукати лише цілі слова.</para
></listitem>
</varlistentry>

</variablelist>

</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>date</command
><arg choice="req"
>STRING формат</arg
></cmdsynopsis
></term>
<listitem
><para
>Вставляє дату/час у форматі, визначеному параметром <userinput
>формат</userinput
>, або у форматі <quote
>yyyy-MM-dd hh:mm:ss</quote
>, якщо рядок формату не буде вказано. Під час обробки рядка <userinput
>формат</userinput
> буде використано такі перетворення: <informaltable
> <tgroup cols="2"
> <tbody>
<row
><entry
><literal
>d</literal
></entry
><entry
>Номер дня без початкового нуля (1-31).</entry
></row>
<row
><entry
><literal
>dd</literal
></entry
><entry
>Номер дня з початковим нулем (01-31).</entry
></row>
<row
><entry
><literal
>ddd</literal
></entry
><entry
>Скорочена локалізована назва дня тижня (наприклад «пн» або «нд»).</entry
></row>
<row
><entry
><literal
>dddd</literal
></entry
><entry
>Довга локалізована назва дня (наприклад «понеділок» або «неділя»).</entry
></row>
<row
><entry
><literal
>M</literal
></entry
><entry
>Номер місяця без початкового нуля (1-12).</entry
></row>
<row
><entry
><literal
>MM</literal
></entry
><entry
>Номер місяця з початковим нулем (01-12).</entry
></row>
<row
><entry
><literal
>MMMM</literal
></entry
><entry
>Повна локалізована назва місяця (наприклад, «січень» або «грудень»).</entry
></row>
<row
><entry
><literal
>MMM</literal
></entry
><entry
>Скорочена локалізована назва місяця (наприклад «січ» або «гру»).</entry
></row>
<row
><entry
><literal
>yy</literal
></entry
><entry
>Рік як двоцифрове значення (00-99).</entry
></row>
<row
><entry
><literal
>yyyy</literal
></entry
><entry
>Рік як чотирицифрове значення (1752-8000).</entry
></row>
<row
><entry
><literal
>h</literal
></entry
><entry
>Години без початкового нуля (0..23 або 1..12 з показом до опівдня/після опівдня).</entry
></row>
<row
><entry
><literal
>hh</literal
></entry
><entry
>Години з початковим нулем (00..23 або 01..12 з показом до опівдня/після опівдня).</entry
></row>
<row
><entry
><literal
>m</literal
></entry
><entry
>Хвилини без початкового нуля (0..59).</entry
></row>
<row
><entry
><literal
>mm</literal
></entry
><entry
>Хвилини з початковим нулем (00..59).</entry
></row>
<row
><entry
><literal
>s</literal
></entry
><entry
>Секунди без початкового нуля (0..59).</entry
></row>
<row
><entry
><literal
>ss</literal
></entry
><entry
>Секунди з початковим нулем (00..59).</entry
></row>
<row
><entry
><literal
>z</literal
></entry
><entry
>Мілісекунди без початкових нулів (0..999).</entry
></row>
<row
><entry
><literal
>zzz</literal
></entry
><entry
>Мілісекунди з початковими нулями (000..999).</entry
></row>
<row
><entry
><literal
>AP</literal
></entry
><entry
>Використовувати показ у форматі AM/PM (до опівдня/після опівдня). AP буде замінено на рядок «AM» або рядок «PM».</entry
></row>
<row
><entry
><literal
>ap</literal
></entry
><entry
>Використовувати показ у форматі am/pm (до опівдня/після опівдня). ap буде замінено на рядок «am» або рядок «pm».</entry
></row>
</tbody>
</tgroup>
</informaltable>

</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>char</command
><arg choice="req"
>STRING ідентифікатор</arg
></cmdsynopsis
></term>
<listitem>
<para
>За допомогою цієї команди можна вводити символи за їх числовими ідентифікаторами у десятковій, вісімковій або шістнадцятковій формі. Щоб скористатися нею, відкрийте діалогове вікно редагування команди і введіть команду <userinput
>char: [число]</userinput
> у поле для введення, а потім натисніть кнопку <guibutton
>Гаразд</guibutton
>.</para>

<example>
<title
>Приклади команди <command
>char</command
></title>

<para
>Ввід: <userinput
>char:234</userinput
></para>
<para
>Вивід: <computeroutput
>&#234;</computeroutput
></para>
<para
>Ввід: <userinput
>char:0x1234</userinput
></para>
<para
>Вивід: <computeroutput
>&#x1234;</computeroutput
></para>
</example>

</listitem>
</varlistentry>

<varlistentry>
<term>
<indexterm
><primary
>заміна, sed-стиль</primary>
<secondary
>пошук, sed-стиль</secondary
></indexterm
><command
>s///[ig]</command
> <command
>%s///[ig]</command
></term>

<listitem>
<para
>За допомогою цієї команди можна виконати дію з пошуку або заміни у стилі sed у поточному рядку або у всьому файлі (<command
>%s///</command
>).</para>

<para
>Якщо коротко, у тексті буде виконано пошук за <emphasis
>шаблоном пошуку</emphasis
>, формальним виразом між першою і другою навскісними рисками, якщо буде знайдено відповідний фрагмент тексту, його буде замінено на вираз між середньою і останньою навскісними рисками у рядку. За допомогою круглих дужок можна створювати <emphasis
>зворотні посилання</emphasis
>: команда запам’ятає частину виразу, яка відповідає рядку між дужками і використає рядки, які будуть у пам’яті для шаблону заміни, — посилання на ці рядки можна вказати як <userinput
>\1</userinput
> для першого набору у дужках, <userinput
>\2</userinput
> для другого тощо.</para>

<para
>Щоб знайти символ <literal
>(</literal
> або символ <literal
>)</literal
>, вам слід <emphasis
>екранувати</emphasis
> ці символи за допомогою зворотної навскісної риски: <userinput
>\(\)</userinput
></para>

<para
>Якщо ви додасте ключ <userinput
>i</userinput
> в кінець виразу, під час пошуку буде враховано регістр символів. Якщо в кінець виразу додати <userinput
>g</userinput
>, буде замінено всі рядки, які відповідають шаблону, у іншому випадку буде замінено лише перший з цих рядків.</para>

<example>

<title
>Заміна тексту у поточному рядку</title>

<para
>Припустімо, компілятор, яким ви збирали вашу програму, повідомив вам про те, що клас <classname
>myClass</classname
>, який згадується у рядку 3902 коду вашої програми не визначено.</para>

<para
>Ви подумаєте: «Оце тобі, то це ж має бути мій клас <classname
>MyClass</classname
>». Ви переходите до рядка 3902 і, замість спроб знайти потрібне слово у тексті, відкриваєте діалогове вікно редагування команди, вводите у нього <userinput
>s/myclass/MyClass/i</userinput
>, натискаєте кнопку <guibutton
>Гаразд</guibutton
>, зберігаєте файл і компілюєте його ще раз, — все, помилки немає.</para>

</example>

<example>
<title
>Заміна тексту у всьому файлі</title>

<para
>Припустімо тепер, що у вас є файл, у якому ви згадуєте <quote
>пані Іванченко</quote
> декілька разів, і тут вам стає відомо, що ця особа нещодавно вийшла заміж за <quote
>пана Петренка</quote
>. Ну і, звісно ж, вам потрібно тепер замінити всі рядки з <quote
>пані Іванченко</quote
> на <quote
>пані Петренко</quote
>.</para>

<para
>Відкрийте вікно командного рядка і введіть туди команду <userinput
>%s/пані Іванченко/пані Петренко/</userinput
>, а потім натисніть клавішу &Enter;, — решту зробить програма.</para>

</example>

<example>
<title
>Складніший приклад</title>

<para
>У цьому прикладі ми познайомилися з використанням <emphasis
>зворотніх посилань</emphasis
>, а також <emphasis
>класу символів</emphasis
> (якщо вам не знайомі ці терміни, будь ласка, зверніться до відповідної документації, посилання на яку ви зможете знайти далі за текстом).</para>

<para
>Припустімо, що у вас є такий рядок: <programlisting
>void MyClass::DoStringOps( String      &amp;foo, String &amp;bar, String *p, int  &amp;a, int &amp;b )</programlisting>
</para>
<para
>Тепер вам здається, що цей код виглядає кострубато: ви вирішили скористатися ключовим словом <constant
>const</constant
> для всіх параметрів <quote
>address of</quote
>, у яких назві аргументу передує оператор &amp;. Ви також бажаєте вилучити зайві пробіли так, щоб між будь-якими двома словами був лише один символ пробілу.</para>

<para
>Відкрийте діалогове вікно редагування команди і введіть таку команду: <userinput
>s/\s+(\w+)\s+(&amp;)/ const \1 \2/g</userinput
>. Натисніть кнопку <guibutton
>Гаразд</guibutton
>. Літера <userinput
>g</userinput
> наприкінці виразу наказує програмі перебудовувати формальний вираз для кожного зі знайдених елементів, щоб зберегти  <emphasis
>зворотні посилання</emphasis
>.</para>

<para
>Вивід: <computeroutput
>void MyClass::DoStringOps( const String &amp;foo, const String &amp;bar String *p, const int &amp;a, const int &amp;b )</computeroutput
></para>

<para
>Справу зроблено! Що ж сталося? Гаразд, було виконано пошук інтервалу з пробілів (<literal
>\s+</literal
>), за яким слідує один або декілька символів абетки (<literal
>\w+</literal
>), за якими слідують ще пробіли (<literal
>\s+</literal
>), за якими слідує символ амперсанда. У процесі пошуку було збережено ланцюжок символів абетки і амперсанд для подальшого використання під час операції з заміни. Після цього було виконано заміну знайденого відповідника нашого рядка на рядок з пробілом, за яким слідує слово <quote
>const</quote
>, за яким слідує пробіл, за яким слідує наш ланцюжок символів абетки (<literal
>\1</literal
>), за яким слідує один пробіл, за яким слідує збережений нами символ амперсанда (<literal
>\2</literal
>)</para>

<para
>Крім того, у деяких випадках ланцюжок символів абетки міг мати значення <quote
>String</quote
>, у деяких <quote
>int</quote
>, цього було досягнуто використанням класу <literal
>\w</literal
> і лічильника <literal
>+</literal
>.</para>

</example>

</listitem>

</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>sort</command
></cmdsynopsis
></term>
<listitem
><para
>Впорядковує позначений фрагмент тексту або весь текст у документі.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>natsort</command
></cmdsynopsis
></term>
<listitem
><para
>Впорядковує позначені рядки або увесь документ у природному порядку.</para>

<example>
<title
><command
>sort</command
> порівняно з <command
>natsort</command
></title>
<para
><userinput
>sort(a10, a1, a2)</userinput
> виведе <computeroutput
>a1, a10, a2</computeroutput
></para>
<para
><userinput
>sort(a10, a1, a2)</userinput
> виведе <computeroutput
>a1, a10, a2</computeroutput
></para>
</example
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>moveLinesDown</command
></cmdsynopsis
></term>
<listitem
><para
>Пересунути позначені рядки нижче.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>moveLinesUp</command
></cmdsynopsis
></term>
<listitem
><para
>Пересунути позначені рядки вище.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>uniq</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучити рядки-дублікати з позначеного фрагмента тексту або всього документа.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>rtrim</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучити кінцевий пробіл з позначеного фрагмента тексту або всього документа.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>ltrim</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучити початковий пробіл з позначеного фрагмента тексту або всього документа.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>join</command
><arg choice="opt"
>STRING роздільник</arg
></cmdsynopsis
></term>
<listitem
><para
>Об’єднати позначені рядки або рядки у всьому документі. Додатково можна визначити роздільник, наприклад: <userinput
><command
>join</command
> ', '</userinput
> </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>rmblank</command
></cmdsynopsis
></term>
<listitem
><para
>Вилучити всі пробіли з позначеного фрагмента тексту або всього документа.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>alignon</command
></cmdsynopsis
></term>
<listitem>
<para
>Ця команда вирівнює рядки позначеного блоку або усього документа до позиції, яку вказано формальним виразом-аргументом.</para>
<para
>Якщо буде вказано порожній взірець, вирівнювання типово відбудеться за першим непорожнім символом.</para>
<para
>Якщо у взірці буде вказано блок захоплення, вирівнювання відбудеться за захопленим блоком.</para>
<para
><emphasis
>Приклади:</emphasis
></para>
<para
><userinput
>alignon -</userinput
> вставить пробіли до першого «-» у кожному з рядків для вирівнювання усіх дефісів за вказаною позицією.</para>
<para
><userinput
>alignon :\s+(.)</userinput
> вставить пробіли до першого непорожнього символу, який стоїть після двокрапки, для вирівнювання усіх таких символів за однаковою позицією.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>unwrap</command
></cmdsynopsis
></term>
<listitem
><para
>Скасувати перенесення рядків у позначеному фрагменті тексту або всьому документі.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>each</command
><arg choice="req"
>STRING скрипт</arg
></cmdsynopsis
></term>
<listitem
><para
>Викликати вказану як аргумент функцію JavaScript для обробки списку (позначених) рядків і замінити їх повернутим значенням виклику.</para>

<example>
<title
>Об’єднати позначені рядки</title>
<para
><userinput
><command
>each</command
> 'function(lines){return lines.join(", ")}' </userinput
></para>

<para
>Або коротше:</para>
<para
><userinput
><command
>each</command
> 'lines.join(", ")'</userinput
></para>
</example>

</listitem>
</varlistentry>



<varlistentry>
<term
><cmdsynopsis
><command
>filter</command
><arg choice="req"
>STRING скрипт</arg
></cmdsynopsis
></term>
<listitem
><para
>Викликати вказану як аргумент функцію JavaScript для обробки списку (позначених) рядків і вилучити ті з них, для яких буде повернуто false.</para>

<example>
<title
>Вилучити порожні рядки</title>
<para
><userinput
><command
>filter</command
> 'function(1){return 1.length 
> 0;}' </userinput
></para>

<para
>Або коротше:</para>
<para
><userinput
><command
>filter</command
> 'line.length 
> 0'</userinput
></para>
</example>

</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>map</command
><arg choice="req"
>STRING скрипт</arg
></cmdsynopsis
></term>
<listitem
><para
>Викликати вказану як аргумент функцію JavaScript для обробки списку (позначених) рядків і замінити рядок значенням, яке буде повернуто у відповідь на виклик.</para>

<example>
<title
>Вилучити порожні рядки</title>
<para
><userinput
><command
>map</command
> 'function(line){return line.replace(/^s+/,"");}' </userinput
></para>

<para
>Або коротше:</para>
<para
><userinput
><command
>map</command
> 'line.replace(/^s+/,"")'</userinput
></para>
</example>

</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>duplicateLinesUp</command
></cmdsynopsis
></term>
<listitem
><para
>Здублювати позначені рядки над поточним позначеним фрагментом.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>duplicateLinesDown</command
></cmdsynopsis
></term>
<listitem
><para
>Здублювати позначені рядки під поточним позначеним фрагментом.</para>
</listitem>
</varlistentry>

</variablelist>

</sect3>

<sect3 id="advanced-editing-tools-commandline-commands-navigation">
<title
>Команди навігації</title>

<variablelist>

<varlistentry>
<term
><cmdsynopsis
><command
>goto</command
><arg choice="req"
>INT рядок</arg
></cmdsynopsis
></term>
<listitem
><para
>За допомогою цієї команди можна перейти до вказаного рядка.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>grep</command
> <arg choice="req"
>STRING шаблон</arg
> </cmdsynopsis
></term>
<listitem
><para
>Знайти у документі рядки, що відповідають формальному виразу <userinput
>шаблон</userinput
>. Щоб дізнатися більше, зверніться до розділу <xref linkend="regular-expressions"/>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>find</command
><arg choice="req"
>STRING шаблон</arg
></cmdsynopsis
></term>
<listitem
><para
>За допомогою цієї команди можна перейти до першого відповідника рядка <userinput
>шаблон</userinput
> у тексті, відповідно до налаштувань. Перейти до наступних відповідників можна за допомогою пункту меню <menuchoice
><guimenu
>Зміни</guimenu
><guimenuitem
>Знайти далі</guimenuitem
></menuchoice
> (типовим клавіатурним скороченням є <keycap
>F3</keycap
>).</para>
<para
>Команду пошуку можна налаштувати додаванням двокрапки, за якою можна вказати один або декілька параметрів, у формі <userinput
>find:параметри шаблон</userinput
>. Серед можливих параметрів:</para>

<variablelist>

<varlistentry>
<term
><userinput
>b</userinput
></term>
<listitem
><para
>Пошук назад.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>c</userinput
></term>
<listitem
><para
>Шукати від позиції курсора.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>e</userinput
></term>
<listitem
><para
>Шукати лише у позначеному фрагменті.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>r</userinput
></term>
<listitem
><para
>Пошук за формальним виразом. Якщо встановлено цей прапорець, ви зможете використовувати параметр <userinput
>\N</userinput
>, де N — номер підрядка у рядку «замінник».</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>s</userinput
></term>
<listitem
><para
>Виконати пошук з врахуванням регістру.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>w</userinput
></term>
<listitem
><para
>Шукати лише цілі слова.</para
></listitem>
</varlistentry>

</variablelist>
</listitem>

</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>ifind</command
><arg choice="req"
>STRING шаблон</arg
></cmdsynopsis
></term>
<listitem
><para
>За допомогою цієї команди можна виконати <quote
>інтерактивний</quote
> пошук. Ви можете налаштувати пошук додаванням одного або декількох параметрів після символу двокрапки, ось так: <userinput
>ifind:параметри шаблон</userinput
>. Серед можливих параметрів: <variablelist>
<varlistentry>
<term
><userinput
>b</userinput
></term>
<listitem
><para
>Пошук назад.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>r</userinput
></term>
<listitem
><para
>Виконати пошук за вказаним формальним виразом.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>s</userinput
></term>
<listitem
><para
>Виконати пошук з врахуванням регістру.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>c</userinput
></term>
<listitem
><para
>Шукати від позиції курсора.</para
></listitem>
</varlistentry>

</variablelist>
</para
></listitem>
</varlistentry>

</variablelist>

</sect3>


<sect3 id="advanced-editing-tools-commandline-commands-basic">
<title
>Команди базового керування редактором (залежать від використаного у програмі компонента редактора)</title>

<variablelist>

<varlistentry>
<term
><cmdsynopsis
><command
>w</command
></cmdsynopsis
></term>
<listitem
><para
>Зберегти поточний документ.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>wa</command
></cmdsynopsis
></term>
<listitem
><para
>Зберегти всі поточні відкриті документи.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>q</command
></cmdsynopsis
></term>
<listitem
><para
>Закрити поточний документ.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>qa</command
></cmdsynopsis
></term>
<listitem
><para
>Закрити всі відкриті документи.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>wq</command
></cmdsynopsis
></term>
<listitem
><para
>Зберегти і закрити поточний документ.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>wqa</command
></cmdsynopsis
></term>
<listitem
><para
>Зберегти і закрити всі поточні відкриті документи.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>x</command
></cmdsynopsis
></term>
<listitem
><para
>Зберегти і закрити поточний документ, лише якщо його було змінено. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>x</command
></cmdsynopsis
></term>
<listitem
><para
>Зберегти і закрити всі поточні відкриті документ, лише якщо до них було внесено зміни.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>bp</command
></cmdsynopsis
></term>
<listitem
><para
>Перейти до попереднього документа у списку документів. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>bn</command
></cmdsynopsis
></term>
<listitem
><para
>Перейти до наступного документа у списку документів. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>new</command
></cmdsynopsis
></term>
<listitem
><para
>Відкрити новий документ на новій панелі, створеній горизонтальним поділом поточної панелі редагування. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>vnew</command
></cmdsynopsis
></term>
<listitem
><para
>Відкрити новий документ на новій панелі, створеній вертикальним поділом поточної панелі редагування. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>e</command
></cmdsynopsis
></term>
<listitem
><para
>Перезавантажити поточний документ, якщо його було змінено на диску. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>enew</command
></cmdsynopsis
></term>
<listitem
><para
>Редагувати новий документ. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>print</command
></cmdsynopsis
></term>
<listitem
><para
>Відкрити діалогове вікно друку, за допомогою якого ви зможете надрукувати поточний документ. </para
></listitem>
</varlistentry>

</variablelist>

</sect3>


</sect2>

</sect1>

<sect1 id="advanced-editing-tools-code-folding">
<title
>Використання обгортки коду</title>

<para
>За допомогою згортання коду ви можете приховувати частини документа у вікні редактора: так легше працювати з великими документами. У &kappname; діапазони рядків, придатні для згортання, визначаються правилами підсвічування синтаксису, тому згортання можливе не для всіх форматів файлів, — типово, згортання працює у коді програм, розмітки XML та подібних форматів. Під час редагування коду визначення підсвічування також можна вручну визначати діапазони згортання, зазвичай, такі діапазони визначаються за допомогою ключових слів <userinput
>BEGIN</userinput
> і <userinput
>END</userinput
>.</para>

<para
>Щоб скористатися можливостями згортання, слід задіяти позначки згортання за допомогою пункту меню <menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Показувати маркери згортання</guimenuitem
></menuchoice
>, якщо цих позначок ще не показано у вікні редактора. На панелі позначок згортання з лівого боку екрана буде показано у графічному вигляді діапазони рядків, які можна згорнути. Символи-трикутники позначатимуть можливі дії з вказаним діапазоном: трикутник, вершина якого вказує вниз, означатиме розгорнутий діапазон рядків, — натискання позначки трикутника призведе до згортання діапазону, — тепер програма показуватиме трикутник з вершиною, спрямованою праворуч.</para>
<!--FIXME change Three to Four when Unfold Toplevel Nodes action is back-->
<para
>Передбачено три пункти меню, за допомогою яких можна керувати станом областей згортання коду, їх перелік можна знайти у <link linkend="view-code-folding"
>розділі, присвяченому меню</link
>. </para>

<para
>Програма запам’ятовує згортання після закриття файла. Коли ви наступного разу відкриєте файл для редагування, згорнуті вузли залишатимуться згорнутими. Це також стосується і дій з перезавантаження даних файлів.</para>

<para
>Якщо ви не бажаєте користуватися можливістю згортання коду, ви можете зняти позначку з пункту <guilabel
>Показувати маркери згортання (якщо наявні)</guilabel
> на сторінці <link linkend="appearance"
>Вигляд</link
> налаштування редактора.</para>

</sect1>

</chapter>
