У меня есть файл с кучей строк. Я записал макрос, который выполняет операцию в одной строке. Я хочу повторить этот макрос во всех оставшихся строках файла. Есть ли быстрый способ сделать это?
Я попробовал Ctrl + Q, выделил ряд строк и нажал @@, но это не помогло.
vim
vim-macros
Джордан Пармер
источник
источник
Ответы:
Используйте обычную команду в режиме Ex для выполнения макроса на нескольких / всех строках:
Выполните макрос, хранящийся в регистре a, в строках с 5 по 10.
Выполните макрос, сохраненный в регистре a, в строках 5 до конца файла.
Выполнить макрос, сохраненный в регистре a на всех строках.
Выполните хранилище макросов в регистре a на всех строках, соответствующих шаблону .
Чтобы выполнить макрос в визуально выбранных строках, нажимайте V и j или k, пока не будет выбран нужный регион. Затем введите
:norm! @a
и наблюдайте, что показана следующая строка ввода.Введите : помочь нормальному в VIM, чтобы узнать больше.
источник
:norm! @a
:
после выделения линий вместо строки ввода «Ex» будет указано,:'<,'>
к чему вы добавите остаток от того, что предложил Кевин. Это позволит сделать окончательные команды следующим образом::'<,'>norm! @a
.!
избежать переназначения пользователем ключей. Возможно, вам это не нужно, но ответ, который работает для всех, требует его.Используйте global для запуска макроса «a» во всех строках, которые содержат «pattern»
Для справки, проверьте:
:help global
.источник
Вы также можете сделать это:
В обычном режиме:
Например:
Применяет макрос в регистре q к следующим 1000 строкам.
источник
:%norm! @a
иvGG :norm! @a
j
командой перехода на следующую строку, иначе он попытается применить его к той же строке.Есть также плагин под названием RangeMacro, который делает именно то, что вы хотите! Для каждого, кто не может угадать по имени, что он делает: он повторяет записанный макрос для каждой строки в заданном диапазоне, независимо от того, визуально или по: 40,50 /: +10
См. Http://www.vim.org/scripts/script.php?script_id=3271.
источник