텍스트 블록을 시스템 클립 보드에 복사하여 다른 프로그램에 붙여 넣을 수있는 방법이 있습니까?

댓글

  • 이는 SO에서 이미 요청 및 답변되었습니다. 여기에서 더 많은 정보를 찾을 수 있습니다.
  • macvim christoomey / vim-system-copy 에서이 플러그인을 사용해 왔으며 정말 마음에 듭니다. 모션 cpip, cpi{에서 정말 잘 작동합니다.
  • 정말 필요한 것은 EasyClip . 그렇게하면 훨씬 더 많은 작업을 수행 할 수 있습니다 …
  • 답변 만 추가 할 수 없지만 댓글 만 달면됩니다. 텍스트 만 복사하려면 sed :)를 사용할 수도 있습니다. sed -n 5p file; 다섯 번째 줄만. sed -n -e 5p -e 8p file; 5 번째와 6 번째 줄만. sed -n 5,8p file; 5 일과 8 일 사이의 라인. 콘솔에 줄을 인쇄합니다. 텍스트를 선택하여 쉽게 복사 할 수 있습니다.

답변

X11 기반 시스템 (예 : Linux 및 대부분의 기타 UNIX 유사 시스템) 서로 독립적 인 두 개의 클립 보드가 있습니다.

  • PRIMARY -선택시 복사이며 마우스 가운데 버튼으로 붙여 넣을 수 있습니다.
  • CLIPBOARD-일반적으로 ^C로 복사하여 붙여 넣습니다. ^V (MS Windows와 유사)

OS X Windows 시스템에는 클립 보드가 하나만 있습니다.

X11의 경우 시스템에는 이러한 클립 보드를 동기화하는 많은 도구가 있습니다. 따라서 동일한 것으로 보이면 둘 중 하나를 실행하고있을 수 있습니다.

Vim에는 두 개의 특수 레지스트리가 있습니다. 다음 클립 보드에 해당하는 항목 :

  • *는 PRIMARY를 사용합니다. 니모닉 : S tar는 S 선출 ( s 선출)
  • +는 CLIPBOARD를 사용합니다. 니모닉 : CTRL PLUS C (공통 키 바인드 용)

Windows & OS X에는 +*간에 차이가 없습니다. 두 레지스터 모두 동일한 것을 참조합니다 (사용하는 레지스터는 중요하지 않습니다).

이 레지스터를 모든 레지스터로 사용할 수 있습니다. 예를 들어 PRIMARY 클립 보드 iv id = “사용 yp 명령이있는 55bb7f4af4 “>

:

  • "*yy
  • "*p

더 편리한 키 바인드로 사용할 수 있습니다.

noremap <Leader>y "*y noremap <Leader>p "*p noremap <Leader>Y "+y noremap <Leader>P "+p 

” 자동으로 ” 시스템과 인터페이스하려는 경우 “의 클립 보드를 항상 수동으로 참조하는 대신 clipboard 변수를 설정할 수 있습니다.

  • unnamed로 설정하여 *를 사용 (기본, 선택시)
  • : + 사용 (클립 보드, ^C)

이제 yy를 사용하면 Vim의 이름없는 레지스터 대신 시스템의 클립 보드로 이동하고 p는 시스템을 붙여 넣습니다. “의 클립 보드입니다.

let를 사용하는 모든 레지스터와 마찬가지로 이러한 레지스터에 할당 할 수도 있습니다.

  • :let @+=42
  • :let @*=42

clipboard 설정에는 더 많은 옵션이 있습니다 (예 : 제외 필터). 그러나 이것이 기본입니다. 전체 내용은 :help "clipboard"를 참조하세요.;-)

gVim

gVim을 사용하면 다음과 같은 경우 선택시 복사 동작을 얻을 수 있습니다. :set guioptions+=a를 사용합니다.
X11 시스템에서는 기본적으로 활성화되지만 (PRIMARY로 복사) MS Windows에서는 아니라 & OSX (텍스트를 선택하면 클립 보드보다 우선 적용됨).

아니요 +clipboard?

