<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 >ê</computeroutput ></para> <para >Ввід: <userinput >char:0x1234</userinput ></para> <para >Вивід: <computeroutput >ሴ</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 &foo, String &bar, String *p, int &a, int &b )</programlisting> </para> <para >Тепер вам здається, що цей код виглядає кострубато: ви вирішили скористатися ключовим словом <constant >const</constant > для всіх параметрів <quote >address of</quote >, у яких назві аргументу передує оператор &. Ви також бажаєте вилучити зайві пробіли так, щоб між будь-якими двома словами був лише один символ пробілу.</para> <para >Відкрийте діалогове вікно редагування команди і введіть таку команду: <userinput >s/\s+(\w+)\s+(&)/ const \1 \2/g</userinput >. Натисніть кнопку <guibutton >Гаразд</guibutton >. Літера <userinput >g</userinput > наприкінці виразу наказує програмі перебудовувати формальний вираз для кожного зі знайдених елементів, щоб зберегти <emphasis >зворотні посилання</emphasis >.</para> <para >Вивід: <computeroutput >void MyClass::DoStringOps( const String &foo, const String &bar String *p, const int &a, const int &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>
Generated by dwww version 1.15 on Sun Jun 30 00:15:42 CEST 2024.