| ч9. ~/.vimrc | Содержание | ч11.сопоставления {*noremap}, дополнение |
В Vim есть функция под названием "сокращения", которая похожа на сопоставления, но предназначена для использования в режимах insert, replace и command. Они чрезвычайно гибкие и мощные, но здесь мы рассмотрим только наиболее распространенные варианты использования.
Сейчас мы будем беспокоиться только об сокращениях режима вставки. Выполните следующую команду:
:iabbrev adn and
Теперь войдите в режим вставки и введите:
One adn two.
Как только вы нажмете пробел после ввода adn, Vim заменит его на and.
Исправление подобных опечаток - отличное применение сокращений. Выполните следующие команды:
:iabbrev waht what
:iabbrev tehn then
Теперь снова войдите в режим вставки и введите:
Well, I don't know waht we should do tehn.
Обратите внимание, как были заменены два сокращения, и это при том
что мы не вводили пробел после второй ошибки.
Символы ключевых слов
Vim заменит сокращение, когда вы вводите любой "не ключевой символ" после сокращения. "Символ, не являющийся ключевым" означает любой символ, которого нет в iskeyword опции. Выполните эту команду:
:set iskeyword?
Вы должны увидеть что-то вроде iskeyword=@,48-57,_,192-255. Этот формат очень сложный, но по сути это означает, что все перечисленные ниже символы считаются "ключевыми":
- Все алфавитные символы ASCII, как в верхнем, так и в нижнем регистре, а также их версии с засечками.
- Любые символы со значением ASCII от 48 до 57 (цифры от нуля до девяти)
- Символ подчеркивания ( _ ).
- Любые символы со значением ASCII от 192 до 255 (некоторые специальные символы ASCII).
Если вы хотите прочитать полное описание формата этой опции, вы можете прочитать об этом тут :help isfname, но я предупреждаю вас, что без пол литра будет туго.
А для наших целей мы можем просто помнить, что сокращения будут выполняться, когда мы вводим что-то, что не является буквой, цифрой или символом подчеркивания.
Больше сокращений
Сокращения полезны не только для исправления опечаток. Давайте добавим еще несколько сокращений, которые помогут нам в повседневном редактировании текста. Выполните следующую команду:
:iabbrev @@ Мое_Имя@моя_почта.ru
Это малое сокращение всего в пару символов заменяются на довольно большой кусок текста. Со временем это может сэкономить вам много времени при наборе текста.
Теперь при наборе @@ в режиме вставки текст будет заменен. Попробуйте.
Но почему бы не использовать сопоставления?
Если вы думаете, что сокращения кажутся похожими на сопоставления, вы правы. Тем не менее, они предназначены для разных целей. Давайте рассмотрим пример.
:inoremap mn -- <cr>Мое Имя<cr>Моя_почта@myMail.ru
Это сопоставление предназначено для того, чтобы вы могли быстро вставить свою подпись. Попробуйте , войдите в режим вставки и введите <mn>
Кажется, он отлично работает, но есть проблема. Попробуйте войти в режим вставки и ввести этот текст:
mne mna mnu
Вы должны были заметить что Vim расширил < mn > до [ -- <cr>Мое Имя<cr>Моя_почта@myMail.ru ]
Сопоставления не учитывают, какие символы были введены до или после сопоставления - они смотрят только на конкретную последовательность, с которой они сопоставлены.
Удалите сопоставление и замените его сокращением, выполнив следующие команды:
:iunmap mn
:iabbrev mn -- <cr>Мое Имя<cr>Моя_почта@myMail.ru
теперь проверьте сокращение еще раз
mne mna mnu
На этот раз Vim будет обращать внимание на символы до и после <mn> и будет их расширять только тогда, когда мы захотим.
Упражнения
Добавьте сокращения для некоторых распространенных опечаток, которые чаще всего делаете лично вы. Обязательно используйте сопоставления, созданные в предыдущей главе, для открытия, обновления и запуска vimrc! (<leader>ev.. ZZ .. <leader>sv)
Добавьте сокращения для вашей электронной почты, веб-сайта или подписи.
Подумайте о некоторых фрагментах текста, которые вы вводите очень часто, и добавьте к ним сокращения.
| ч9. ~/.vimrc | Содержание | ч11.сопоставления {*noremap}, дополнение |