Erlend
Hamberg
ehamberg@gmail.com
Юрій
Чорноіван

    yurchor@ukr.net

Переклад українською

# Режим введення VI

## Режим введення VI

Метою використання режиму VI є не повна заміна Vim і підтримка всіх можливостей Vim. Його метою є використання способу редагування текстів Vim, — та вивчених прийомів користування Vim, — у програмах, які використовують текстовий редактор &kate; для вбудованих режимів редагування.

Режим VI чудово інтегрується у сторонні програми і відхиляється від поведінки Vim там, де це має сенс. Наприклад, команда ``:w`` у режимі VI &kate; відкриває діалогове вікно збереження файла.

Увімкнути режим VI для всіх нових панелей редагування можна за допомогою пункту меню Параметри Налаштувати &kate;... Редагування Режим вводу VI. На цій вкладці ви зможете встановити параметри роботи режиму введення VI, ви значити або змінити прив’язки клавіш у цьому режимі. Увімкнути або вимкнути режим введення VI можна також за допомогою пункту Режим вводу VI меню Зміни. (Типовим клавіатурним скороченням є Meta&Ctrl;V, де Meta зазвичай відповідає клавіша Windows).

### Несумісності з Vim

З Vim несумісні лише декілька можливостей режиму VI &kate;, якщо не брати до уваги багатьох речей, які просто не реалізовано. Нижче наведено список цих можливостей з поясненнями причин несумісності.

- &kate;: U і &Ctrl;R відповідають повторенню дії.

  Vim: &Ctrl;R звичайне повторення дії, U призначено для скасування всіх останніх змін у одному рядку.

  Причиною того, що U прив’язано до повторення дії у режимі VI &kate;, є те, що клавіатурне скорочення &Ctrl;R типово зайнято у &kate; заміною (пошук з заміною). Типово режим VI не змінює клавіатурні скорочення &kate; (ви можете зробити це вручну за допомогою сторінки Параметри Налаштувати &kate;... Редагування Режим вводу Vi), тому дія з повернення редагування має бути доступна у «звичайному» режимі натискання комбінацій клавіш. Окрім того, дія команди U у Vim не дуже добре збігається з внутрішньою системою скасування &kate;, отже її підтримка є доволі складним завданням.

- &kate;: ``print`` відкриває діалогове вікно Друк.

  Vim: ``print`` друкує рядки вказаного діапазону, подібно до свого дідуся, ed.

  Команди на зразок ``:print`` доступні не лише у режимі VI, але і користувачам «звичайних» режимів &kate;. Тому ``:print`` відкриває діалогове вікно друку відповідно до принципів однорідності, замість імітації поведінки Vim.

- &kate;: Y копіює дані до кінця рядка.

  Vim: Y копіює весь рядок, подібно до команди yy.

  Поведінка VI для команди Y насправді є вадою. Для обох команд, зміни і вилучення, команди cc/ dd виконують дію на поточному рядку, а C/D виконує дію над даними від позиції курсора до кінця рядка. Але обидві команди, yy і Y, копіюють поточний рядок. У режимі VI &kate; Y копіює дані до кінця рядка. Така поведінка описана як «логічніша» у документації до Vim.

