使用外部命令使用VIM格式化代码

时间:2010-07-09 16:03:45

标签: vim

我知道使用VIM我可以使用

格式化C ++代码
gg=G

现在我必须格式化30个文件,因此手动操作变得乏味。我看看如何将外部命令传递给VIM,所以我尝试了

vim -c gg=G -c wq file.cpp

但它不起作用。

你能给我一个提示吗?

由于

3 个答案:

答案 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} })。