我知道,使用VIM我可以只使用格式代码
gg=G
现在我必须格式化30个文件的格式C++代码,由专人这样做就变得乏味。我看看如何将外部命令传递给VIM,所以我试过
vim -c gg=G -c wq file.cpp
但它不起作用。
你能给我一个提示吗?
感谢
我知道,使用VIM我可以只使用格式代码
gg=G
现在我必须格式化30个文件的格式C++代码,由专人这样做就变得乏味。我看看如何将外部命令传递给VIM,所以我试过
vim -c gg=G -c wq file.cpp
但它不起作用。
你能给我一个提示吗?
感谢
为什么不加载所有的文件起来缓冲区和使用bufdo
一次执行所有这些的命令?
:bufdo "execute normal gg=G"
将-c gg=G
更改为-c 'normal! gg=G'
。 -c
交换机只接受ex模式命令,gg=G
是两个正常模式命令。
我更喜欢:bufdo
答案稍作修改。我更喜欢arg列表而不是缓冲区列表,所以我不必担心关闭当前缓冲区或打开新的vim会话。例如:
:args ~/src/myproject/**/*.cpp | argdo execute "normal gg=G" | update
args
设置arglist中,使用通配符(**
将匹配当前目录以及子目录)|
让我们在一行argdo
运行多个命令运行以下命令在每个参数(它会吞下第二个|
)execute
防止normal
吞噬下一个管道。normal
运行以下普通模式下的命令(你用摆在首位的工作)update
就像:w
,但只有当缓冲区被修改保存。这:args ... | argdo ... | update
图案为任何类型的项目宽文件操作的非常有用的(例如,查询,并经由“%S /富/酒吧/ GE”或设置均匀fileformat
或fileencoding
替换)。
如何加载缓冲区中的所有文件?在bash脚本中使用“for”循环?谢谢 – flow 2010-07-09 16:13:39
如果您的shell支持文件匹配,则不需要脚本。例如,如果我想加载目录'〜/ mycode'中的所有ruby文件,我会输入'$ vim〜/ mycode/*。rb' – michaelmichael 2010-07-09 16:18:16
太棒了!我完成了编辑它们。现在我该如何拯救他们?我尝试过:bufdo“执行正常的wq”但它不起作用 – flow 2010-07-09 16:24:06