Розділ 9. Режим введення VI

Erlend Hamberg

Переклад українською: Юрій Чорноіван

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

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

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

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

Примітка

На відміну від більшості клавіатурних скорочень KDE, багато клавіатурних команд режиму Vi є залежними від регістру символів. Це означає, що команди y і Y мають зовсім різне призначення. Щоб ввести команду y (копіювати), переконайтеся, що режим Caps Lock (літер верхнього регістру) вимкнено і натисніть клавішу Y. Щоб ввести команду Y (копіювати до кінця рядка), скористайтеся комбінацією клавіш Shift+Y.

Висловлене вище зауваження не стосується команд, у яких використовується клавіша. Ці команди можна ввести у будь-якому з режимів Caps Lock без натискання Shift, але у частині команд використовується комбінація з Ctrl, після якої слід натиснути іншу клавішу, регістр якої слід брати до уваги. Наприклад, щоб ввести команду «Ctrl+W, h» (перемкнутися на праву панель у розділеному перегляді), переконайтеся що режим літер верхнього регістру вимкнено, натисніть комбінацію клавіш Ctrl+W, відпустіть клавіш, а потім натисніть клавішу H.

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

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

  • KatePart: U і Ctrl+R відповідають повторному виконанню скасованої команди.

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

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

  • KatePart: print відкриває діалогове вікно Друк.

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

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

  • KatePart: Y копіює дані до кінця рядка.

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

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

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

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

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

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

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

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

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

  • Режим команд відкриває панель командного рядка KatePart. За допомогою цієї панелі ви зможете виконувати значну частину команд, доступних у реалізаціях Vi, а також деякі специфічні для KatePart команди. Докладніше про ці команди можна дізнатися з розділу «Командний рядок компонента редактора». Користуватися режимом команд просто: натисніть клавішу :, вкажіть команду і натисніть клавішу Enter.

Інтеграція з командами Kate

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

  • Передбачено підтримку позначок Vi та закладок Kate. У разі створення позначки у режимі Vi буде також створено відповідну закладку Kate, яку буде показано у меню Закладки. І навпаки, якщо буде створено закладку Kate, програма також створить відповідну позначку Vi у нульовій позиції рядка.

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

a

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

A

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

i

Перейти у режим вставлення, додавати символи перед курсором

Ins

Перейти у режим вставлення, додавати символи перед курсором

I

Перейти у режим вставлення, вставляти до першого непорожнього символу у рядку

gi

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

v

Перейти у візуальний режим; позначати символи

V

Перейти у візуальний режим; позначати рядки

Ctrl+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

Вернути

Ctrl+R

Повторити

U

Повторити

m

Встановити позначку (може бути використано для наступних пересувань текстом)

n

Знайти наступне

N

Знайти попереднє

>>

Збільшити відступ рядка

<<

Зменшити відступ рядка

>

Збільшити відступ рядків

<

Зменшити відступ рядків

Ctrl+F

Сторінка вниз

Ctrl+B

Сторінка вгору

ga

Вивести значення ASCII для символу

.

Повторити останню зміну

==

Команда вирівнювання рядка

=

Команда вирівнювання рядків

~

Змінити регістр поточного символу

Ctrl+S

Розділити перегляд горизонтально

Ctrl+V

Розділити перегляд вертикально

Ctrl+W, w

Циклічний перехід до наступної панелі поділу

Ctrl+W, h

Ctrl+W

Перейти до лівої панелі поділу

Ctrl+W, l

Ctrl+W

Перейти до правої панелі поділу

Ctrl+W, k

Ctrl+W

Перейти до верхньої панелі поділу

Ctrl+W, j

Ctrl+W

Перейти до нижньої панелі поділу

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

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

h

Ліворуч

Ліворуч

Backspace

Ліворуч

j

Вниз

Вниз

k

Вгору

Вгору

l

Праворуч

Праворуч

Пробіл

Праворуч

$

У кінець рядка

End

У кінець рядка

