Какова лучшая стратегия для фрагментов кода и макросов в vim?

StackOverflow https://stackoverflow.com/questions/54401

  •  09-06-2019
  •  | 
  •  

Вопрос

По мере того, как я все больше разрабатываю 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 вы найдете категория советов посвящен расширению фрагментов и сокращений.Вы также увидите список плагинов, которые упрощают определение сложных фрагментов/файлов-шаблонов.

ХТХ,

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top