ram*_*rur 3 linux vim autoindent text-formatting
我有一个包含多个文件(超过 100 个)的 ac 项目,代码是用Whitesmiths风格编写的,但我想将它们更改为K&R 风格的缩进。是否可以以自动方式使用 vim?
例如,我有一个 emacs-lisp 脚本来实现这一点——
(progn
(find-file "{}")
(mark-whole-buffer)
(setq indent-tabs-mode nil)
(untabify (point-min) (point-max))
(indent-region (point-min) (point-max) nil)
(save-buffer))
Run Code Online (Sandbox Code Playgroud)
我想知道是否有类似的技巧可以用 vim 完成。
更新:我发现了另一个名为astyle 的好工具,它也支持不同语言(具有多种样式)的自动缩进。
要么将所有 C 文件传递给 Vim 可执行文件vim file1.c dir/file2.c
,要么将它们添加为 Vim 内部的参数(请参阅 参考资料:help file-searching
):
:args **/*.c **/*.h
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过:argdo
. Vim 有一个内置的缩进机制,或者它可以使用外部代码格式化程序。在 阅读详细信息:help C-indenting
。
一旦你配置的缩进设置('cindent'
,'cinoptions'
,等),您可以通过申请中的所有文件
:argdo execute 'normal! ggVG=' | update
Run Code Online (Sandbox Code Playgroud)
(ggVG
在可视模式下选择整个缓冲区,=
然后重新格式化。)