2012-07-09 1 views
64

tmux 세션에서 vim을 사용하는 동안 이름없는 레지스터를 뽑거나 붙여 넣을 수 없습니다. 명명 된 레지스터로가는 것은 정상적으로 작동하지만 명명되지 않은 이름은 작동하지 않습니다.이름이없는 레지스터에서 Vim + Tmux를 고칠/붙여 넣기를 수정했습니다.

오류는 다음과 같습니다 TMUX없이

E353: Nothing in register * 

는 정력 내 현재 설정을 사용하여 작동합니다. 어떻게 수정해야합니까? y 다음 p 오류없이 그리고 등록자를 지정하지 않고 사용할 수 있습니까?

+0

tmux.conf를 보여줄 수 있습니까? – Conner

답변

94

오류 메시지 (Nothing in register *)에서 일반 ?p의 경우 Vim의 인스턴스는 unnamed register* 대신 * register을 사용합니다. 이는 clipboard optionunnamed 값이 포함되어 있기 때문일 수 있습니다. 이 방법으로 구성하면 Vim은 기본적으로 홱크, 삭제, 변경 및 넣기 연산에 대해 이름이없는 레지스터 대신 * 레지스터를 사용합니다 (예 : " 접두사가있는 다른 레지스터를 지정하지 않은 경우, 예 : a 레지스터에서 넣을 "ap).

* 이름없는 레지스터의 이름은 실제로는 " (큰 따옴표)입니다. 당신이 그것을 사용하기 위해 이름을 지정할 필요가 없다는 의미에서 "이름이 없음"일뿐입니다 (기본값). 나는. 당신은 익명의 레지스터에서 넣을 ""p을 말할 필요가 없습니다. 단지 p입니다.

clipboard의 기본값은 unnamed을 포함하지 않으므로 구성 (또는 플러그인)의 일부 비트에서 온 것일 수 있습니다. :verbose set clipboard? 명령은 현재 값을 설정하는 스크립트를 보여줍니다. 구성 파일에서이 작업을 수행중인 경우 tmux에서 실행 중일 때이 작업을 수행하지 않을 수 있습니다. 예컨대 :

if $TMUX == '' 
    set clipboard+=unnamed 
endif 

는 다른 방법으로, GUI 선택/클립 보드 (따라서 * 레지스터 및/또는 clipboardunnamed 작업) 빔-있어 문을 TMUX 액세스의 인스턴스를 수 있도록하기위한 몇 가지 방법이있을 수 있습니다. Mac OS X를 사용하는 경우 tmux 세션 내에서 실행중인 프로세스에 대해 클립 보드 액세스를 다시 활성화하는 my workaround wrapper을 볼 수 있습니다. 다른 OS 또는 GUI를 사용하는 경우 Vim이 일반적으로 GUI와 대화하는 방법과 작동하지 않는 이유 (예 : X11에서 DISPLAY 값이 잘못됨, 실행중인 이전 세션에 연결됨)을 찾아야합니다. 오래된 값을 가진 셸).

+3

당신이 맞습니다, 내 .vimrc는 클립 보드 = 이름없는 라인을 설정했습니다. 나는 조건문을 추가했고 이제는 tmux 안팎으로 바르게 작동한다. – Jason

+0

다른 모든 대답은 무작위로 마음대로 다른 설정을 시도, 오직 당신은 왜 지적! 감사. – nn0p

+2

brew에'--with-wrap-pbcopy-and-pbpaste' 옵션을 써서 설치해야합니까? – nn0p

4

fakeclip 플러그인은 많은 터미널에서 클립 보드 등록기가 예상대로 작동하고 tmux/screen을 지원합니다. 그것을 사용하고 있습니까? 문제가 해결 될 수도 있습니다.

이 팁에도 관심이있을 수 있습니다 ... 귀하의 질문에는 해당되지 않지만 관련이 있습니다. tmux를 실행중인 시스템/터미널 유형에 따라 .tmux.conf에 몇 가지 조정이 필요할 수 있습니다./ TMUX/OSX 정력에 나를 위해 작동하는 무슨

다음
# To use pbcopy and pbpaste on OS X, get this wrapper and install 
# git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git 
# cd tmux-MacOSX-pasteboard/ 
# make reattach-to-user-namespace 
# mv reattach-to-user-namespace /usr/local/bin 
# After installing, the default command can be reset to use the 'reattach-to-user-namespace' 
# wrapper that was compiled/installed as descripted above. 
set -g default-command "reattach-to-user-namespace -l /bin/bash" 
# #Next, create Ctrl-c and Ctrl-v mappings 
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy" 
bind C-v run "tmux set-buffer $(reattach-to-user-namespace pbpaste); tmux paste-buffer" 
48

은 다음과 같습니다 : 예를 들어 여기에 (주석 일부 지침) OS X에 내 .tmux.conf의 발췌입니다

  1. 설치 Homebrew
  2. set clipboard=unnamed
  3. 시스템을 사용하는 TMUX 알려주기 : .vimrc 파일에 brew install reattach-to-user-namespace
  4. : 다시 연결 - 투 - 사용자가 네임 스페이스를 설치 클립 보드 : .tmux.conf에서 : set-option -g default-command "reattach-to-user-namespace -l bash"

출처 : https://coderwall.com/p/j9wnfw

+2

[링크 전용 답변은 권장되지 않습니다.] (http://meta.stackoverflow.com/tags/link-only-answers/info) SO 답변은 솔루션 검색의 종점이어야합니다 (시간이 지남에 따라 부실 해지는 경향이있는 참조의 또 다른 중간 기착). 링크를 참조 용으로 유지하면서 독립형 시놉시스를 여기에 추가하는 것을 고려해보십시오. 'zsh'에 대해서 – kleopatra

+6

은 물론'bash'를'zsh'로 대체합니다. – nikola

+0

이렇게하면 로그인 세션을 다시 시작해야합니다. 즉, iTerm/터미널 창을 다시 시작하십시오. – Momer

0

늦은 대답, 그러나 그것은 또한 당신의 .tmux.conf에 다음 줄이 포함되어있을 수 있습니다에

set -g set-clipboard off

결합을 a .vimrc 포함

set clipboard=unnamed

이렇게하면 vim이 거기에없는 클립 보드를 사용하게됩니다.