Найти в Дзене
Блокнот математика

Рубрика "Секреты Вим". Режим обычного редактора

Земную жизнь пройдя до половины,
Я с удивлением огромным вдруг узнал,
Что способ есть один работы в Виме;

Я ключик y нечаянно нажал,
И горе мне! Мне выйти невозможно!
Из Вима! Как? Куда я, блин, попал?!

Я начал жать на кнопки осторожно.
Редактор как редактор, ничего
От Вима нет, печатать только можно.

Возможности где Вима моего?!
Но может быть, для тех, кто слаб душою
Есть польза от режима от того?

Читатель мой, сойди в Аверн со мною!
Я все нюансы тайные раскрыл.
Для девы юной Вим тебе настрою.

Чтоб счастлив ты с той девой юной был.
Читай, ставь лайк, скажи всем про Блокнота.
В закладки сохрани, чтоб не забыл.

Вперед, мой принц, короче! За работу!

Данте Алигьери. Под его Божественную комедию я стилизовал вступление выше.
Данте Алигьери. Под его Божественную комедию я стилизовал вступление выше.

Вим предлагает такую возможность: есть возможность запустить Вим как обычный однорежимный редактор. Если запускать gvim, графическую оконную версию, то там всё будет как у всех, ну или можно сделать всё как у всех.

Ключ -y включает пакет настроек evim, в котором режим вставки включен всё время. Если добавить меню как рассказано в предыдущей заметке, то можно сделать обыкновенный редактор даже в консоли. Соответствующий скрипт лежит в $VIMRUNTIME/evim.vim

Кстати, при наличии возможности gvim и будет запущен.

Если вникнуть, то "вечная вставка" включается опцией insertmode. Выставьте ее, и всё. Остальное — просто удобные привязки, которые обсудим чуть далее. При включенной опции у нас есть доступ к нормальному режиму: однократно через <C-O> и можно выйти в режим через <C-L>.

Клавиша <ESC> выходит обратно в режим вставки, а в самом режиме вставки ничего не делает (только бикает). Однако в привязках она работает как обычно.

Обсудим привязки evim.

В целом, они эмулируют обычный редактор: вертикальные стрелки работают по экранным строкам (как gj и gk), а <BS> удаляет выделенный текст. Копирование в регистр тоже висит на привычных клавишах вроде <C-X> и <S-Ins>

Q форматирует текст как gq

<C-Z> и <C-Y> работают как отмена и повтор.

<M-Space> (альт-пробел) вызывает системное меню.

<C-A> выделяет всё.

C-Tab> — следующее окно

<C-F4> — закрыть окно.

<C-F> — диалог выбора файла

<C-H> — диалог замены файла

<C-S> — сохранение файла

Здесь есть один нюанс. Вставка, вырезание и копирование текста осуществляется из/в регистр +, который соответствует системному (точнее, графической оболочке). В консоли может не работать. Проверить это можно так:

:echo has('clipboard')

Если нуль, то нет у вас выхода на системный регистр. Вот у меня нет. Не поленитесь исправить привязки, если вам надо работать именно в консоли. Скажем, вашей девушке надо работать по SSH, а она не умеет в Вим.

Например:

vmap <C-X> "xd
vmap <C-C> "xy
imap <C-V> <esc>"xpa
vmap <C-V> "xp

Теперь можно мышкой или стрелками с shift выделить текст и скопировать его, а потом вставить.

А в графическом gvim всё будет как у всех.

Аналогичное замечание касается системного меню и вызова диалога для открытия файла. Последний для консоли можно переопределить:

imap <ESC>tabnew .

Удачи, коллеги!

Научно-популярные каналы на Дзене: путеводитель
Новости популярной науки12 марта 2022