set mouse = a enabled로 Vim 외부의 텍스트 복사


232

을 활성화 set mouse=a하면 Vim 내부에 복사 된 텍스트는 Vim 외부에 붙여 넣지 않습니다. 아무도 이것을 고칠 수있는 방법을 알고 있습니까?

마우스로 텍스트를 선택하면 비주얼 모드가 켜지고 Copy팝업 메뉴에서 옵션이 비활성화됩니다 .

여기에 이미지 설명을 입력하십시오


2
vim이 +clipboard및 로 컴파일 된 경우 mouse=a터미널 팝업 메뉴를 사용하지 않고 vim에서 vim으로 복사 / 붙여 넣기를 수행 할 수 있습니다. 를 clipboard사용하여 활성화되어 있는지 확인할 수 있습니다 vim --version.
Jérôme Pouiller

워스 A)가 있음을 명확히 @Jezz mouse=a정력이 컴파일 된 컴파일 옵션의 vimrc B의 그것의 무엇인가)되지 않습니다 +clipboard당신이 / 복사 할 때 붙여 넣기 할 수 있습니다 :set number에 있으며, 복사하지 않고 / 숫자를 붙여하지만 아마 당신은 여전히 몇 가지를해야 mappings C) VIM 자체를 다시 컴파일 할 필요는 없으며, 어느 OS에서 지원하는 일부 패키지 관리자의 vim에있을 수도 있습니다. osx의 경우, brew의 vim에는 osx의 기본 vim이 없어도됩니다. 내 대답은이 re osx에 대해 언급합니다.
barlop

아마 설치 xsel도 당신을 위해 일을, 당신은 편집기 또는 마우스로 텍스트를 선택하고 칠 수 ctrl+c는 neovim위한 방법에 의해, 텍스트를 복사 github.com/neovim/neovim/issues/7945#issuecomment-361970165
나임 Baghi

답변:


426

shift마우스로 선택하는 동안을 누르십시오 . 이렇게하면 마우스 선택이 mouse=a활성화되지 않은 것처럼 동작합니다 .

참고 : 이 방법은 "중간 버튼 붙여 넣기"에도 적용됩니다. 외부에서 선택한 vim 텍스트를 붙여 넣으려면 shift가운데 버튼을 클릭하는 동안을 누릅니다. 삽입 모드가 활성화되어 있는지 확인하십시오 ( :set paste예기치 않은 영향을 피할 수도 있음 ).

OS X (mac) : ( source ) 를 선택하는 동안 Alt / Option을 길게 누릅니다.


2
자, 이것이 실제로 해결책입니다. 그러나 화면보다 더 많은 코드를 선택하려면 어떻게해야합니까? (그러면 동시에 스크롤하고 선택해야합니다)
Ozkan

3
<kbd> ctrl </ kbd> + <kbd> shift </ kbd> + 마우스 왼쪽 버튼을 눌러 블록 선택을 시작하여 블록 선택을 사용하는 옵션도 있습니다. 마우스 가운데 버튼은 복사 한 내용을 다른 창에 붙여 넣습니다.
micrub

6
스크린 샷에 표시된대로 줄 번호가있는 경우 Mac OS X에서 ALT를 사용하여 선택할 때 줄 번호도 복사됩니다. 이 경우 블록 선택 모드를 선택할 때 ALT + CMD를 사용하는 것이 더 좋으므로 숫자 선택을 피할 수 있습니다.
Aaron

16
Mac 터미널의 경우 OS X 10.11 El Capitan 이후에 Fnkey가 올바른 방법입니다. 즉, ( mouse=a활성화) Fn키를 누른 상태에서 텍스트를 선택한 다음 CMD + C를 사용하여 원하는 위치에 복사하여 붙여 넣습니다.
YaOzI

1
나는 그 대답이 어떻게 그렇게 많은 투표를했는지 모른다. 줄 번호복사하지 않도록 마우스 지원 활성화 한 경우이 제안은 전혀 쓸모가 없습니다.
Stelios Adamantidis

49

