开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