Run a macro in all buffers in vim
I know about the :bufdo
command, and was trying to combine it with a macro I had recorded (@a
) to add a #include in the proper spot of each of the header files I'd loaded. However, I couldn't find an easy way to run the macro on each buffer. Is there a way to execute a macro throu开发者_如何学Gogh ex mode, which is what :bufdo
requires? Or is there another command I'm missing?
You can do it like this:
:bufdo execute "normal @a" | write
The normal command will run the macro, but it has to be run using :execute, otherwise the pipe character will be interpreted as a normal-mode character.
You have to use normal
to execute normal mode commands, such a macro execution (@a
) in command mode:
:bufdo normal @a
The only alternative I could come up with was to add the :w
and :bn
commands to the macro, so that it would automatically save and move to the next buffer. I could then run the command on the other 52 buffers by typing 52@a
. This worked, but to me is a much different conceptual model than :bufdo
, and I'm hoping someone else will point me in the direction of something more similar to :bufdo
.
精彩评论