2017-12-08 18 views
0

저는 Vim 세계에 약간 새로운입니다. 나는 , ~= (실제로는 [special char]=)을 [whatever is symbol]= (양쪽에 공백 추가)으로 대체하려고합니다. 여기에 대체 명령이 있습니다 :vim 복수 문자 대체 정규 표현식

:%s/[~,\*]=/ = /g 

이 경우의 문제는 등호 앞에 각각의 특수 기호를 추가 할 수 없다는 것입니다. 도와 주시겠습니까 ...

+1

': % s/\ ([~, \ *] \) =/\ 1 =/g'과 같이 보이길 원합니다. '\ (\)'는 심볼 주위에 그룹을 만든 다음, 치환에서'\ 1'을 사용하여이를 참조합니다. – jszakmeister

+0

아, 나는'$ 1'을 시도했다. 덕분에 너무 도움이 :) –

답변

0

이것은 사용 사례를 포착하고 바꾸는 클래식 입니다. 심볼 부분을 \(...\)에 넣고 캡처 한 다음 \1을 통해 교체 부품에서 참조하십시오. 당신은 (일반적으로 또는 :help :substitute) :help s/\1에서 자세한 내용을 확인할 수있는 것들 :

:%s/\([~,\*]\)=/ \1= /g 

다른 방법으로, \zs=에서 경기를 시작할 수 있습니다. 이 는 기호의 일부가 그 주장하지만,이 경기에 포함되지 않기 때문에, 당신은 그것을 참조 할 필요가 없습니다 : 같은 트릭 끝에 \ze 적용 할 수

:%s/[~,\*]\zs=/ = /g 

. 보시다시피, 이렇게하면 명령이 짧아지는 경우가 많습니다.

:%s/[~,\*]=/ &/

바꾸기 세그먼트 수단 '전체 경기'에 & :

0

이것은 아마 당신의 질문에 대한 간단한 답변입니다.