- &kate;: O і o відкривають [кількість] нових рядків і переводять програму у режим вставлення.

  Vim: O і o відкривають нових рядок і вставляють текст [кількість] разів з виходом з режиму вставлення.

  Так зроблено в результаті узагальнення досвіду багатьох людей, які висловлювали здивування поведінкою Vim на каналі vim у IRC (#vim на freenode).

### Перемикання режимів

- Звичайний режим надає вам змогу вводити команди навігації або редагування документа і є типовим. Повернутися до цього режиму з будь-якого іншого режиму можна натисканням клавіші &Esc;.

- Візуальний режим надає вам змогу позначати текст у документі. У цьому режимі можна користуватися більшістю команд звичайного режиму. Ви можете перевести команду у цей режим натисканням клавіші v для позначення символів або V для позначення рядків.

- Режим вставлення надає вам змогу редагувати документ безпосередньо. Ви можете перевести програму у цей режим натисканням клавіші i або за допомогою одної з декількох інших команд, наведених нижче.

- Командний режим надає вам змогу віддавати певні команди. Натисніть :, вкажіть команду і натисніть клавішу &Enter;.

### Підтримувані команди звичайного/візуального режимів

a | Перейти у режим вставлення, додавати символи після курсора
A | Перейти у режим вставлення, додавати символи після рядка
i | Перейти у режим вставлення, додавати символи перед курсором
v | Перейти у візуальний режим; позначати символи
V | Перейти у візуальний режим; позначати рядки
o | Додати новий рядок під поточним
O | Додати новий рядок перед поточним
J | Об'єднати рядки
c | Змінити: з наступним визначенням позиції для вилучення і переходом у режим вставлення
C | Змінити до кінця рядка: вилучити текст до кінця рядка і увійти до режиму вставлення
cc | Змінити рядок: вилучити рядок і перейти у режим вставлення
s | Замінити символ
S | Замінити рядок
dd | Вилучити рядок
d | З наступним визначенням позиції для вилучення
D | Вилучити до кінця рядка
x | Вилучити символ праворуч від курсора
X | Вилучити символі ліворуч від курсора
gu | З визначенням позиції для встановлення нижнього регістру
guu | Перевести всі символи поточного рядка у нижній регістр
gU | З визначенням позиції для встановлення верхнього регістру
gUU | Перетворити символи поточного рядка на символи у верхньому регістрі
y | З визначенням позиції для копіювання
yy | Копіювати рядок
Y | Копіювати рядок
p | Вставити після курсора
P | Вставити перед курсором
r | З визначенням символу, який слід замінити символ за курсором
: | Увійти у командний режим
/ | Шукати
u | Вернути
&Ctrl;r | Повторити
U | Повторити
m | Встановити позначку (може бути використано для наступних пересувань текстом)
n | Знайти наступне
N | Знайти попереднє
>> | Збільшити відступ рядка
<< | Зменшити відступ рядка
> | Збільшити відступ рядків
< | Зменшити відступ рядків
&Ctrl;f | Сторінка вниз
&Ctrl;b | Сторінка вгору
ga | Вивести значення ASCII для символу
. | Повторити останню зміну
== | Команда вирівнювання рядка
= | Команда вирівнювання рядків
~ | Змінити регістр поточного символу

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

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

h | Ліворуч
← | Ліворуч
&Backspace; | Ліворуч
j | Вниз
↓ | Вниз
k | Вгору
↑ | Вгору
l | Праворуч
→ | Праворуч
Пробіл | Праворуч
$ | У кінець рядка
End | У кінець рядка
0 | До першого символу рядка (позиція 0)
Home | До першого символу рядка
^ | До першого непорожнього символу рядка
f | З додаванням символу, до якого слід перейти праворуч від курсора
F | З додаванням символу, до якого слід перейти ліворуч від курсора
t | З додаванням символу, до якого слід перейти праворуч від курсора, з розташуванням курсора перед цим символом
T | З додаванням символу, до якого слід перейти ліворуч від курсора, з розташуванням курсора перед цим символом
gg | До першого рядка
G | До останнього рядка
w | До наступного слова
W | До наступного слова, відокремленого пробілом
b | До попереднього слова
B | До попереднього слова, відокремленого пробілом
e | До кінця слова
E | До кінця слова, відокремленого пробілом
ge | До кінця попереднього слова
gE | До кінця попереднього слова, відокремленого пробілом
| | З визначенням номера позиції у рядку для переходу
% | З визначенням елемента для переходу
` | До позначки
‘ | До першого непробільного символу рядка з позначкою
[[ | До попередньої початкової дужки
]] | До наступної початкової дужки
[] | До попередньої завершальної дужки
][ | До наступної завершальної дужки

### Підтримувані текстові об’єкти

Цими командами можна скористатися для позначення частин тексту документа.

iw | Блок слова: слово з пробілами
aw | Слово: слово без пробілів
i" | Від попередніх подвійних лапок (`"`) до наступних подвійних лапок, разом з лапками
a” | Від попередніх подвійних лапок (`"`) до наступних подвійних лапок, без лапок
i' | Від попередніх одинарних лапок (`"`) до наступних одинарних лапок, разом з лапками
a' | Від попередніх одинарних лапок (`"`) до наступних одинарних лапок, без лапок
i( | Від попередньої початкової круглої дужки [`(`] до наступної завершальної круглої дужки [`)`], разом з дужками
a( | Від попередньої початкової круглої дужки [`(`] до наступної завершальної круглої дужки [`)`], без дужок
i[ | Від попередньої початкової квадратної дужки (`[`) до наступної завершальної квадратної дужки (`]`), разом з дужками
a[ | Від попередньої початкової квадратної дужки (`[`) до наступної завершальної квадратної дужки (`]`), без дужок

### Підтримувані команди режиму вставлення

&Ctrl;d | Зменшити відступ
&Ctrl;t | Збільшити відступ
&Ctrl;e | Вставити знизу
&Ctrl;y | Вилучити слово
&Ctrl;w | Вилучити слово
&Ctrl;Home | Перейти до першого символу документа

### Текстовий об’єкт, обмежений комами

Цього об’єкта немає у Vim. За допомогою текстового об’єкта, обмеженого комами, просто змінювати списки параметрів у C-подібних мовах та інших списках, поділених комами. Таким текстовим об’єктом є фрагмент тексту між двома комами або між комою і дужкою. На нашій ілюстрації показано три діапазони текстових об’єктів, позначені червоним тлом.

Приклад відокремлених комами об’єктів
Приклад відокремлених комами об’єктів

Відокремлені комами текстові об’єкти визначають діапазони даних. Якщо, наприклад, курсор перебуває у arg2, натискання клавіш ci, (змінити між комами) вилучить double arg2 і розташує курсор між двома комами у режимі вставлення. Це дуже зручний спосіб зміни параметрів функцій.

### Нереалізовані можливості

Як ми вже зазначали раніше, метою режиму VI &kate; не є 100% підтримка можливостей Vim, хоча деякі з корисних функцій все ж ще не реалізовано:

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

- Доступність команд ex у програмах, відмінних від самої &kate;.

- Код пошуку потребує удосконалення, а команди * і # мають виконувати пошук за формальним виразом.