VI 사용 다음 진술을 검색하고 교체하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/823484

  •  05-07-2019
  •  | 
  •  

문제

다음을 교체해야합니다.

CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`

에게

CREATE TABLE IF NOT EXISTS `access`

난 노력 했어

:%s/\/\*\!\d+(.*)\*\//\1/g

그러나 그것은 가지 않았다. 내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

VIM은 백 슬래시 + (또는 대신 * 사용)가 필요합니다. 또한 VIM에서 괄호를 그룹화해야합니다. 따라서:

:%s/\/\*\!\d\+\(.*\)\*\//\1/g

예, Vim의 구식 Posix Regexes Suck :/

편집 : 아래 의견에 언급 된 바와 같이 +는 +로 탈출하면 작동합니다. 그리고 d는 실제로 지원됩니다. 이를 수정하기 위해 Regex 예제를 편집했습니다. 또한 더 간결하고 읽을 수있는 버전에 대한 Brian Carper의 예를 참조하십시오.

다른 팁

"매우 마법"을 사용하고 기본값 이외의 구분 제를 사용하여 읽기 쉽고 기억할 수 있습니다.

:%s@\v/\*!\d+(.*)\*/@\1@g

"매우 마법"이 없으면 앞에 백 슬래시를 넣어야합니다. + 그리고 () (그러나 앞에 있지 않습니다 * 또는 다른 것들). 그다지 일관되지 않습니다.

^*]+ :-)와 약간 다르고 효율적입니다.

1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top