我知道使用VIM我可以使用
格式化C ++代码gg=G
现在我必须格式化30个文件,因此手动操作变得乏味。我看看如何将外部命令传递给VIM,所以我尝试了
vim -c gg=G -c wq file.cpp
但它不起作用。
你能给我一个提示吗?
由于
答案 0 :(得分:8)
为什么不在缓冲区中加载所有文件并使用bufdo
一次对所有文件执行命令?
:bufdo "execute normal gg=G"
答案 1 :(得分:5)
将-c gg=G
更改为-c 'normal! gg=G'
。 -c
开关只接受ex模式命令,gg=G
是两个普通模式命令。
答案 2 :(得分:1)
我更喜欢对:bufdo
答案稍作修改。我更喜欢arg列表而不是缓冲区列表,所以我不需要担心关闭当前缓冲区或打开新的vim会话。例如:
:args ~/src/myproject/**/*.cpp | argdo execute "normal gg=G" | update
args
使用通配符设置arglist(**
将匹配当前目录以及子目录)|
让我们在一行上运行多个命令argdo
在每个arg上运行以下命令(它将吞下第二个|
)execute
阻止normal
吞下下一根烟斗。normal
运行以下常规模式命令(您首先使用的是什么)update
与:w
类似,但仅在修改缓冲区时保存。此:args ... | argdo ... | update
模式对于任何类型的项目范围文件操作非常有用(例如,通过'%s / foo / bar / ge'搜索和替换或设置统一fileformat
或{{1} })。