Случай использования
Я в нормальном режиме. Я явно не думал о записи макроса, но я делаю одну команду изменения. Теперь я могу повторить это действие, используя точку.
Теперь я понимаю, что полезно сохранять макрос в последующем макросе, а не вводить всю команду каждый раз. Я могу либо следить за всеми изменениями, для которых эта команда нужна прямо сейчас, с помощью точки, либо я могу продолжить редактирование и позже использовать эту команду, сохранив ее в макросе.
Последнее - то, что я хочу сделать, но самый простой способ сделать это - нелегко - отменить мои изменения, начать запись макроса и повторить команду, чтобы внести необходимые изменения, и прекратить запись макроса.
Что я уже пробовал:
Запись точки в макрос не работает, потому что она записывает точку, а не изменение, которое выполняет точка. (Например, скажем, команда, хранящаяся в точке, была: d5w
Если вы начинаете запись макроса и выполняете действие через. Ожидая, что он будет удалять 5 слов при каждом запуске макроса, этого не произойдет. При следующем запуске макрос будет делать точку, а не команду d5w
. Это означает, что если вы сделали какие-то другие изменения после записи макроса - скажем, удалите 3 слова, используя, d3w
и это было последнее изменение, которое вы выполнили, то при запуске макроса он удалит 3 слов а не 5, потому что он просто работает .
)
источник
Ответы:
Vim не хранит историю ваших команд обычного режима. Если вы хотите сохранить историю своей истории в обычном режиме, вы можете использовать ее для сохранения в файл: https://vi.stackexchange.com/a/587/13848
Команды в обычном режиме обычно короткие, поэтому люди просто набирают его в обычном режиме и не пытаются создавать макросы. Однако, если вы хотите создавать макросы из команд обычного режима, вы можете преобразовать их в
Ex
команду режима, а затем сохранить в макрос, как указано @wmmso. Вы можете сделать это с помощьюnorm
команды. Поэтому, если вы хотите удалить 2 слова, начиная с текущей позиции курсора, и использовать команду обычного режима вEx
режиме использования:norm d2w
. (Ссылка: http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , Выполнение обычной команды в диапазоне )Лучше использовать
Ex
команду mode, если она сложная, так как она позволяет вам набрать полную команду в буфере, убедиться, что она действительно верна, а также сохранить ее в истории командной строки.Теперь, когда у вас есть команда обычного режима в режиме ex, вы также можете просмотреть свою команду, используя историю, используя
q:
, а затем скопировать ее в регистр, используя"ay$
, находясь в строке, содержащей командную строку, которую вы хотите сохранить в макрос. Затем, когда вы хотите запустить макрос, вы можете выполнить его с помощью@a
источник
d2w
?скопируйте содержимое регистра ":" (что вы только что сделали) в другой регистр, например, зарегистрируйте:
Вы можете выполнить это снова, используя
источник
:
содержит последнюю выполненную команду:command-name-goes-here
вместо команды нормального режима, такой какd2w