Может войдёшь?
Черновики Написать статью Профиль

Мастерство Vim: Развлекаемся с макросами

перевод Laracasts Мастерство Vim

Это перевод видео-урока с Laracasts, серия Vim Mastery, урок №21Fun With Macros от . Перевод обновлён . Опечатка? Выдели и нажми Ctrl+Enter.

(0:00)
Давайте перейдем к макросам. Это довольно интересная тема. Макрос — это просто запись, которую вы можете воспроизвести в любом месте. Или вы можете сохранить ее на будущее. Простейший пример: мы можем нажать q и любой символ... Давайте нажмем qq, как мы делали с метками. Это означает начать запись в регистр q. Теперь любое нажатие клавиши будет записано. Я могу ввести = 'john' и Escape... и если я хочу прекратить запись, то нажму q.

(0:30)
Теперь это будет записано, временно, конечно, в регистр q, который вы видите здесь. Теперь давайте воспроизведем это. Все, что нужно сделать, это нажать @ и регистр — q. Здорово, не так ли? Очень просто. Давайте попробуем еще раз: q и дальше, опять же, любую клавишу. Я всегда использую qq, точно, как mm для меток.

(1:00)
Итак, qq, my name is jeff, Escape, q для остановки. Теперь я могу воспроизвести это нажав @q. Далее вы можете получить полную запись, как строку. Это подходит, если вы хотите сохранить это в файл .vimrc. Итак, еще раз, — если вы просматриваете регистр (мы можем его видеть тут), это означает, что я могу нажать одинарную или двойную кавычку и qp, чтобы выполнить записанное в регистр. Заметьте, он также включает любое нажатие клавиш, символов и так далее.

(1:30)
Как мы можем сохранить это? Очень просто. Если я перейду в свой файл .vimrc... Давайте вставим это сюда. Напишу let @q= и далее, мы можем вставить его: "qp... и он вставится. Теперь мы сохранили. Это означает, что, даже если мы закроем MacVim и откроем снова, мы все еще можем использовать регистр. Вот так: @q — готово. Теперь, как вы можете представить, это можно использовать для самых разных вещей.

(2:00)
Если вы обнаружите, что печатаете снова и снова какую-то последовательность, то это хороший кандидат для макроса. Например, давайте создадим такую, которая создаст и инициализирует параметр для конструктора. К примеру, что если у нас есть макрос, который вставляет подобную конструкцию? Поднимемся вверх и напишем PHPprotected $name. Типа того. Будет ли это удобно? Хорошо, я нажму u несколько раз, чтобы отменить и давайте посмотрим, сработает ли это. Выйду в полноэкранный режим. Потом qq для запуска записи.

(2:30)
Далее, я скопирую это слово: yiw. Теперь мы скопировали name. Теперь я поищу закрывающую фигурную скобку и нажму заглавную O, что добавит строчку выше и переключит нас в режим вставки. Таким образом, я гарантированно добавляю это назначение в самый низ метода PHP__construct. Escape, p, = $, Escape, p. Клавиша а — чтобы перейти в режим вставки после текущего символа. И теперь Escape, чтобы вернуться в нормальный режим.

(3:00)
Теперь давайте введем знак вопроса, чтобы искать выше текущей строки. Найду слово construct. Теперь снова нажму O, чтобы добавить строчку выше, где мы установим его: protected $, Escape, p, a для перехода в режим вставки. Точка с запятой, чтобы завершить. И Enter. Отметим, что, это, возможно, не заработает, если здесь есть комментарий. Мы не учитываем это. Если у вас они есть (что вероятно), вы можете добавить небольшую настройку.

(3:30)
Вы с этим справитесь. Давайте нажмем теперь Escape. Все, что остается, это вернуть курсор точно в предыдущее положение. И знаете что? Мы, возможно, могли создать набор меток, чтобы сделать такое действие простым. Но пойдет и так. Мы найдем конструктор. И теперь, если я хочу найти, что мы копировали на предыдущем шаге... я могу ввести /, Ctrl+R, .

(4:00)
Ctrl+R, вставит то, что мы скопировали в прошлый раз. Это специально для командного режима. Потому что вы не можете нажать p для вставки, если вы в командном режиме. Мы почти закончили. Осталось только... Давайте выключим подсветку. Если помните, мы назначили для этого , и пробел. Думаю, готово. Нажму q, чтобы выключить запись. И давайте попробуем. Я нажму u несколько раз, чтобы отменить все. Итак, мы поместили курсор на аргумент и нажмем теперь @q. Готово. Работает.

(4:30)
Проделаем это снова: age и @q и, далее, job и @q. Отличный инструмент, верно? Теперь, конечно, мы хотим сохранить это, чтобы можно было использовать это в будущем. Давайте посмотрим на наш регистр. Это именно то, что мы только что сохранили. Давайте вставим это в наш файл .vimrc. Вот так. Спущусь вниз: let @q или, кстати, вы можете выполнить nmap или что-то вроде этого. Это нормально.

(5:00)
Напишем let @a. И мы сделаем это равным тому, что мы записали. Если мы хотим вставить что-то из регистра, мы ссылаемся на ключ регистра: “q и, далее, p для вставки. Вот так. Единственное, что нужно исправить, это экранировать двойную кавычку. Давайте попробуем. Вернемся назад и добавим еще один аргумен: thing. Теперь я могу нажать @a, чтобы запустить его.

(5:30)
Работает. Вы можете представить и многие другие вещи. Например, вы можете создать макрос, чтобы построить новый класс PHP и сразу определить, какое у него должно быть пространство имен. Почему бы не попробовать, сможете ли вы найти, как сделать это самостоятельно? В завершение, еще раз: давайте удалим это быстро: di), чтобы удалить все внутри скобок. И ещё раз вспомним. qq или q и любой символ — чтобы начать запись.

(6:00)
my name is jeff. Если вы переключитесь в нормальный режим и снова нажмете q, вы остановите запись. Далее вы можете вставить вашу запись, выполнив "qp. И вставиться все, что у вас есть в регистре q. Вы можете добавить это в ваш файл .vimrc, введя let @ и дальше вставляем макрос. И, наконец, вы можете воспроизвести любой макрос, нажав @ и далее нужную клавишу. В нашем случае это q. Вот и все.

Как вы считаете, полезен ли этот материал? Да Нет

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.