2012-07-14 5 views

답변

3

당신이 공백으로 괄호 속에있는 것을에서 "foo는"분리하고 괄호 모든 것을 둘러싸고 원하는 : 그 \1에서

:%s/foo\(.*\)/(foo \1)/g

첫 번째의 텍스트를 나타냅니다 괄호. 당신은 당신이 끝장

당신이 fooMOO

했다 감안할 등 다른 괄호 그룹을 한 경우 \2을 사용할 수 (foo MOO)

+0

: % s /는 무엇을 의미합니까? vim과 관련이 있나요? – MaiaVictor

+2

the : 시작 명령 모드, %는 "전체 파일 실행"을 나타내며 s는 대체 명령을 시작합니다. 100 % 정력 관련. – dpw

1

당신은 대체 패턴에 역 참조를 사용할 수 있습니다

%s/foo(\(.*\))/foo \1/g 

이 패턴에서 이스케이프 처리 된 괄호는 텍스트의 실제 괄호와 일치하지만 이스케이프 처리 된 괄호는 캡처럼 작동합니다 괄호 안들어. \ 1은 역 참조이며 정규 표현식에서 캡처 링 괄호의 첫 번째 집합 내부에서 일치하는 모든 것을 참조합니다. 한 줄에 여러 함수 호출이있을 경우 일치하는 문자의 수를 제한하고 싶을 것입니다. (문자열, 예를 들어)) (foo를 위해 인수 목록에서 닫는 괄호가있는의 위험이 없다면 그때는 아마하고 싶은 것 그 부근에 괄호 일치하지 않음으로써 :이 경우

%s/foo(\([^)]\))/foo \1/g 

을 인수 목록에 닫는 괄호를 넣을 위험이 있으므로 상황이 복잡해집니다.