사용하다 " , +, y시각적 인 선택을 한 후. 어쨌든 터미널의 copy 명령을 사용하면 안됩니다. 실제 컨텐츠 대신 터미널이 보는 것을 복사하기 때문입니다. 이것이하는 일은 다음과 같습니다.

  • ", 다음 삭제, yank 또는 put에 대해 +명명 된 레지스터를 사용하도록 Vim에 지시 +합니다. 이름 +이 지정된 레지스터 는 특수 레지스터이며 X11 클립 보드 레지스터입니다. (다른 시스템에서는 *대신 사용 :help clipboard하고 생각합니다. :help x11-selection)
  • y yank 명령으로, Vim에게 이전에 명명 된 레지스터에 선택 항목을 넣도록 지시합니다.

다음과 같이 매핑 할 수 있습니다.

:vmap <C-C> "+y

그런 다음 마우스로 무언가를 강조 표시하고을 눌러 Control-C복사하십시오.

이 기능은 Vim이 +xterm_clipboard옵션 으로 컴파일 된 경우에만 작동합니다 . vim --version그것이 있는지 알아보기 위해 실행하십시오 .


4
아니면 가능 "*y OS에 따라 합니다.
frabjous

작동했습니다! 그러나 조합은 실제로 4 개의 버튼으로 매우 복잡합니다. 아마도 다른 답변에서 "shift"방식을 사용하면서 다른 것을 매핑해야합니다.
lyuba

매핑도 완벽하게 작동합니다 :) 이제 나는 당신의 대답 중 어느 것이 내가 허용 된 것으로 표시
해야하는지 모르겠습니다

2
이 방법을 사용하면 줄 번호가 복사되지 않기 때문에 허용되는 답변보다 더 나은 해결책입니다.
Saulo Silva

무엇에 대해 +clipboard? 그리고 약 무엇 +clipboardxterm_clipboard떨어져?
barlop

18

.vimrc에서 set mouse=a사용 하는 대신set mouse=r


1
그러나 그것은 스크롤을 비활성화합니다
Makesh

3
이유를 말 해주세요. 한눈에, 이것은 기본적으로 마우스 모드를 완전히 비활성화하는 것과 동일하게 보이지만 문제의 핵심은 아닙니다.
Mikel

@Mikel 맞아, 내 대답도 참조 Josh Lee의 답변이 도움이 될 수 있습니다.
barlop

불행히도, 행 번호가 활성화 된 경우 줄 번호도 복사합니다.
vikin9

17

OSX에서는 fn대신에 사용하십시오 shift.


MacOS 호스트에서 키와 동등한 option키로 나를 위해 일했습니다 alt. 그래도 debian9의 원격 터미널이었습니다. 원격 에서 set mouse=a/ 입력 중 하나를 추가하여 작동하지 않았습니다 . set mouse=r/etc/vim/vimrc
mrtipale

5

Ubuntu에서는 Shift 키를 사용하여 강조 표시된 텍스트의 VIM (Ctrl-Shift-C 및 Ctrl-Shift-V) 내에서 X-Term 복사 및 붙여 넣기 바인딩을 사용할 수 있습니다.


4

다른 OSX-Mac 옵션은 선택을 해제하는 것입니다 View->Allow Mouse Reporting (또는 ⌘-R을 눌러 전환). 마우스 상호 작용과 마우스 선택 사이를 전환 할 수 있습니다. 수정 키를 잡아야합니다.

줄 번호가있는 여러 줄 참고 사항 :

일반적으로 줄 번호가 활성화되어 있으므로 여러 줄을 선택하면 줄 번호도 복사됩니다. 줄 번호없이 여러 줄을 복사하려면을 사용하여 번호를 비활성화 :set nonu한 다음 :set nu복사를 마친 후 다시 활성화 할 수 있습니다.


1

:set mouse&vim 명령 줄에서 마우스를 사용하여 선택한 텍스트의 복사 / 붙여 넣기를 활성화 할 수 있습니다 . 그런 다음 마우스 가운데 버튼을 사용하거나 shiftinsert붙여 넣기 만하면 됩니다.


그런 다음 :set number숫자 가 강조 표시됩니다. 별로 좋지 않습니다. 따라서 당신은 다음과 같이함으로써 좋은 일을 취소 할 수 있습니다set mouse=a
barlop

1

vim이 컴파일 된 컴파일 설정이 문제의 일부입니다. vim --version이것들을 보여줍니다.

OSX에서 기본 정력이 있습니다 -clipboard 하지만 당신은 필요+clipboard