Vim은 +clipboard 기능 플래그가 작동하도록합니다. Vim 내에서 :echo has("clipboard")를 사용하여 Vim에이 기능이 있는지 확인할 수 있습니다 (출력이 0 인 경우 존재 (1 인 경우) 또는 iv id = “에 대한 vim --version의 출력 확인 237c3b368a “> .

대부분의 Linux 배포판은 기본적으로 ” 최소 ” Vim 빌드와 함께 제공되며

,하지만 일반적으로 설치할 수 있습니다.

  • Debian & Ubuntu : .
  • Fedora : vim-X11를 설치하고 iv id = 대신 vimx를 실행합니다. “acad7a8b55”> ( 추가 정보 ).
  • Arch Linux : 설치 gvim (일반 vim에 대해서도 +clipboard를 활성화합니다.)

또는 xclip, xcopy 또는 xsel를 사용하여 텍스트를 클립 보드에 복사합니다. 다음을 참조하세요. 솔루션 질문 :

SSH

SSH를 통한 X11 전달을 활성화하면 원격 컴퓨터에서도 클립 보드를 사용할 수 있습니다. 위의 팁에서 특히 유용합니다. xclip를 사용하여 데스크톱의 클립 보드에 액세스 할 수 있기 때문입니다. ssh-ing하는 컴퓨터의 Vim에는 여전히 +clipboard 기능.

ForwardX11Trusted 설정이 필요하며 신뢰할 수있는 서버에서만 수행하십시오. 이렇게하면 서버가 X11 세션을 거의 완벽하게 제어 할 수 있습니다.

$ ssh -XY myhost 

이러한 설정을 유지하려면 (매번 -XY를 추가 할 필요가 없도록) ~/.ssh/config :

# Do **NOT** set this globally; it gives the server complete control over # your X11 session. Host myhost ForwardX11 yes ForwardX11Trusted yes 

Neovim

Neovim은 클립 보드 지원을 개선했습니다. 내장 인터페이스가 제거되고 다음을 호출하는 시스템으로 대체되었습니다. xclip, xsel 또는 pbcopy / .

자동화되어야합니다. 이러한 유틸리티를 적극 선택하여 사용하십시오. OS X에서는 pbcopypbpaste가 기본적으로 사용 가능해야하며 Linux에서는 xclip는 가장 널리 사용 가능하므로 실제로 호환되지 않는 플래그 가있는 xsel 버전이 있습니다. 정말 바보입니다).

또한 Neovim에서 :help clipboard 를 참조하세요.

댓글

  • ssh -Y는 -X를 의미하므로 -X를 생략 할 수 있습니다.
  • 이를 배우는 데 따른 매우 흥미로운 부작용 (몇 년 전) 저에게는 "가 여러 개의 명명 된 레지스터를 선택할 수 있다는 것을 깨달았습니다. "+는 마술이 아닙니다. ‘는 + 만 등록합니다. 예를 들어 세 항목을 동시에 복사하여 하나씩 붙여 넣으려면 "1y, "2y"3y 및 l ater "1p, "2p"3p. 이것은 거의 모든 다른 편집기에서 정말 강력하고 존재하지 않습니다. 또 다른 흥미로운 사용법은 저장된 매크로를 보는 것입니다. 예를 들어 qq로 녹음했지만 수정해야한다는 것을 알고 있다면 다음을 수행 할 수 있습니다. 임시 줄 "qp에서 그리고 "qd.
  • 참고 : OS X에는 두 개의 별도 클립 보드가 있습니다. 하나는 Cmd-C 및 Cmd-V를 사용하여 액세스하고 다른 하나는 emacs 키 바인딩 Ctrl-K 및 Ctrl-Y를 사용하여 액세스합니다.
  • @shahbaz-이러한 목적으로 문자 레지스터를 사용하는 것이 더 낫습니다. 숫자는 텍스트가 삭제 될 때마다 변경됩니다.
  • 복사 & 질문에 설명 된대로 붙여 넣기는 데스크톱 용입니다. vim 패키지와 함께 gvim 패키지를 설치하면 클립 보드 기능이 제공됩니다. 그러나 파일 브라우저에서는 파일을 열 수있는 두 개의 텍스트 편집기가 제공됩니다! 그리고 이것은 추악 해 보입니다. 따라서 vimvim-gui-common 패키지 만 설치하는 것이 좋습니다. 나중에 gvim를 설치할 필요없이 클립 보드 기능을 제공합니다. Linux Debian 10에 있습니다.

Answer

From http://vim.wikia.com/wiki/Accessing_the_system_clipboard

set clipboard=unnamedplus 

기본 Vim 레지스터를 레지스터는 시스템 클립 보드에 연결됩니다. :h clipboard-unnamedplus :

 clipboard-unnamedplus unnamedplus A variant of the "unnamed" flag which uses the clipboard register "+" (quoteplus) instead of register "*" for all yank, delete, change and put operations which would normally go to the unnamed register. When "unnamed" is also included to the option, yank operations (but not delete, change or put) will additionally copy the text into register "*". Only available with the +X11 feature. Availability can be checked with: if has("unnamedplus") 

