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

Режим введення VI
Метою використання режиму VI є не повна заміна Vim і підтримка всіх можливостей Vim. Його метою є використання способу редагування текстів Vim, — та вивчених прийомів користування Vim, — у програмах, які використовують текстовий редактор для вбудованих режимів редагування.
Режим VI чудово інтегрується у сторонні програми і відхиляється від поведінки Vim там, де це має сенс. Наприклад, команда :w у режимі VI відкриває діалогове вікно збереження файла.
Увімкнути режим VI для всіх нових панелей редагування можна за допомогою пункту меню Параметри Налаштувати ... Редагування Режим вводу VI. На цій вкладці ви зможете встановити параметри роботи режиму введення VI, ви значити або змінити прив’язки клавіш у цьому режимі. Увімкнути або вимкнути режим введення VI можна також за допомогою пункту Режим вводу VI меню Зміни. (Типовим клавіатурним скороченням є Meta V, де Meta зазвичай відповідає клавіша Windows).
На відміну від більшості клавіатурних скорочень , багато клавіатурних команд режиму Vi є залежними від регістру символів. Це означає, що команди y і Y мають зовсім різне призначення. Щоб ввести команду y (копіювати), переконайтеся, що режим Caps Lock (літер верхнього регістру) вимкнено і натисніть клавішу Y. Щоб ввести команду Y (копіювати до кінця рядка), скористайтеся комбінацією клавіш Y.
Висловлене вище зауваження не стосується команд, у яких використовується клавіша. Ці команди можна ввести у будь-якому з режимів Caps Lock без натискання , але у частині команд використовується комбінація з , після якої слід натиснути іншу клавішу, регістр якої слід брати до уваги. Наприклад, щоб ввести команду «W, h» (перемкнутися на праву панель у розділеному перегляді), переконайтеся що режим літер верхнього регістру вимкнено, натисніть комбінацію клавіш W, відпустіть клавіш, а потім натисніть клавішу H.

