2012-10-22 2 views
1

외부 명령에 현재 사용중인 이름없는 yank 레지스터 (또는 필자 만 필요한 경우)를 붙여 넣기위한 스타일 명령/매크로를 만들고 싶습니다.외부 명령에 yank 레지스터를 보내는 방법

현재 나의 사용 사례는 라인을 클립 보드로 보내는 것입니다. 앞으로도 다른 프로그램에 텍스트를 보내려면 동일한 기술을 사용하고 싶습니다.

Mac 사용자 인 클립 보드의 경우 일반적으로 *을 클립 보드에 추가하지만 Tmux 사용자이기 때문에 작동하지 않습니다. 대신 reattach-to-user-namespace 명령을 사용해야합니다. 내가 뭘하고 싶은지는 reattach-to-user-namespace -l bash -c pbcopy에 파이널 레지스터가 파이프되어있다.

+2

그 명령은'~/.tmuxconf'에 추가 될 예정입니다. 파이핑이 필요 없습니다. 나는 직장에서 내 Mac의 tmux에서''y ''가 작동한다는 것을 확실히 알고있다. – romainl

+0

가능한 유사한 게시물 : http://stackoverflow.com/questions/12414745/send-echo-or-register-contents-to-pbcopy -mac-clipboard-on-mac-os-x/12415965 –

+0

중복 게시물이 아닙니다. 외부 명령에 홱크 레지스터를 출력하려고합니다.이번에는'pbcopy'를 원합니다. 앞으로 나는'ruby'에 파이프하는 데에도 같은 명령을 사용할 것입니다. – Jason

답변

0

romainl에 명시된 바와 같이, namespace 명령을 tmux.conf에 넣으면 필요하지 않지만 레지스터의 내용을 외부 명령으로 파이프하려는 경우 getreg()을 사용하여 검색 할 수 있습니다 그 내용과 exe 명령을 실행합니다. (필자는 래퍼에 대한 문서에서 설명하는대로) 당신이 reattach-to-user-namespace 래퍼를 통해 쉘을 시작하면 당신이하지 않도록 예를 들어 ...

:exe "!pipereg ".getreg('"')." | pbcopy" 
0

은, 모든 아이들은, 사용자 부트 스트랩 네임 스페이스에 첨부됩니다 개별 통화 (예 : pbcopypbpaste)에 사용하는 것이 좋습니다.

또는 랩퍼를 통해 Vim의 인스턴스 만 실행하여 (그리고 그 하위) 부트 스트랩 네임 스페이스에 액세스 할 수 있습니다. 그런 식으로 * 레지스터를 사용할 수 있습니다 (Vim 7.3이 +clipboard 기능으로 컴파일 된 경우, 즉 OS X과 함께 제공되는 Vim의 모든 빌드).

reattach-to-user-namespace vim … 
# use "* inside Vim to access the OS X clipboard. 

당신이 정말로 당신이 Vim의 system() 기능을 사용할 수 있습니다, 그것은 (예를 들어, pbcopy)가 필요 궁극적 인 프로세스를 제외하고 래퍼를 실행하지 않도록하려면

. 보다 쉽게 ​​사용할 수 있도록

:call system('reattach-to-user-namespace pbcopy', getreg('')) 

당신은 (새로운 명령으로이 패키지 할 수 있습니다 : 이것은 당신이 일반적으로 모든 (비 대화식) 외부 명령에 일부 내부 - 투 - 빔 데이터를 전송 할 방법도 다른 레지스터와 그것을) :

command -bar -register Pbcopy call system('reattach-to-user-namespace pbcopy', getreg(<q-reg>)) 

이 새로운 명령 (인수가 레지스터 이름)과 같이 사용할 수 있습니다

:Pbcopy " 
:Pbcopy a 

당신은 한 단계 더 가서를 호출하는 매핑을 만들 수 명령 :

nnoremap <F3> :<C-u>execute 'Pbcopy ' . v:register<CR> 

당신은 F3 또는 을 입력하여 사용할 것 "F3 (즉, 다른 레지스터 사용, 일반 모드 명령과 같이 레지스터 접두어 사용).

관련 문제