| ч4. Set Настройка параметров | Содержание | ч6. nmap, imap, vmap |
У Vimscript есть одна штука, которая позволит подчинить вашей воле Vim больше чем что либо, и это возможность сопоставлять map ключи. Сопоставление ключей делает следующее:
Когда я нажимаю эту клавишу, я хочу, чтобы Vim делал что то новое, а не то что он делал раньше.
Итак давайте для начала сопоставим клавиши в обычном режиме. О том, как сопоставлять ключи в режиме вставки и других режимах, мы поговорим следующей части.
Введите несколько строк текста в vim, а затем запустите:
:map - x
Поместите курсор куда-нибудь в текст и нажмите < - >. Обратите внимание, Vim удалил символ под курсором, точно так же, как если бы вы нажали < x >.
Так как в этом смысла не особо много ведь у нас уже есть клавиша для "удаления символа под курсором", поэтому давайте изменим это сопоставление на что-то более полезное. Выполните эту команду:
:map - dd
Теперь наведите курсор где то на строке и нажмите < - > еще раз. На этот раз Vim удаляет всю строку, потому что это то, что делает < dd >. Согласен экономия в одно нажатие сомнительная польза, а как насчет этого?:
Специальные символы
Мы можем использовать <ключевое имя (keyname)>, чтобы сообщить Vim о специальных ключах.
:map <space> viw
Поставьте курсор на слово и нажмите пробел. Vim перейдет в визуальный режим и выделит слово.
Вы также можете сопоставлять клавиши-модификаторы, такие как Ctrl или Alt.
:map <c-d> dd
Теперь при нажатии < Ctrl+d > будет выполняться команда < dd >. Для альта соответственно команда будет такая:
:map <a-d> dd
Комментарии и map
Помните, ранее мы говорили о комментариях и что с ними не все так гладко, как хотелось бы? . Сопоставление ключей (map keys) - одно из мест, где комментарии Vim не работают. Попробуйте выполнить команду:
:map <space> viw " Select word
Итак если вы сейчас нажали на пробел, то наверняка увидели что то ужасное. Но почему?
Когда вы нажали на пробел, Vim думает, что вы хотите, чтобы он делал что то вроде этого: viw<space>"<space>Select<space>word . Очевидно, что это не то, чего мы хотим.
Если вы внимательно посмотрите на выходной результат нашей команды, вы должны заметить что-то странное. Потратьте несколько минут, чтобы попытаться точно выяснить, что происходит, когда вы используете <space>, и почему это происходит.
Не волнуйтесь, если не понимаете что происходит, мы поговорим об этом позже.
Упражнения
Сопоставьте ключ < - > со следующими действиями: "удалить текущую строку, а затем вставьте ее ниже той, в которой мы сейчас находимся". Таким образом это переместит строку вниз одним нажатием клавиши.
Добавьте эту команду сопоставления в свой ~/.vimrc, чтобы вы могли использовать её всегда при запуске Vim. (напомню ~ означает домашний каталог, а точка то что файл является скрытым.)
А теперь сопоставите < _ > ключ, чтобы переместить строку вверх, а не вниз.
Добавьте и это сопоставление в ~/.vimrc
А теперь попробуйте угадать, как удалить сопоставление и вернуть ключ к его нормальной функции.
| ч4. Set Настройка параметров | Содержание | ч6. nmap, imap, vmap |