2013-02-15 2 views
0

내가이 예 나는 그것을 반환 싶은 것이정력 대체 기능/

this is a foo cool bar 

에 다음

%s/foo/\=substitute(getline('.'),'bar','','g') 

을 실행하기 위해 노력하고있어 것은

this is a bar cool bar 

하지만, 돌아 오는 중

this is a this is a foo cool cool bar 

substitute() 함수에서 일치하는 regexp가 아니라 전체 라인이 반환됨을 의미합니다.

나는 뭔가가 누락 되었습니까?

내가 분할() 함수와 sed 구현 알고 있어요,하지만 대신에 원하는()

+1

당신이 foo는 교환 싶어하고 바 또는 뭐야? – Kent

+0

@Kent 미안해. 편집하십시오. 바 대신에 \ ([ " '"\) \ (1 \\) \ 1 \'을 넣고 싶다면 – Ali

답변

1

이유 substitute()?

단순히 :s/foo/bar/이 아닌 이유는 무엇입니까? 어쨌든

, 모두 추한 명령이 작동합니다 ... :(

:%s/foo/\=substitute(submatch(0),".*","bar","g")/ 

:%s/.*/\=substitute(submatch(0),"foo","bar","g")/ 

당신은 단지 기능을 할 선호하는 경우는,이 ​​작품도 :

:%call setline(line('.'),substitute(getline('.'),'foo','bar','g')) 
+0

을 입력하십시오. – Ali

+0

@Ali 100 질문에 한 번만 질문에 모든 것을 넣을 수 있습니까? – Kent

+0

잘 있어요 ying, 나는 마지막 질문에서 그랬지만, 그 시점에서 한 발걸음 나아갈 수있는 유일한 방법 인 것 같다. 어쨌든 나는 그것을 나의 마지막 요구 사항으로 필요로하고 모든 것을 가지고 질문을 편집 할 수있다. 모두 함께, 나는 이것에 대해 유감스럽게 생각하고 당신의 위대한 도움을 많이 주셔서 감사합니다. – Ali