我有一个包含多个文件(超过 100 个)的项目,代码写在白匠风格,但我想把它们改成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))
我想知道是否有类似的技巧可以用 vim 来实现。
更新:我发现了另一个很好的工具,叫做阿斯泰尔,它还支持不同语言(具有多种样式)的自动缩进。
答案1
将所有 C 文件传递给 Vim 可执行文件vim file1.c dir/file2.c
,或者从 Vim 内部将它们添加为参数(参见:help file-searching
):
:args **/*.c **/*.h
然后,您可以通过 批量编辑它们:argdo
。Vim 具有内置缩进机制,也可以使用外部代码格式化程序。请阅读 了解详细信息:help C-indenting
。
配置缩进设置('cindent'
、'cinoptions'
等)后,你可以通过以下方式应用所有文件
:argdo execute 'normal! ggVG=' | update
(ggVG
在可视模式下选择整个缓冲区,=
然后重新格式化。)
答案2
男人缩进*滚动滚动滚动*
The Kernighan & Ritchie style is used throughout their well-known book
"The C Programming Language". It is enabled with the ‘-kr’ option. The
Kernighan & Ritchie style corresponds to the following set of options:
-nbad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0
-cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs
-nprs -npsl -saf -sai -saw -nsc -nsob -nss
例如:
indent -kr source.cpp