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

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

我有一个包含多个文件(超过 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

相关内容