I know that using VIM I can format C++ code just using
gg=G
Now I have to format 30 files, so doing it by hand becomes tedious. I had a look how to do it passing external commands to VIM, so I tried
vim -c gg=G -c wq file.cpp
but it does not work.
Can you give me a hint?
Thanks
为什么不在缓冲区中加载所有文件并使用bufdo
在所有文件上执行命令?
:bufdo "execute normal gg=G"
Change -c gg=G
to -c 'normal! gg=G'
-c 'normal! gg=G'
. -c
switch accepts only ex mode commands, gg=G
are two normal mode commands.
I prefer a slight change on the :bufdo
answer. I prefer the arg list instead of the buffer list, so I don't need to worry about closing current buffers or opening up new vim session. For example:
:args ~/src/myproject/**/*.cpp | argdo execute "normal gg=G" | update
args
sets the arglist, using wildcards ( **
will match the current directory as well as subdirectories) |
lets us run multiple commands on one line argdo
runs the following commands on each arg (it will swallow up the second |
) execute
prevents normal
from swallowing up the next pipe. normal
runs the following normal mode commands (what you were working with in the first place) update
is like :w
, but only saves when the buffer is modified. This :args ... | argdo ... | update
:args ... | argdo ... | update
:args ... | argdo ... | update
pattern is very useful for any sort of project wide file manipulation (eg search and replace via '%s/foo/bar/ge' or setting uniform fileformat
or fileencoding
).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.