0

До першого символу рядка (позиція 0)

Home

До першого символу рядка

^

До першого непорожнього символу рядка

f

З додаванням символу, до якого слід перейти праворуч від курсора

F

З додаванням символу, до якого слід перейти ліворуч від курсора

t

З додаванням символу, до якого слід перейти праворуч від курсора, з розташуванням курсора перед цим символом

T

З додаванням символу, до якого слід перейти ліворуч від курсора, з розташуванням курсора перед цим символом

gg

До першого рядка

G

До останнього рядка

w

До наступного слова

W

До наступного слова, відокремленого пробілом

b

До попереднього слова

B

До попереднього слова, відокремленого пробілом

e

До кінця слова

E

До кінця слова, відокремленого пробілом

ge

До кінця попереднього слова

gE

До кінця попереднього слова, відокремленого пробілом

|

З визначенням номера позиції у рядку для переходу

%

З визначенням елемента для переходу

`

До позначки

До першого непробільного символу рядка з позначкою

[[

До попередньої початкової дужки

]]

До наступної початкової дужки

[]

До попередньої завершальної дужки

][

До наступної завершальної дужки

Ctrl+I

Перейти до наступного місця

Ctrl+O

Повернутися до попереднього місця

H

Перейти до першого рядка на екрані

M

Перейти до рядка посередині екрана

L

Перейти до останнього рядка на екрані

%значення у відсотках

Перейти до вказаної у відсотках позиції документа

gk

Перейти на рядок вгору візуально (у разі використання динамічного перенесення рядків)

gj

Перейти на рядок вниз візуально (у разі використання динамічного перенесення рядків)

Ctrl+

Перейти на слово ліворуч

Ctrl+

Перейти на слово праворуч

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

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

iw

Блок слова: слово з пробілами

aw

Слово: слово без пробілів

i"

Від попередніх подвійних лапок (") до наступних подвійних лапок, разом з лапками

a”

Від попередніх подвійних лапок (") до наступних подвійних лапок, без лапок

i'

Від попередніх одинарних лапок (") до наступних одинарних лапок, разом з лапками

a'

Від попередніх одинарних лапок (") до наступних одинарних лапок, без лапок

i(

Від попередньої початкової круглої дужки [(] до наступної завершальної круглої дужки [)], разом з дужками

a(

Від попередньої початкової круглої дужки [(] до наступної завершальної круглої дужки [)], без дужок

i[

Від попередньої початкової квадратної дужки ([) до наступної завершальної квадратної дужки (]), разом з дужками

a[

Від попередньої початкової квадратної дужки ([) до наступної завершальної квадратної дужки (]), без дужок

i{

Від попередньої початкової фігурної дужки ({) до наступної завершальної фігурної дужки (}), разом з дужками

a{

Від попередньої початкової фігурної дужки ({) до наступної завершальної фігурної дужки (}), без дужок

i<

Від попередньої початкової кутової дужки (<) до наступної завершальної кутової дужки (>), разом з дужками

a<

Від попередньої початкової кутової дужки (<) до наступної завершальної кутової дужки (>), без дужок

i`

Від попередніх зворотних лапок (`) до наступних зворотних лапок, разом з лапками

a`

Від попередніх зворотних лапок (`) до наступних зворотних лапок, без лапок

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

Ctrl+D

Зменшити відступ

Ctrl+T

Збільшити відступ

Ctrl+E

Вставити знизу

Ctrl+Y

Вилучити слово

Ctrl+W

Вилучити слово

Ctrl+U

Вилучити рядок

Ctrl+J

Новий рядок

Ctrl+H

Вилучити символ у напрямку назад

Ctrl+Home

Перейти до першого символу документа

Ctrl+R n

Вставити вміст регістра n

Ctrl+O, команда

Увійти до звичайного режиму лише для однієї команди

Ctrl+A

Збільшити поточне позначене число

Ctrl+X

Зменшити поточне позначене число

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

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

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

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

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

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