댓글

  • Vim 인스턴스 (각각 별도의 터미네이터 터미널에 있음)간에 붙여 넣기를 & 할 때 왜 이것이 작동하지 않습니까?
  • Linux를 사용하고 있고 Vim이 + X11 기능으로 컴파일되었고 클립 보드 = unnamedplus가 설정되어 있다면 vim의 한 인스턴스에서 한 줄을 잡아 당기고 다른 인스턴스에 붙여 넣을 수 있습니다. 정력의. CTRL + V 또는 SHIFT + INSERT를 사용하여 다른 응용 프로그램에 붙여 넣을 수도 있습니다. Vim 내에서 :version를 사용하여 포함 된 기능 목록에 + X11이 나타나는지 확인할 수 있습니다. ‘ unnamedplus ‘ 기능을 :if has('unnamedplus')⏎ echo 'yes'⏎ endif 에서 사용할 수 있는지 확인할 수도 있습니다. Linux가 아니라면 unnamedplus 대신 unnamed를 사용해야합니다.

Answer

다른 답변은 복사 방법을 다룹니다. 버퍼의 텍스트를 시스템 클립 보드로 복사합니다. 또 다른 일반적인 작업은 다른 등록 에서 클립 보드로 텍스트를 복사하는 것입니다. 예를 들어, “이미 텍스트를 " (기본 레지스터)로 끌어 올린 경우 해당 레지스터를 클립 보드로로드 할 수 있습니다.

다음을 수행 할 수 있습니다. :let로 수행 :

  • let @+=@" — 기본 레지스터를 클립 보드에 복사
  • let @*=@" — 기본 레지스터를 X11 기본 선택 ( “마우스 클립 보드 “)
  • let @+=@a — 레지스터 a에서 클립 보드

일반적으로 레지스터에서 작동합니다. let @a=@b 레지스터 복사 b 등록 a.

답변

켜기 이를 지원하는 빌드에서는 *라는 레지스터가 시스템 클립 보드입니다. Vim에서 시스템 클립 보드로 텍스트를 복사하려면 시각 모드를 사용하여 텍스트를 선택한 다음 " * y 를 눌러 시스템 클립 보드에 복사합니다.

반대로, " * p 를 사용하여 시스템 클립 보드의 텍스트를 Vim에 붙여 넣습니다.

답변

+clipboard를 작동시키는 방법을 알아낼 수 없다면 어떤 이유에서든 할 수 없었습니다.

파일의 한 부분 만 복사하고 싶다고 가정하면 shift + v를 수행합니다. 시각적 모드로 전환하고 복사하려는 선만 강조 표시합니다. 그런 다음 이렇게합니다.

# Linux Wayland :"<,">w !wl-copy # Linux Xorg :"<,">w !xclip -selection clipboard 

설명

  • "<,">-당신을 의미합니다. 범위를 선택하기 위해 시각적 모드를 사용했습니다 (입력하지 않음)
  • w !{cmd}cmd, :help w_c
  • wl-copyxclip는 텍스트를 파이프 할 수있는 프로그램이며 “시스템 클립 보드에 추가합니다.

또한이 기록이 기록에 있으면 전체 내용을 입력 할 필요가 없습니다. 다시 시각 모드로 선택하고 w를 입력 한 다음 위로 누르면 명령이 자동 완성됩니다. 또한 시각 모드를 사용할 필요가 없습니다. 원하는 범위를 설정할 수 있습니다.

댓글

  • 이 항목은 설명을 제공하므로 다른 유사한 답변에 대해 찬성합니다. 그건 그렇고, 나 자신이나 다른 독자들에게 참고할 사항 : xclip를 사용할 때 -selection clipboard 매개 변수를 추가 할 필요가 없습니다. 입력하기에는 너무 느립니다. 기본 :'<,'>w !xclip는 콘텐츠를 ” 기본 ” 즉 copy-on- 마우스 가운데 버튼으로 붙여 넣을 수있는 클립 보드를 선택합니다.

답변

Gvim을 사용하는 것이 좋습니다. 다음을 .vimrc에 추가합니다.

source $VIMRUNTIME/mswin.vim behave mswin 

이렇게하면 Ctrl C , Ctrl X , Ctrl V

이렇게하면 :w, 에 대한 Ctrl S 와 같은 다른 일반적인 Windows 단축키도 추가됩니다. Ctrl A 모두 선택 등

Answer

시스템 클립 보드 및 vim 내부 tmux.

xsel 또는 xclip, 다음 예와 같이 :

1.) visu ally는 일반 모드에서 블록 텍스트를 선택합니다. V<motionkey>

2.a) xsel 실행 예 : :"<,">w !xsel -b

2.b) xclip 실행 예 : :"<,">w !xclip -selection clipboard

3.) 다른 프로그램에 붙여 넣기

… 그리고 이제 이것을 선호하는 것으로 nmap하십시오.

이러한 옵션 (-b 또는-선택 클립 보드)은 기본적으로 프로그램 (xsel 또는 xclip)이 백그라운드로 전송되고 다른 프로그램이 “간섭”할 수 있도록 내용을 붙여 넣습니다.

(i3, xfce4-terminal, tmux가있는 manjaro에서)

Answer

