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 through ex mode, which is what :bufdo
requires? Or is there another command I'm missing?
views:
108answers:
3
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
.
Caleb Huitt - cjhuitt
2010-06-11 16:07:10
+2
A:
You have to use normal
to execute normal mode commands, such a macro execution (@a
) in command mode:
:bufdo normal @a
CMS
2010-06-11 16:11:39
This will only work if 'autowrite' is enabled, other wise it will stop with an error when it tries to change to the second buffer, since it will be abandoning a modified buffer.
Dave Kirby
2010-06-12 09:07:33
+1
A:
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.
Dave Kirby
2010-06-11 16:19:35