vim 에서 .java 파일의 모든 주석을 제거하는 명령이 어떤건가요

hwayak의 이미지

vim 에서 .java 파일에 있는 주석( /** */ 형태, // 형태, /* */ 형태)처리된 부분을 지워버리고 싶은데요..

그래서 vim 에서 command mode 에서

:%s/ //g
^^
이 사이에 적당히 어떤 정규식을 넣으면 될듯 한데.. 잘 모르겟네요..

http://bbs.kldp.org/viewtopic.php?t=57794&highlight=%C0%DA%B9%D9+%C1%D6%BC%AE+%C1%A6%B0%C5

여기에 있는 대로
:%s/\v\/\/.*$|\/\*[^\n]*\*\///g
를 실행했더니 주석은 물론이고, 코드 까지 지워져 버리던데 ㅠ.ㅠ

어떻게 하면 되는가요?

flyingykk의 이미지

다음 펄 코드 한 번 이용해 보세요. 제가 요새 펄 정규표현식을 공부하는 중이라서 한 번 만들어 봤습니다. rmcomments.pl 등의 이름으로 저장하신 후 'perl rmcomments.pl *.java'라고 하시면 주석이 제거된 *.java.new라는 파일들이 만들어집니다.

undef $/;

foreach $file (@ARGV) {
  $outfile = "$file.new";

  open(FILE, $file) ||
    die("Couldn't open $file: $!\n");
  $text = <FILE>;
  close(FILE);

  $text =~ s|/\*.*\*/||g;  # '/* 주석 */' 처리
                           # '/* 주석1 */ 코드1 /* 주석2 */ 코드2'처럼 한 줄에
                           # 주석이 두 번 이상 나오면 제대로 처리하지 못함
  $text =~ s|//.*(?=\n)||g;  # '// 주석' 처리

  open(OFILE, ">$outfile") ||
    die("Couldn't create $outfile: $!\n");
  print OFILE $text;
  close(OFILE);
}