이 동작입니다. 나는 그것이 시스템 클립 보드에 왔을 때 원했다 :

  • 개행이 작동하는 줄에 줄을 잡기
  • 줄 바꿈이 작동하지 않는 줄에 줄을 잡기
  • 시각적으로 무엇이든 줄을 잡기 엄선 된 작품
  • 작품 자르기
  • 개행 작품으로 줄 자르기
  • 개행 작품없이 줄 자르기

작품 별 내 말은 : “Vim에있는 동안에도 여전히 p를 사용하여 붙여 넣을 수 있으며 시스템 클립 보드도 사용할 수 있습니다. 기본적으로 복사 및 붙여 넣기가 예상대로 작동하도록하고 싶습니다. 시스템 클립 보드를 필요 이상으로 복잡하게 만들고 싶습니다.

내 기술은 이러한 줄을 :

" use system clipboard " https://anuragpeshne.github.io/essays/vim/7.html noremap y "*y noremap yy "*yy noremap Y "*y$ noremap x "*x noremap dd "*dd noremap D "*D 

https://anuragpeshne.github.io/essays/vim/7.html 블로그 게시물 :

재귀 적 매핑은 사악합니다. 항상 비재 귀적 매핑을 사용하십시오. (noremap)

댓글

  • "할까요? 첫 번째 답변은 이미 *의 용도 (기본 클립 보드 참조)에 대해 설명했지만 ‘ 어디에서나 설명을 볼 수 없습니다. "의 용도와 그 이유 때문에 명령이 작동합니다.
  • ‘ 당신이 ‘는 아마도 "foo"와 같이 단어 주위를 이동하는 데 사용되는 인용문에 익숙 할 것입니다. 그러나 vim의 경우 "*는 실제로 ” register ” (vim 개념) 시스템 클립 보드에 연결됩니다. vim을 열고 :registers를 입력하면 "", "0, "1 등. 이 기사가 레지스터에 대해 배우는 데 유용하다는 것을 알았습니다. brianstorti.com/vim-registers

Answer

Vim이 +clipboard를 지원하지 않는 경우 fakeclip Linux, Mac, Windows, tmux, screen 용 플러그인 …

Answer

다른 모든 답변에서 다루었습니다. 레지스터에 대한 모든 중요한 것. 내가 사용하는 것을 하나 더 추가하고 싶습니다.

Vim에는 시각적으로 선택된 텍스트를 클립 보드에 추가합니다. 다음을 vimrc 파일에 넣으십시오.

set guioptions+=a 

그리고 시각적으로 텍스트를 선택할 때마다 클립 보드. 이에 대한 자세한 내용은 :help guioptions

BTW, 이것은 gVim 전용입니다.

댓글

  • guioptions+=a는 Carpetsmoker ‘의 답변에도 언급되어 있습니다.
  • @muru 예, 죄송합니다. . 전에는 ‘ 본 적이 없습니다. 방금 봤어요.

답변

글로벌 명령을 사용하여 특정 패턴을 클립 보드. 파일에 정보가 흩어져 있고 수동으로 대처하는 것이 오류와 피곤함을 느끼기 쉬운 상황에서 유용 할 수 있습니다.

먼저 정보를받을 레지스터를 정리

:let @a="" 

그런 다음 패턴이 포함 된 모든 줄을 여기에 복사합니다.

:g/pattern/yank A 

마지막으로 정보를 시스템 클립 보드로 전송 (복사)합니다. / p>

:let @+=@a 

“패턴”이 포함 된 모든 줄을 클립 보드에 직접 복사하려고하면 클립 보드에 새로 추가 기능이 없기 때문에 작동하지 않습니다. 따라서 여기서는 패턴이 포함 된 모든 행을 한 번에 저장 한 다음 클립 보드에 저장하기 위해 일반 vim 레지스터를 사용합니다.

OBS : 사용하기 전에 레지스터를 정리해야합니다. 레지스터의 대문자 버전을 사용하면 내용을 추가 할 수 있습니다. 그렇지 않으면 “답변”이 작동하지 않습니다.

답변

MacVim Cmd + x/c/v 잘라 내기 / 복사 / 붙여 넣기

MacVim을 사용하는 경우 일반적인 Cmd+x/c/v $ VIMRUNTIME / macmap.기본적으로 제공되므로 구성없이 사용할 수있는 vim :

vnoremap <special> <D-x> "+x vnoremap <special> <D-c> "+y cnoremap <special> <D-c> <C-Y> nnoremap <special> <D-v> "+gP cnoremap <special> <D-v> <C-R>+ execute "vnoremap <script> <special> <D-v>" paste#paste_cmd["v"] execute "inoremap <script> <special> <D-v>" paste#paste_cmd["i"] 

그러나이를 사용하면 vim 사용자가 vim 방식이며 외국 컴퓨터 / 환경에서 손실됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다