2012-05-28 3 views
7

레지스터의 내용을 외부 명령의 표준 입력에 파이프하는 방법은 무엇입니까? 나는 직관적으로 다음을 시도하지만 (하지만 내 필요성을 설명하는 역할을 할 수있다) 작동하지 않습니다 : 레지스터의 내용에 NULL을 사용할 일이되지 않는 경우가 있습니다Vim : 외부 레지스터 명령에 파이프 레지스터

:"0w !some_command 

답변

11

간단

call system('some_command', @r) 

. 그런 다음 변수로 레지스터를 사용하면 모든 것을 개행 문자로 변환한다는 사실 때문에 발생합니다 (레지스터 유형과 C가있는 레지스터만큼 레지스터가 단순하지는 않다는 점에서 내부적으로 어떻게 표현되는지는 알 수 없습니다). NULL로 끝나는 문자열)이 방법을 사용할 수없고 대신 임시 버퍼에 붙여 넣기를 수행하고 :%w !을 사용해야합니다. 레지스터가 NULL 문자와 그 밖의 다른 문자를 마지막 문자로 가질 때 some_command으로 완전하게으로 레지스터를 보낼 수있게하려면 훨씬 더 까다로운 문제가됩니다.

+0

내가 원했던 것! 'system()'이 두 번째 인수를 취한 것을 몰랐습니다. – slezica