Какова лучшая стратегия для фрагментов кода и макросов в vim?
Вопрос
По мере того, как я все больше разрабатываю vim, мне хочется копировать блоки полезного кода, похожие на «шаблоны» в Eclipse.
Я подумывал создать отдельный файл для каждого фрагмента кода и просто читать их с помощью
:r code-fornext
но это кажется примитивным.Погуглив, я нахожу упоминание макросов vim и что-то о «картах», но ничего такого, что кажется простым.
То, что я ищу, например.что-то вроде «Шаблонов» Eclipse, поэтому я вставляю фрагмент кода с курсором, находящимся в середине.Или «Макросы» JEdit, которые я могу записать, выполняя сложные удаления и переименования в одной строке, а затем я могу воспроизвести их снова в 10 других строках, чтобы они делали то же самое.
Есть ли у vim что-нибудь подобное этим двум функциям?
Решение
Чтобы записать макросы в Vim, в командном режиме нажмите кнопку q
key и еще одну клавишу, которой вы хотите назначить макрос.Для быстрого удаления макросов я обычно просто нажимаю qq
и назначьте макрос q
ключ.Как только вы перейдете в режим записи, выполните нажатия клавиш.Когда вы закончите, убедитесь, что вы вернулись в командный режим, и нажмите q
еще раз, чтобы остановить запись.Затем, чтобы воспроизвести макрос вручную, вы можете ввести @q
.Чтобы воспроизвести ранее запущенный макрос, вы можете ввести @@
или чтобы запустить его 10 раз, вы можете ввести 10@q
или 20@q
, и т. д..
В итоге:
+----------------------------------+-------------------------------------+
| start recording a macro | qX (X = key to assign macro to) |
+----------------------------------+-------------------------------------+
| stop recording a macro | q |
+----------------------------------+-------------------------------------+
| playback macro | @X (X = key macro was assigned to) |
+----------------------------------+-------------------------------------+
| replay previously played macro | @@ |
+----------------------------------+-------------------------------------+
Что касается фрагментов кода, я нашел и начал использовать плагин Vim под названием snipMate, который имитирует функцию фрагментов TextMate.Вы можете получить плагин здесь:
http://www.vim.org/scripts/script.php?script_id=2540
И короткая статья об использовании snipMate (вместе с коротким скринкастом, показывающим его использование):
http://www.catonmat.net/blog/vim-plugins-snipmate-vim/
Надеюсь, вы найдете это полезным!
Другие советы
На vim.wikia вы найдете категория советов посвящен расширению фрагментов и сокращений.Вы также увидите список плагинов, которые упрощают определение сложных фрагментов/файлов-шаблонов.
ХТХ,