osx에서는 macvim을 사용할 수 있으며 일반적으로 사용해야합니다. 당신은 brew cask install macvim 그 하나를 할 수 있습니다+clipboard .

그들에게는 두 개의 독이 있습니다.

~$ ls -l /usr/bin/vim   <--- default vim
-rwxr-xr-x  1 root  wheel  1745984 15 Jul  2017 /usr/bin/vim

~$ ls -l /usr/local/bin/vim   <-- macvim, installed recently via that mentioned brew line. 
lrwxr-xr-x  1 apple  admin  42 16 May 23:32 /usr/local/bin/vim -> /Applications/MacVim.app/Contents/bin/mvim
~$ 

vim을 실행하면 macvim이 실행됩니다. 'cos /usr/local/bin/usr/bin경로에 있어야합니다.which vim .

vim (macvim을 실행)을 실행하는 것은 좋지만 vi를 macvim에 매핑하고 싶을 수도 있습니다. 그렇지 않으면 vi를 실행하면 기본 vim에 유지됩니다! ln을 사용하여 재 작성 또는 삭제 (rm 사용)하고 vi sym 링크를 재 작성할 수 있습니다. 그리고 '작업이 없습니다 "오류를 허용하지 않고, 당신이 (일시적으로) 비활성화 SIL 것을해야 할 일. /apple/208478/how-do-i-disable-system-integrity-protection- siap-aka-rootless-on-macos-os-x .

macvim가있다 +clipboard도시 된 바와 같이vim --version

다음은 ~/.vim/vimrc필요한 줄만 사용 하는 작업 입니다.

:set mouse=a
:map <leader>c "+y
:map <leader>v "+p

기본 리더 키는 백 슬래시입니다.

나는 리더 키를 사용해야한다는 제안을 읽었습니다. (확실히 제어에는 이미 사용중인 많은 키가 있으므로 제어를 사용하지 않는 것이 좋습니다. 명령 키에도 적용되는지 여부는 알 수 없지만 어쨌든).

언급 매핑을, \c할 것 "+y클립 보드에 +로 알려진 레지스터 복사 것이다. 과\v +로 알려진 레지스터에서 붙여 넣습니다.

그래서 그것은 창 사이에서 작동하는 복사 / 붙여 넣기입니다.

다른 OS가 "*아닌"+


두 vims에는 모두 있습니다 -xterm_clipboard. 어쩌면 a +xterm_clipboard는 어떤 식 으로든 도움이되지만이 솔루션에는 중요하지 않습니다.
barlop

0

퍼티 세션을 사용하는 경우 선택을 자동으로 복사합니다. vim에서 "set mouse = a"옵션을 사용한 경우 Shift + 마우스 드래그를 사용하여 선택하면 텍스트가 자동으로 선택됩니다. X-term을 체크인해야합니다.


0

em ... 계속 누르고 Shift마우스 오른쪽 버튼을 클릭


0

set mouse=a질문을 다시 읽고 OP가 처음부터 스위치를 끄고 싶지 않다는 것을 알았을 때 실수로 스위치를 끄는 방법을 설명 했습니다. 어쨌든 set mouse=중앙 에서 마우스 ( )를 끄는 방법을 검색하는 사람은 https://unix.stackexchange.com/a/506723/194822에 대한 답변을 여기에 남겨 둡니다.



0

에 추가 set clipboard=unnamed하십시오 .vimrc. 따라서 모든 yank, delete, change 및 put 작업에 대해 명명되지 않은 레지스터 대신 클립 보드 레지스터 '*'를 사용합니다 (마우스에만 영향을주지 않음).

레지스터 '*'의 동작은 플랫폼 및 vim컴파일 방법 (또는 사용중인 경우) 에 따라 다릅니다.neovim )에 .

작동하지 않으면로 시도 할 수 set clipboard=unnamedplus있지만이 옵션은 X11 시스템에서만 의미가 있습니다.


-3

ESC 모드에서 mouse = a로 설정하면 마우스를 사용하여 텍스트를 선택하십시오. 이것은 vim에서 비주얼 모드를 활성화합니다. 그런 다음 'y'를 눌러 선택한 텍스트를 잡아 당기고 'p'를 눌러 원하는 위치에 붙여 넣을 수 있습니다. 이것은 vim 내에서만 발생합니다.


vim 외부에 붙여 넣을 때이 기능은 작동하지 않습니다.
barlop
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.