vim의 다른 인스턴스간에 데이터를 복사하는 방법은 무엇입니까?


41

첫 번째 vim을 사용하여 행을 복사하면 (with yy) 다른 터미널의 vim에 붙여 넣기를 사용하려면 어떻게해야 p합니까? 어떤 명령이나 설정으로 할 수 있습니까? 글로벌 시스템 클립 보드에 복사하여 붙여 넣을 수 있습니까?

나는 다음과 같은 방법이 가능하다는 것을 알고 있지만 더 간단한 방법을 원합니다.

  1. 첫 번째 vim을 종료하고 두 번째 vim을 다시 열고 싶지 않습니다.

  2. 별도의 창 (with :sp) 을 사용하고 싶지 않습니다 .

답변:


49

먼저 클립 보드 사용 버전의 vim을 설치해야합니다. 그래픽이 아닌 환경 (예 : 우분투 서버 사용자)와 사용자를 수용하기 위해, vim그리고 vim-tiny이 기능에 훅하지 않습니다. 그래픽 또는 터미널에서 실행되는 GVim 을 설치하려고합니다 GVim 설치. GVim이 vim명령 을 대체합니다 .

첫 번째 vim에서 'cut buffer'에 텍스트를 넣은 다음 두 번째 vim에 텍스트를 붙여 넣을 수 있습니다. 글로벌 컷 버퍼에 복사하려면 +레지스터를 사용하십시오 . 이 "키를 사용하면 yank 또는 paste 작업을 수행 할 때 사용할 레지스터를 지정할 수 있습니다.

첫 번째 vim에서 레지스터에 줄을 넣습니다 +.

"+yy

그런 다음 +두 번째 vim 의 레지스터에서 붙여 넣으십시오 .

"+p

사용 가능한 레지스터에 대한 자세한 내용은를 참조하십시오 :help registers. "+p시스템의 다른 소스에서 복사 한 텍스트를 붙여 넣을 수도 있습니다 .


GVim을 설치하면 (패키지가 vim-gnome과 같은 이름 일 수 있음) 메뉴 항목이 자주 호출되는 주요 단축키를 제공합니다.
zpletan

1
Gvim을 설치하고 싶지 않습니다. vim에서 어떻게해야합니까?
trusktr

1
@trusktr 실제로 이것은 vim에서도 작동합니다. 이 Q & A 에서는 최소한 vim 7.3.74 (Ubuntu 11.10 이상을 의미)가 필요하다고 말합니다.
lumbric

tmux 내부에서 vim을 시작하고 다른 외부 vim이 정상적으로 외부에서 시작된 경우 어떻게 든 작동하지 않습니다.이 문제를 해결하는 방법을 알고 있습니까?
serup

"*yy, "*p또한 작동합니다. 당신이 때 :reg, 당신은 그 스타 레지스트리를 볼 수 있습니다
elquimista

20

(내 키 바인딩 습관을 변경하는 저를 필요로하지 않는) 나를 위해 일한 것이 가장 좋은 방법은 여기에 있습니다 : https://stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in- 정력

그냥 넣어 :

set clipboard=unnamedplus

당신의 .vimrc.


실제로 set clipboard=unnamedplusGVim을 설치 한 것과 함께 추가해야 했습니다. 그러나 실제 GVim 프로그램 대신 Vim에 xfce4 터미널을 사용할 수있었습니다.
jbrock

9

Bill의 솔루션을 좋아하고 매핑을 만들었습니다.

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

비주얼 모드의 첫 번째 파일은 / tmp / vitmp의 모든 파일을 복사하고 두 번째 파일은 파일의 / tmp / vitmp의 내용을 복사합니다.


간단한 솔직한 해결책-구식 방법-이것이 나를 위해 한 덕분에
serup

이것을 .vimrc에 추가 한 후 Vim에 무엇을 입력해야합니까?
Vitaly Zdanevich

리더 키 뒤에 y를 사용하여 복사하고 리더 키에 p를 붙여 붙여 넣으려면 vim을 설정해야합니다.
사미르 사덱

1
이것이 작동하는 것입니다. "*y서버에서 사용 이 중단 된 것 같습니다
ospider

어머. docker의 tmux에서 vim을 사용 하여이 문제에 대한 시간을 검색했습니다. 이미 unnamed / unnamedplus를 가진 나의 정상적인 vimrc는 docker의 tmux에서 vim에서 작동하지 않았습니다. 인터넷에서 찾은 것도 없습니다. 그러나 이것은 모든 컴퓨터에서 작동하는 것 같습니다! Docker, Mac 및 Arch에서 기본적으로. 감사합니다!!
토미

5

다양한 유닉스 계열 컴퓨터 사이를 이동하면서 다음 시퀀스가 ​​항상 효과적이라는 것을 알았습니다.

소스 vi 세션에서 :

  1. ESC m a첫 줄을 표시하는 데 사용
  2. ESC m b마지막 줄을 표시하는 데 사용
  3. :'a,'b w! xfer스크래치 파일에 범위를 기록하는 데 사용

대상 세션에서 :

  1. 삽입 선으로 커서 이동
  2. ESC :r xfer텍스트를 읽는 데 사용

나는 그것이 예쁘지 않다는 것을 알고 있지만 그것은 항상 나를 위해 작동합니다!


2

실제로 매우 간단합니다 : vim클립 보드를 지원 하는 버전을 설치하십시오 . 그렇지 vim않은 경우 다음 중 하나를 받으십시오 .

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

설치가 완료되면을 실행하십시오 vim. 다음을 실행하여 클립 보드가 활성화되어 있는지 확인할 수도 있습니다.

 vim --version|grep clipboard

당신은 볼 수 +xterm_clipboard있습니다.


이 답변은 문제의 핵심입니다. Vim 버전에 클립 보드 기능이 활성화되어 있습니까? 그렇지 않다면, 다른 답변들 중 어느 것도 차이가 없을 것입니다. "vim --version"을 수행하고 "+ clipboard"를 찾으십시오. + xterm_clipboard는 X11 클립 보드 지원을 원할 경우에만 적용되지만 Ubuntu를 사용하는 경우에도 마찬가지입니다.
레이

2

당신은 아마이 답변을 싫어할 것입니다. 나는 다양한 유닉스 컴퓨터에서 80 년대를 거슬러 올라가서 최근에 리눅스에서 놀았었다.

잘라내어 붙여 넣을 솔루션은 Windows에서 실행되는 Putty를 사용하여 Linux 상자에 액세스하는 것입니다.

Putty를 사용하면 창에서 txt를 강조 표시하여 복사 할 수 있습니다. 그런 다음 다른 퍼티 창 / 세션으로 이동하여 마우스 오른쪽 버튼을 클릭하여 붙여 넣을 수 있습니다.

더 쉬울 수 없었다. 그리고 지금 vim이 있습니다. 내 하루에 돌아 오지 않은 너무 나쁜, 그것은 내가 이맥스 마피아를 지키는 데 도움이 될 것입니다.


1

yy를 정확하게 사용하지는 않지만 마우스로 복사하려는 텍스트를 선택하는 경우 (때로는 Shift- [드래그]를 사용해야 할 수도 있음) 다른 터미널 창으로 전환하여 [중간 클릭] 또는 Shift- [중간]을 수행하십시오 클릭] 텍스트가 현재 삽입 지점에 삽입됩니다.

이것은 vim뿐만 아니라 대부분의 명령 행 및 GUI 프로그램에서 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.