vim:删除以前的代码缩进并转换为另一个

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 的好工具,它也支持不同语言(具有多种样式)的自动缩进。

Ing*_*kat 5

要么将所有 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在可视模式下选择整个缓冲区,=然后重新格式化。)