스트레치 / 데비안 9에서 vim cut & paste가 작동하지 않습니다 보이지만 command-C / command-V를

여기 몇 개의 VM 서버를 데비안 9로 업그레이드했습니다.

이제를 사용할 때 ssh원격 터미널간에 복사하여 붙여 넣을 수 없습니다.

커서가 평소보다 재미 있고 다른 방식으로 움직임을 보이고 텍스트를 표시하는 것처럼 보이지만 command-C / command-V를 수행하거나 각 메뉴에서 복사하여 붙여 넣을 때 클립 보드에 다른 내용이 복사되지 않습니다. .

또한 긍정적 인 결과없이 Shift와 다른 키보드 조합으로 마우스 움직임을 시도했습니다.

이는 OS / X, 즉 Sierra 및 El Capitan 및 Windows에서 mobaXterm 터미널을 사용하여 발생합니다.

상황은 마우스가 있다는 vim의 인식 때문입니다.

스택 오버플로 다른 질문에 따라, 나는 창조 /etc/vim/vimrc.localset mouse="r"set mouse="v; 제대로 작동하지 않았습니다.

마지막으로 set mouse=""약간의 성공으로 동일한 파일에 설치 하십시오.

그러나 시간의 100 %도 제대로 작동하지 않습니다. 다른 무엇을 할 수 있습니까?



답변

해결책은 실제로 옵션 mouse=a을로 설정하는 것 mouse=r입니다.

/usr/share/vim/vim80/defaults.vim허용 된 답변 에서 알 수 있듯이 이것을 설정할 때의 문제 는 모든 업데이트에서 덮어 쓰게된다는 것입니다. 나는 오랫동안 검색하고 이것에 끝났다 :
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

첫 번째 방법은 로컬 .vmrc 파일을 사용하여 설정하는 것입니다.
따라서 ~/.vimrc모든 사용자에 대해 로컬 .vimrc ( )를 만들고 옵션을 설정할 수 있습니다. 또는 /etc/skel새로 생성 할 때마다 자동으로 생성되도록 하나 를 만듭니다.

로컬 .vmrc 파일을 사용하는 경우, 당신은 로컬이 있다면 있기 때문에, 거기에 모든 옵션을 설정해야합니다 .vimrc, (가) defaults.vim모든로드되지 않습니다! 로컬이 없으면에서 .vimrc모든 설정을 덮어 씁니다 defaults.vim.

기본 옵션을로드 한 다음 개인 설정으로 기본값을 추가하거나 덮어 쓰는 모든 사용자에 대한 전역 구성을 원했습니다. 운 좋게도 데비안에는 그 옵션 /etc/vim/vimrc.local이 있습니다 : 는 다음에로드됩니다 /etc/vim/vimrc. 따라서이 파일을 작성하고 기본값을로드하고, 다시로드하지 못하게하고 (끝에) 개인 옵션을 추가 할 수 있습니다.

다음 파일을 작성하십시오 : /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(참고 $VIMRUNTIME위 코드에서 사용 된 같은 값을 갖는다 /usr/share/vim/vim80/defaults.vim.)

“이전 복사 / 붙여 넣기 동작”을 활성화하려면 해당 파일의 끝에 다음 줄을 추가하십시오.

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

답변

마우스 인식에서 vim을 자르는 한 가지 방법은 마우스에 대한 구성을 주석 처리하는 것 같습니다.

에서 /usr/share/vim/vim80/defaults.vim나는 같이 마우스 특정 검출을 주석 :

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(그 vim 구성 파일에서 “은 주석을 시작합니다).

이 변경으로 인해 문제없이 다시 복사하여 붙여 넣을 수있었습니다.

구성 파일을 보호하거나 전환하지 않는 한 실제로 업데이트로 덮어 쓰기 때문에 이것이 이상적인 솔루션이 아니라는 의견에 동의합니다. 당시에는 패키지 버전이나 내가 일했던 서버 구성의 사양으로 인해 유일하게 작동했습니다. 따라서이 답변을 여기에 남겨두고 최후의 수단으로 사용해야합니다 .


답변

에 대한 빔 문서 mouse옵션은 말한다

Shift 키를 누른 상태로 마우스 버튼의 xterm 처리를 계속 사용할 수 있습니다.


답변

/etc/vimrc.local다음 을 작성 하고 삽입하여 시스템 파일을 변경하지 않고이를 비활성화 할 수 있습니다 .

set mouse=

답변

많은 사람들이 제안 :set mouse=a했지만 :set mouse=r데비안 9의 Vim에서는 복사 및 붙여 넣기 만 가능합니다. 행운을 빕니다!