# Додаткові інструменти редагування

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

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

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

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

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

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

Щоб додати позначки коментарів, скористайтеся пунктом меню Інструменти Закоментувати або відповідною комбінацією клавіш, типовою комбінацією є &Ctrl;D.

Щоб вилучити позначки коментарів, скористайтеся пунктом меню Інструменти Розкоментувати або відповідною комбінацією клавіш, типовою комбінацією є &Ctrl;&Shift;D.

## Командний рядок компонента редактора

У компонент редактора &kappname; вбудовано інструмент для роботи з командним рядком, за допомогою якого ви зможете виконувати різноманітні дії за мінімального графічного інтерфейсу. Командний рядок — це текстова панель у нижній частині вікна редактора, щоб увімкнути показ цієї панелі скористайтеся пунктом меню Перегляд Перемкнутися до командного рядка або скористайтеся клавіатурним скороченням (типовим клавіатурним скороченням є F7). У редакторі передбачено набір команд, документацію з яких наведено нижче, та додаткові команди, за допомогою яких можна керувати додатками до програми.

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

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

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

### Стандартні команди командного рядка

### Типи аргументів

BOOLEAN

- Цей тип використовується для команд, які вмикають або вимикаю певні налаштування. Можливими значеннями таких параметрів є `on`, `off`, `true`, `false`, `1` і `0`.

INTEGER

- Ціле число.

STRING

