2009-03-19 2 views
62

Vim을 사용하고 있습니다. 파일의 다른 곳에 이미 쓰여진 여러 줄에 걸쳐있는 긴 문자열로 일부 자리 표시 자 텍스트를 대체하고 싶습니다. .Vim에있는 파일의 다른 곳에서 레지스터 또는 라인의 내용으로 대체하십시오.

패턴을 레지스터의 내용으로 바꿀 수 있습니까? 예 :

:%s/foo/<contents of register A> 

그렇지 않으면 일련의 행으로 대체 할 수 있습니까? 그것은 나타납니다 http://vim.wikia.com/wiki/Search_and_replace 에 따르면

:%s/foo/<content of lines from 10 to 15> 

답변

78

같은 :

:%s/foo/\[email protected]/g 

또한, <c-r>a를 누르면 레지스터 a의 내용을 삽입합니다.

쿨 - 나는 결코 몰랐습니다. 좋은 질문. <c-r> 함께 할 수있는

몇 가지 다른 일들이 : http://vimdoc.sourceforge.net/htmldoc/cmdline.html#c_CTRL-R 내가 감동

+0

, 당신은 1 분 이내에 대답 ... 감사합니다! –

+0

나는 항상 시스템 클립 보드에서 나온 명령에 일을 맡기기를 원했다. – ojblass

+0

vimdoc 링크가 깨졌습니다. http://vimdoc.sourceforge.net/htmldoc/undo.html#CTRL-R – 0x89

20
:%s/foo/\=getline(10, 15)/g 

:%s/foo/\=join(getline(10, 15))/g 
+0

그가 찾고있는 것과는 정반대라고 생각합니다. 나는 그가 다음과 같은 것을 원한다고 생각합니다 : s/foo/10,15/ –

+0

어쩌면 내가 분명히 표현하지 않았을 지 모르겠지만 달성하고자하는 것은 'foo' ** 10 ~ 15 행의 내용 **과 10 ~ 15 행의 대체를 제한하지 않습니다. 어쨌든 답변 주셔서 감사합니다 :) –

+1

변경되었습니다. 이게 맞습니까? –

관련 문제