Несумісності з Vim
З Vim несумісні лише декілька можливостей режиму VI , якщо не брати до уваги багатьох речей, які просто не реалізовано. Нижче наведено список цих можливостей з поясненнями причин несумісності.
: U і R відповідають повторному виконанню скасованої команди.
Vim: R звичайне повторення дії, U призначено для скасування всіх останніх змін у одному рядку.
Причиною того, що U прив’язано до повторення дії у режимі VI , є те, що клавіатурне скорочення R типово зайнято у заміною (пошук з заміною). Типово режим VI не змінює клавіатурні скорочення (ви можете зробити це вручну за допомогою сторінки Параметри Налаштувати ... Редагування Режим вводу Vi), тому дія з повернення редагування має бути доступна у «звичайному» режимі натискання комбінацій клавіш. Окрім того, дія команди U у Vim не дуже добре збігається з внутрішньою системою скасування , отже її підтримка є доволі складним завданням.
: print відкриває діалогове вікно Друк.
Vim: print друкує рядки вказаного діапазону, подібно до свого дідуся, ed.
Команди на зразок :print доступні не лише у режимі VI, але і користувачам «звичайних» режимів . Тому :print відкриває діалогове вікно друку відповідно до принципів однорідності, замість імітації поведінки Vim.
: Y копіює дані до кінця рядка.
Vim: Y копіює весь рядок, подібно до команди yy.
Поведінка VI для команди Y насправді є вадою. Для обох команд, зміни і вилучення, команди cc/ dd виконують дію на поточному рядку, а C/D виконує дію над даними від позиції курсора до кінця рядка. Але обидві команди, yy і Y, копіюють поточний рядок. У режимі VI Y копіює дані до кінця рядка. Така поведінка описана як «логічніша» у документації до Vim.
: O і o відкривають [кількість] нових рядків і переводять програму у режим вставлення.
Vim: O і o відкривають нових рядок і вставляють текст [кількість] разів з виходом з режиму вставлення.
Так зроблено в результаті узагальнення досвіду багатьох людей, які висловлювали здивування поведінкою Vim на каналі vim у IRC (#vim на freenode).

Перемикання режимів
Звичайний режим надає вам змогу вводити команди навігації або редагування документа і є типовим. Повернутися до цього режиму з будь-якого іншого режиму можна натисканням клавіші .
Візуальний режим надає вам змогу позначати текст у документі. У цьому режимі можна користуватися більшістю команд звичайного режиму. Ви можете перевести команду у цей режим введенням літери v для позначення символів або V для позначення рядків.
Режим вставлення надає вам змогу редагувати документ безпосередньо. Ви можете перевести програму у цей режим натисканням клавіші i або за допомогою одної з декількох інших команд, наведених нижче.
Режим команд відкриває панель командного рядка . За допомогою цієї панелі ви зможете виконувати значну частину команд, доступних у реалізаціях Vi, а також деякі специфічні для команди. Докладніше про ці команди можна дізнатися з розділу . Користуватися режимом команд просто: натисніть клавішу :, вкажіть команду і натисніть клавішу .

Інтеграція з командами Kate
Програма автоматично перемикатиметься на візуальний режим, якщо фрагмент тексту буде позначено за допомогою миші. Також перемикання відбуватиметься у разі використання функцій Kate, які позначають фрагменти тексту, зокрема «Вибрати все» (вибір або за допомогою меню, або за допомогою комбінації клавіш A .)
Передбачено підтримку позначок Vi та закладок Kate. У разі створення позначки у режимі Vi буде також створено відповідну закладку Kate, яку буде показано у меню Закладки. І навпаки, якщо буде створено закладку Kate, програма також створить відповідну позначку Vi у нульовій позиції рядка.

Підтримувані команди звичайного/візуального режимів
a	Перейти у режим вставлення, додавати символи після курсора
A	Перейти у режим вставлення, додавати символи після рядка
i	Перейти у режим вставлення, додавати символи перед курсором
Ins	Перейти у режим вставлення, додавати символи перед курсором
I	Перейти у режим вставлення, вставляти до першого непорожнього символу у рядку
gi	Перейти у режим вставлення, вставити перед місцем, у якому було здійснено останній вихід з режиму вставлення
v	Перейти у візуальний режим; позначати символи
V	Перейти у візуальний режим; позначати рядки
v	Перейти у візуальний режим; позначати блоки
gb	Перейти у візуальний режим; повторно позначити останній позначений фрагмент
o	Додати новий рядок під поточним
O	Додати новий рядок перед поточним
J	Об'єднати рядки
c	Змінити: з наступним визначенням позиції для вилучення і переходом у режим вставлення
C	Змінити до кінця рядка: вилучити текст до кінця рядка і увійти до режиму вставлення
cc	Змінити рядок: вилучити рядок і перейти у режим вставлення
s	Замінити символ
S	Замінити рядок
dd	Вилучити рядок
d	З наступним визначенням позиції для вилучення
D	Вилучити до кінця рядка
x	Вилучити символ праворуч від курсора
Del	Вилучити символ праворуч від курсора
X	Вилучити символі ліворуч від курсора
gu	З визначенням позиції для встановлення нижнього регістру
guu	Перевести всі символи поточного рядка у нижній регістр
gU	З визначенням позиції для встановлення верхнього регістру
gUU	Перетворити символи поточного рядка на символи у верхньому регістрі
y	З визначенням позиції для копіювання
yy	Копіювати рядок
Y	Копіювати рядок
p	Вставити після курсора
P	Вставити перед курсором
]p	Вставити після курсора з відступом
[p	Вставити перед курсором з відступом
r	З визначенням символу, який слід замінити символ за курсором
R	Увійти до режиму заміни
:	Увійти у командний режим
/	Шукати
u	Вернути
R	Повторити
U	Повторити
m	Встановити позначку (може бути використано для наступних пересувань текстом)
n	Знайти наступне
N	Знайти попереднє
>>	Збільшити відступ рядка
<<	Зменшити відступ рядка
>	Збільшити відступ рядків
<	Зменшити відступ рядків
F	Сторінка вниз
B	Сторінка вгору
ga	Вивести значення ASCII для символу
.	Повторити останню зміну
==	Команда вирівнювання рядка
=	Команда вирівнювання рядків
~	Змінити регістр поточного символу
S	Розділити перегляд горизонтально
V	Розділити перегляд вертикально
W, w	Циклічний перехід до наступної панелі поділу
W, h W ←	Перейти до лівої панелі поділу
W, l W →	Перейти до правої панелі поділу
W, k W ↑	Перейти до верхньої панелі поділу
W, j W ↓	Перейти до нижньої панелі поділу

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

Підтримувані текстові об’єкти
Цими командами можна скористатися для позначення частин тексту документа.
iw	Блок слова: слово з пробілами
aw	Слово: слово без пробілів
i"	Від попередніх подвійних лапок (") до наступних подвійних лапок, разом з лапками
a”	Від попередніх подвійних лапок (") до наступних подвійних лапок, без лапок
i'	Від попередніх одинарних лапок (") до наступних одинарних лапок, разом з лапками
a'	Від попередніх одинарних лапок (") до наступних одинарних лапок, без лапок
i(	Від попередньої початкової круглої дужки [(] до наступної завершальної круглої дужки [)], разом з дужками
a(	Від попередньої початкової круглої дужки [(] до наступної завершальної круглої дужки [)], без дужок
i[	Від попередньої початкової квадратної дужки ([) до наступної завершальної квадратної дужки (]), разом з дужками
a[	Від попередньої початкової квадратної дужки ([) до наступної завершальної квадратної дужки (]), без дужок
i{	Від попередньої початкової фігурної дужки ({) до наступної завершальної фігурної дужки (}), разом з дужками
a{	Від попередньої початкової фігурної дужки ({) до наступної завершальної фігурної дужки (}), без дужок
i<	Від попередньої початкової кутової дужки (<) до наступної завершальної кутової дужки (>), разом з дужками
a<	Від попередньої початкової кутової дужки (<) до наступної завершальної кутової дужки (>), без дужок
i`	Від попередніх зворотних лапок (`) до наступних зворотних лапок, разом з лапками
a`	Від попередніх зворотних лапок (`) до наступних зворотних лапок, без лапок

Підтримувані команди режиму вставлення
D	Зменшити відступ
T	Збільшити відступ
E	Вставити знизу
Y	Вилучити слово
W	Вилучити слово
U	Вилучити рядок
J	Новий рядок
H	Вилучити символ у напрямку назад
Home	Перейти до першого символу документа
R n	Вставити вміст регістра n
O, команда	Увійти до звичайного режиму лише для однієї команди
A	Збільшити поточне позначене число
X	Зменшити поточне позначене число

Текстовий об’єкт, обмежений комами
Цього об’єкта немає у Vim. За допомогою текстового об’єкта, обмеженого комами, просто змінювати списки параметрів у C-подібних мовах та інших списках, поділених комами. Таким текстовим об’єктом є фрагмент тексту між двома комами або між комою і дужкою. На нашій ілюстрації показано три діапазони текстових об’єктів, позначені червоним тлом.
Приклад відокремлених комами об’єктів
Приклад відокремлених комами об’єктів
Відокремлені комами текстові об’єкти визначають діапазони даних. Якщо, наприклад, курсор перебуває у arg2, натискання клавіш ci, («змінити між комами») вилучить double arg2 і розташує курсор між двома комами у режимі вставлення. Це дуже зручний спосіб зміни параметрів функцій.

Нереалізовані можливості
Як ми вже зазначали раніше, метою режиму VI не є 100% підтримка можливостей Vim.