gpt4 book ai didi

c++ - 使用 VIM 对 "cpp"文件进行批量文件重新格式化

转载 作者:行者123 更新时间:2023-11-27 22:56:47 25 4
gpt4 key购买 nike

我有许多由多个 .cpp.h 文件组成的大型项目。缩进样式一团糟(硬制表符、空格以及它们的所有可能组合)、行尾尾随空格、行尾合并。我目前可以通过打开文件并发出以下命令来解决 VIM 中的所有这些问题:

  • :%s/^M//g (^M 通过 CTRL+V 生成,< kbd>CTRL+M; 处理删除 Windows 风格的行尾)。
  • :%s/\s\+$//g(删除行尾的尾随空格)。
  • gg=G(使用我当前的 .VIMRC 设置自动重新缩进文件)。

如何以批处理模式运行上述命令?到目前为止,我最好的解决方案是创建一个自定义的 .VIMRC 来运行上述命令并在完成后退出 VIM,like in various SO questions .但是,这有时会因为搜索找不到匹配项而失败,然后自动化脚本就会失败。

有没有比自定义.VIMRC文件更健壮的方法,比如直接在命令行传递一串命令给VIM?

最佳答案

如果您想在命令行上运行所有内容,您可以使用以下命令。

vim -c 'argdo set ff=unix | %s/\s\+$//ge | normal gg=G' -c 'wqa' <list of files>

vim 可以使用 -c 接受普通模式命令。我使用 argdo 来运行 set ff=unix | %s/\s\+$//ge |正常 gg=G 提供给 vim 的每个参数。我使用 set ff=unix 而不是 :%s/^M//g 因为您要求更改文件格式以具有 unix 行结尾。 (您也可以只对所有文件运行 dos2unix。)接下来 %s/\s\+$//ge 在整个缓冲区上运行,删除尾随空格。 e 标志是必需的,以防没有任何尾随空格。最后,normal gg=G 在正常模式下运行 gg=G

argdo 完成后,我们运行 wqa 保存并退出所有文件。

(如果文件中确实有回车符,您可以使用 :%s/\r//ge 代替 set ff=unix 来删除它们)

关于c++ - 使用 VIM 对 "cpp"文件进行批量文件重新格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com