簡體   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