- Рядок, обмежений одинарними лапками (') або подвійними лапками ("), якщо у ньому містяться пробіли.

#### Команди налаштування редактора

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

    set-tab-widthINTEGER ширина

- Встановлює ширину табуляції у значення `ширина`.

    set-indent-widthINTEGER ширина

- Встановлює відступ у значення кількості пробілів, визначене параметром `ширина`. Використовується, лише якщо увімкнено відступи з пробілів.

    set-word-wrap-columnINTEGER довжина

- Встановлює для параметра максимальної довжини рядка для примусового перенесення значення `довжина`. Цей параметр використовується, якщо увімкнено автоматичне розбиття тексту на рядки.

    set-icon-borderBOOLEAN вмикання

- Встановлює видимість бічної смужки піктограм.

    set-folding-markersBOOLEAN вмикання

- Встановлює значення видимості позначок панелі згортання.

    set-line-numbersBOOLEAN вмикання

- Встановлює значення видимості панелі номерів рядків.

    set-replace-tabsBOOLEAN вмикання

- Якщо має значення «true», введені вами знаки табуляції буде замінено пробілами.

    set-remove-trailing-spaceBOOLEAN вмикання

- Якщо цей параметр буде увімкнено, після переведення курсора на інших рядок пробіли наприкінці поточного рядка вилучатимуться.

    set-show-tabsBOOLEAN вмикання

- Якщо буде увімкнено цей параметр, символи табуляції і пробіли наприкінці рядка буде показано у вигляді маленьких крапок.

    set-show-indentBOOLEAN вмикання

- Якщо буде увімкнено цей параметр, відступи буде показано вертикальною крапчастою лінією.

    set-indent-spacesBOOLEAN вмикання

- Якщо буде увімкнено цей параметр, редактор робитиме відступ на `indent-width` пробілів, замість символу табуляції, під час переходу на наступний рівень відступу.

    set-mixed-indentBOOLEAN вмикання

- Якщо буде увімкнено цей параметр, &kappname; використовуватиме суміш з символів табуляції і пробілів для додавання відступів. Ширина кожного з рівнів відступу визначатиметься значенням параметра `indent-width`, загальний же відступ буде оптимізовано так, щоб у ньому використовувалася максимальна кількість символів табуляції.

  Після виконання цієї команди буде увімкнено створення відступів пробілами, якщо ширину відступу не було вказано, буде встановлено значення ширини відступу у половину значення параметра документа `tab-width` на час виконання команди.

    set-word-wrapBOOLEAN вмикання

- Встановлює значення для динамічного перенесення слів у `вмикання` (true або false)

    set-replace-tabs-saveBOOLEAN вмикання

- Якщо увімкнути цей параметр, під час збереження документа символи табуляції буде замінено на пробіли.

    set-remove-trailing-space-saveBOOLEAN вмикання

- Якщо увімкнути цей параметр, під час збереження документа пробіли наприкінці рядків документа будуть вилучатися.

    set-indent-modeSTRING назва

- Встановлює режим автоматичного встановлення відступів у значення `назва`. Якщо програмі не вдасться розпізнати параметр `назва`, буде встановлено режим 'none'. Коректними значеннями режиму є «none», «normal», «cstyle», «haskell», «lilypond», «lisp», «python», «ruby» і «xml».

    set-auto-identBOOLEAN скрипт

- Увімкнути або вимкнути автоматичне встановлення відступів.

    set-highlightSTRING підсвічування

- Визначає систему підсвічування синтаксису для поточного документа. Параметром команди має бути коректна назва підсвічування у тому вигляді, у якому ця система фігурує у меню Інструменти Підсвічування. У цій команді передбачено автоматичне доповнення параметра за списком.

    reload-scripts

- Перезавантажити всі скрипти JavaScript, використані &kate;, зокрема скрипти встановлення відступів та скрипти командного рядка.

    set-modeSTRING режим

- Вибрати схему типів файлів для поточного документа.

    nn[oremap]STRING початкова STRING відображена

- Відобразити послідовність символів `початкова` на послідовність `відображена`.

#### Команди редагування

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

    indent

- Додає відступ у позначені рядки або поточний рядок.

    unindent

- Вилучає початковий відступ з позначених рядків або поточного рядка.

    cleanindent

- Вилучає відступи для позначених рядків або поточного рядка відповідно до параметрів відступів поточного документа.

    comment

- Додає позначки коментаря, які роблять позначений фрагмент тексту, позначені рядки або поточний рядок коментарями, відповідно до формату тексту, який визначено у параметрах підсвічування синтаксису поточного документа.

    uncomment

- Вилучає позначки коментаря, які роблять позначений фрагмент тексту, позначені рядки або поточний рядок коментарями, відповідно до формату тексту, який визначено у параметрах підсвічування синтаксису поточного документа.

    kill-line

- Вилучає поточний рядок.

    replace STRING шаблон STRING замінник

- Замінює текст, що відповідає `шаблону`, на текст, вказаний у `заміннику`. Якщо вам потрібно включити пробіл у `шаблон`, вам слід взяти як `шаблон`, так і `замінник` у одинарні або подвійні лапки. Якщо у команді не буде лапок, перше зі слів-параметрів вважатиметься `шаблоном`, а решта — `замінником`. Якщо параметр `замінник` буде порожнім, всі рядки, які відповідають `шаблону` буде вилучено з тексту.

  Ви можете вказати прапорці налаштування пошуку за допомогою додавання двокрапки, за якою слід вказати одну або декілька літер, кожна з яких відповідатиме за налаштування. Команда викладатиме так: `replace:параметри шаблон замінник`. Можливі параметри:

  `b`

- Пошук назад.

`c`

- Шукати від позиції курсора.

`e`

- Шукати лише у позначеному фрагменті.

`r`

- Пошук за формальним виразом. Якщо встановлено цей прапорець, ви зможете використовувати параметр `\N`, де N — номер підрядка у рядку «замінник».

`s`

- Виконати пошук з врахуванням регістру.

`p`

- Запитувати про дозвіл на заміну наступного елемента.

`w`

- Шукати лише цілі слова.

    dateSTRING формат

- Вставляє дату/час у форматі, визначеному параметром `формат`, або у форматі yyyy-MM-dd hh:mm:ss, якщо рядок формату не буде вказано. Під час обробки рядка `формат` буде використано такі перетворення:

  `d` | Номер дня без початкового нуля (1-31).
  `dd` | Номер дня з початковим нулем (01-31).
  `ddd` | Скорочена локалізована назва дня тижня (наприклад «пн» або «нд»).
  `dddd` | Довга локалізована назва дня (наприклад «понеділок» або «неділя»).
  `M` | Номер місяця без початкового нуля (1-12).
  `MM` | Номер місяця з початковим нулем (01-12).
  `MMMM` | Повна локалізована назва місяця (наприклад, «січень» або «грудень»).
  `MMM` | Скорочена локалізована назва місяця (наприклад «січ» або «гру»).
  `yy` | Рік як двоцифрове значення (00-99).
  `yyyy` | Рік як чотирицифрове значення (1752-8000).
  `h` | Години без початкового нуля (0..23 або 1..12 з показом до опівдня/після опівдня).
  `hh` | Години з початковим нулем (00..23 або 01..12 з показом до опівдня/після опівдня).
  `m` | Хвилини без початкового нуля (0..59).
  `mm` | Хвилини з початковим нулем (00..59).
  `s` | Секунди без початкового нуля (0..59).
  `ss` | Секунди з початковим нулем (00..59).
  `z` | Мілісекунди без початкових нулів (0..999).
  `zzz` | Мілісекунди з початковими нулями (000..999).
  `AP` | Використовувати показ у форматі AM/PM (до опівдня/після опівдня). AP буде замінено на рядок «AM» або рядок «PM».
  `ap` | Використовувати показ у форматі am/pm (до опівдня/після опівдня). ap буде замінено на рядок «am» або рядок «pm».

    charSTRING ідентифікатор

- За допомогою цієї команди можна вводити символи за їх числовими ідентифікаторами у десятковій, вісімковій або шістнадцятковій формі. Щоб скористатися нею, відкрийте діалогове вікно редагування команди і введіть команду `char: [число]` у поле для введення, а потім натисніть кнопку Гаразд.

  ##### Приклади команди `char`

  Ввід: `char:234`

  Вивід: `ê`

  Ввід: `char:0x1234`

  Вивід: `ሴ`

`s///[ig]` `%s///[ig]`

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

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

  Щоб знайти символ `(` або символ `)`, вам слід екранувати ці символи за допомогою зворотної навскісної риски: `\(\)`

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

  ##### Заміна тексту у поточному рядку

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

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

  ##### Заміна тексту у всьому файлі

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

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

  ##### Складніший приклад

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

  Припустімо, що у вас є такий рядок:

      void MyClass::DoStringOps( String      &foo, String &bar, String *p, int  &a, int &b )

  Тепер вам здається, що цей код виглядає кострубато: ви вирішили скористатися ключовим словом `const` для всіх параметрів address of, у яких назві аргументу передує оператор &. Ви також бажаєте вилучити зайві пробіли так, щоб між будь-якими двома словами був лише один символ пробілу.

  Відкрийте діалогове вікно редагування команди і введіть таку команду: `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` і лічильника `+`.

    sort

- Впорядковує позначений фрагмент тексту або весь текст у документі.

    natsort

- Впорядковує позначені рядки або увесь документ у природному порядку.

  ##### `sort` порівняно з `natsort`

  `sort(a10, a1, a2)` виведе `a1, a10, a2`

  `sort(a10, a1, a2)` виведе `a1, a10, a2`

    moveLinesDown

- Пересунути позначені рядки нижче.

    moveLinesUp

- Пересунути позначені рядки вище.

    uniq

- Вилучити рядки-дублікати з позначеного фрагмента тексту або всього документа.

    rtrim

- Вилучити кінцевий пробіл з позначеного фрагмента тексту або всього документа.

    ltrim

- Вилучити початковий пробіл з позначеного фрагмента тексту або всього документа.

    joinSTRING роздільник

- Об’єднати позначені рядки або рядки у всьому документі. Додатково можна визначити роздільник, наприклад: ``join` ', '`

    rmblank

- Вилучити всі пробіли з позначеного фрагмента тексту або всього документа.

    unwrap

- Скасувати перенесення рядків у позначеному фрагменті тексту або всьому документі.

    eachSTRING скрипт

- Викликати вказану як аргумент функцію JavaScript для обробки списку (позначених) рядків і замінити їх повернутим значенням виклику.

  ##### Об’єднати позначені рядки

  ``each` 'function(lines){return lines.join(", ")}'`

  Або коротше:

  ``each` 'lines.join(", ")'`

    filterSTRING скрипт

- Викликати вказану як аргумент функцію JavaScript для обробки списку (позначених) рядків і вилучити ті з них, для яких буде повернуто false.

  ##### Вилучити порожні рядки

  ``filter` 'function(1){return 1.length > 0;}'`

  Або коротше:

  ``filter` 'line.length > 0'`

    mapSTRING скрипт

- Викликати вказану як аргумент функцію JavaScript для обробки списку (позначених) рядків і замінити рядок значенням, яке буде повернуто у відповідь на виклик.

  ##### Вилучити порожні рядки

  ``map` 'function(line){return line.replace(/^s+/,"");}'`

  Або коротше:

  ``map` 'line.replace(/^s+/,"")'`

    duplicateLinesUp

- Здублювати позначені рядки над поточним позначеним фрагментом.

    duplicateLinesDown

- Здублювати позначені рядки під поточним позначеним фрагментом.

#### Команди навігації

    gotoINT рядок

- За допомогою цієї команди можна перейти до вказаного рядка.

    grep STRING шаблон

- Знайти у документі рядки, що відповідають формальному виразу `шаблон`. Щоб дізнатися більше, зверніться до розділу regular-expressions.

    findSTRING шаблон

- За допомогою цієї команди можна перейти до першого відповідника рядка `шаблон` у тексті, відповідно до налаштувань. Перейти до наступних відповідників можна за допомогою пункту меню Зміни Знайти далі (типовим клавіатурним скороченням є F3).

  Команду пошуку можна налаштувати додаванням двокрапки, за якою можна вказати один або декілька параметрів, у формі `find:параметри шаблон`. Серед можливих параметрів:

  `b`

- Пошук назад.

`c`

- Шукати від позиції курсора.

`e`

- Шукати лише у позначеному фрагменті.

`r`

- Пошук за формальним виразом. Якщо встановлено цей прапорець, ви зможете використовувати параметр `\N`, де N — номер підрядка у рядку «замінник».

`s`

- Виконати пошук з врахуванням регістру.

`w`

- Шукати лише цілі слова.

    ifindSTRING шаблон

- За допомогою цієї команди можна виконати інтерактивний пошук. Ви можете налаштувати пошук додаванням одного або декількох параметрів після символу двокрапки, ось так: `ifind:параметри шаблон`. Серед можливих параметрів:

  `b`

- Пошук назад.

`r`

- Виконати пошук за вказаним формальним виразом.

`s`

- Виконати пошук з врахуванням регістру.

`c`

- Шукати від позиції курсора.

#### Команди базового керування редактором (залежать від використаного у програмі компонента редактора)

    w

- Зберегти поточний документ.

    wa

- Зберегти всі поточні відкриті документи.

    q

- Закрити поточний документ.

    qa

- Закрити всі відкриті документи.

    wq

- Зберегти і закрити поточний документ.

    wqa

- Зберегти і закрити всі поточні відкриті документи.

    x

- Зберегти і закрити поточний документ, лише якщо його було змінено.

    x

- Зберегти і закрити всі поточні відкриті документ, лише якщо до них було внесено зміни.

    bp

- Перейти до попереднього документа у списку документів.

    bn

- Перейти до наступного документа у списку документів.

    new

- Відкрити новий документ на новій панелі, створеній горизонтальним поділом поточної панелі редагування.

    vnew

- Відкрити новий документ на новій панелі, створеній вертикальним поділом поточної панелі редагування.

    e

- Перезавантажити поточний документ, якщо його було змінено на диску.

    enew

- Редагувати новий документ.

    print

- Відкрити діалогове вікно друку, за допомогою якого ви зможете надрукувати поточний документ.

## Використання обгортки коду

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

Щоб скористатися можливостями згортання, слід задіяти позначки згортання за допомогою пункту меню Перегляд Показувати маркери згортання, якщо цих позначок ще не показано у вікні редактора. На панелі позначок згортання з лівого боку екрана буде показано у графічному вигляді діапазони рядків, які можна згорнути. Символи-трикутники позначатимуть можливі дії з вказаним діапазоном: трикутник, вершина якого вказує вниз, означатиме розгорнутий діапазон рядків, — натискання позначки трикутника призведе до згортання діапазону, — тепер програма показуватиме трикутник з вершиною, спрямованою праворуч.

Передбачено три пункти меню, за допомогою яких можна керувати станом областей згортання коду, їх перелік можна знайти у розділі, присвяченому меню.

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

Якщо ви не бажаєте користуватися можливістю згортання коду, ви можете зняти позначку з пункту Показувати маркери згортання (якщо наявні) на сторінці Вигляд налаштування редактора.