Найти тему
Блокнот математика

Рубрика "Секреты Вим". Набор текста

Обычные текстовые редакторы изначально работают в режиме вставки, позволяя что-то делать с текстом — обычно через меню.

Вим предлагает два режима (больше, на самом деле, но можно сгруппировать в два): нормальный режим, в котором с текстом работают, и вставку, когда текст набирают. Большинство возможностей нормального режима в обычных редакторах недоступно, поэтому и режим вставки у них единственный.

Вообще же есть две крайности работы с текстовым файлом. Можно его просматривать, редактировать по мелочи, перемещать куски текста, форматировать. Это обычное дело при работе с программным кодом, с данными в текстовой форме, с научными работами в ТеХ: больше времени читаем, ищем ошибки, думаем; а изменения, если и вносим, то косметические.

Либо начинаем с чистого листа и набиваем текст, много текста, почти не вылезая из режима вставки и не прибегая к сильным средствам вроде поиска и замены, удаления и копирования, пакетным операциям и разным фильтрам: внешним и фильтрам строк. А что нам предлагает Вим для такого режима работы?

https://cdn-images-1.medium.com/max/720/1*hXjQmp0SjRAmz0lDVF0D5Q.jpeg
https://cdn-images-1.medium.com/max/720/1*hXjQmp0SjRAmz0lDVF0D5Q.jpeg

Во-первых, смотрим материал по командам, доступным в режиме вставки. Перемещение по словам, например. Стандартные команды движения обычного редактора все доступны.

Включите раскраску синтаксиса, если работаете с кодом или языком разметки вроде ТеХ (но не только). Там же описаны другие удобства: мышь, номера строк и т.п.

Можно настроить автоформатирование. Это, например, переменная textwidth, позволяющая ставить автоматические переносы, чтобы поддерживать длину строк в пределах указанного значения. Нулевое значение означает выключение этой возможности.

Если значение нулевое, то используется переменная wrapmargin, если она ненулевая. Она прерывает строку за указанное число символов от края окна. Если вы хотите видеть весь текст, это может быть полезно. Однако обычно лучше не вставлять лишних символов конца строки, используя вместо этого флаг wrap: тогда Вим будет сворачивать строки, чтобы они целиком умещались на экране, а физически текст при этом не меняется. Выставьте заодно linebreak, чтобы свертка происходила не на последнем видимом символе, а культурно. Список символов, на которых культурно разрывать строку, указан в breakat. Скорее всего, это то, чего вы ожидаете.

Сюда же отступы, если вы работаете с программным кодом. Есть команды режима вставки, чтобы эти отступы создавать. Это полезно для Питона, да и в обычном тексте может пригодиться.

Привязки и сокращения. Вы можете определить привязки для режима вставки, через imap и другие команды семейства, начинающиеся с i. Ясно, что можно задействовать F-клавиши (в том числе с control и shift) и сочетания обычных клавиш с control, но можно делать штуки и более хитрые. Так, никто не мешает повесить что-либо на неиспользуемую в тексте последовательность ;1 и она сразу станет используемой и очень полезной. Еще менее известно, что можно навесить что-то на используемую комбинацию символов! Лучше на такую, которую стремительно не набирают. Например,

imap dp double precision

будет работать, при этом ввести символы dp все равно можно, только надо делать это медленно. Около секунды между нажатиями. Вполне приемлемо. Примеры:

:imap <F2> <ESC>:w<CR>a
:imap <S-F2> <ESC>:w!<CR>a
:imap <C-F2> <ESC>:saveas

В последней команде надо будет ввести имя файла и потом вернуться в режим вставки вручную.

Аналогично можно создать и сокращение:

:abbr dp double precision

сокращение раскроется после пробела или знака препинания, так что сочетание dp нормально, можно использовать тоже, если это не слово. можно и слово dp ввести, только надо перенести мышкой курсор, не вводя ничего, а зачем такие сложности.

Можно использовать меню, например, для выбора вариантов. Или сделать себе команды движения, какого Вам надо. Все в ваших руках. Или настроить клавишу ввода так, чтобы сохранялся файл при каждом нажатии энтер:

:inoremap <CR> <ESC>:w<CR>a<CR>

Именно inormap, а не imap, а то рекурсия может вас неприятно удивить. Если что, <C-C> ее прервет. Второй <CR> нужен, чтобы желаемый конец строки все-таки был введен.

Автокоманды. Сильное средство, но довольно простое в работе. Событий очень много, но нас интересуют те, что в режиме вставки.

CursorHoldI, например, происходит, если некоторое время в режиме вставки не двигался курсор. В этот момент можно сохранить текст. Например.

Есть CursorMovedI, но оно будет срабатывать на каждую клавишу: не стоит на него навешивать что-то сложное.

Можно отследить вход и выход из режима вставки, ввод символа (до его вставки в текст, что позволяет делать забавные вещи), изменение текста.

Диграфы. Возможность вставлять символы Юникода в текст. Запоминаете пару символов, и потом либо вводите их после <C-K>, либо выставляете флаг digraph и тогда есть более удобный способ: символ1<BS>символ2. Но клавиша <BS> окажется недоступна: сами выбирайте, что вам важнее. Часто бывает надо вводить буквы с акцентами, скажем Á или ç ('A и ,c). Можно ввести тире — M-. Можно создать свои диграфы вдобавок к имеющимся. Этò нè çлőжнô. Если вам часто нужен символ, можно создать горячую клавишу, например,

:imap <C-P> <C-K>*p
:imap --- <C-K>M-
:imap o' <C-K>o'

Здесь первая команда задействует ctrl+p для вставки символа π, вторая — заменяет --- на тире, а третья экономит пару нажатий, так как диграф для ó и есть o', но мы теперь просто вводим o' и получаем ó.

Настройте строку статуса. Там могут отображаться номер строки и символа в строке, процент текста выше экрана, имя, тип и кодировка файла и вообще всё, что вы захотите и сможете настроить. Например, нужные вам диграфы или горячие клавиши.

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

Автодополнение. Оно у вас уже есть, причем разное. Можно немного настроить, и будет вообще удобно. Например, словарь синонимов, орфографический словарь или поиск по файлам в каталоге. Полезно и для кода, и для текста.

Так что при минимальной настройке из режима вставки можно не вылезать очень долго. Удачи, коллеги!

Оглавление рубрики

Путеводитель по каналу