繁体   English   中英

在 vim 中,如何删除所有 C 和 C++ 注释?

[英]In vim, how to remove all the C and C++ comments?

如何删除vi中的所有C和C++注释?

//

/*       
 */

你不能。 解析 C 和 C++ 注释不是正则表达式可以做到的。 它可能适用于简单的情况,但您永远不知道结果是否会给您留下损坏的源文件。 例如,这会发生什么:

 printf ("//\n");

正确的方法是使用能够解析 C 的外部工具。例如,某些编译器可能有一个选项来去除注释。

编写注释剥离器也是 lex 和 yacc 编程的基本练习。

另请参阅此问题: 从 C/C++ 代码中删除注释

使用正则表达式,由于 C/C++ 语法的复杂性,您最多只能实现 90% 正确的解决方案。 最好让正确的工具(编译器)来完成这项工作。

幸运的是,Vim 与外部工具很好地集成在一起。 基于此答案,您可以执行以下操作:

:%! gcc -fpreprocessed -dD -E "%" 2>/dev/null

注意事项:

  • 需要gcc
  • 它还稍微修改了格式(缩进缩进等)
Esc:%s/\/\///

Esc:%s/\/\*//

Esc:%s/\*\///

您可以使用直接应用于源代码的词法分析器,如Flex 在其手册中,您可以找到“ 我如何匹配 C 风格的注释? ”。

如果您需要深入的教程,可以在这里找到; 在“词法分析”部分,您可以找到一个 pdf 文件,向您介绍该工具和包含一些实际示例的存档,包括“c99-comment-eater”。

这是一个vim内联函数,可删除当前缓冲区中的所有C和C ++注释。

keepp %s/\%(\/\*\_.\{-}\*\/\)\|\/\/.*//

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM