我知道使用VIM我可以只用下面的代码格式化C++代码
gg=G现在我必须格式化30个文件,所以手工操作变得单调乏味。我看过如何将外部命令传递给VIM,所以我尝试了一下。
vim -c gg=G -c wq file.cpp但它不起作用。
你能给我一个提示吗?
谢谢
发布于 2010-07-10 00:12:37
为什么不在缓冲区中加载所有文件,并使用bufdo一次性对所有文件执行命令?
:bufdo "execute normal gg=G"发布于 2010-07-10 02:00:18
将-c gg=G更改为-c 'normal! gg=G'。-c交换机只接受ex模式命令,gg=G是两个正常模式命令。
发布于 2010-07-16 02:55:25
我更喜欢对:bufdo的答案稍作修改。我更喜欢arg列表而不是buffer列表,所以我不需要担心关闭当前的缓冲区或打开新的vim会话。例如:
:args ~/src/myproject/**/*.cpp | argdo execute "normal gg=G" | updateargs使用通配符( subdirectories)|将与当前目录匹配,并允许我们在一个lineargdo上运行多个命令在每个参数上运行以下命令(它将吞噬第二个|)execute防止normal吞噬下一个pipe.normal运行以下正常模式命令(您在第一个place)update中使用的类似于**,但仅在修改缓冲区时保存。对于任何类型的项目范围的文件操作(例如,通过‘%s/foo/ :args ... | argdo ... | update /ge’搜索和替换,或设置统一的fileformat或fileencoding),此栏模式非常有用。
https://stackoverflow.com/questions/3214428
复制相似问题