Vim Cut&Paste가 Stretch/Debian 9에서 작동하지 않습니다.

Vim Cut&Paste가 Stretch/Debian 9에서 작동하지 않습니다.

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

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

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

또한 Shift 및 기타 키보드 조합을 사용하여 마우스 이동을 시도했지만 긍정적인 결과가 없었습니다.

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

상황은 vim이 마우스를 가지고 있다는 것을 인식하고 있기 때문입니다.

Stack Overflow의 다른 질문에 따라 /etc/vim/vimrc.localset mouse="r"; set mouse="v잘 안 됐어요.

set mouse=""마지막으로 동일한 파일에 설정하여 약간의 성공을 거두었습니다.

그러나 이 방법도 항상 100% 잘 작동하는 것은 아닙니다. 또 무엇을 할 수 있나요?

답변1

해결 방법: 로컬에서 mouse=a로 변경하세요 .mouse=r.vimrc

허용되는 답변 에서 알 수 있듯이 이것을 설정할 때의 문제 /usr/share/vim/vim80/defaults.vim는 업데이트할 때마다 덮어쓰여진다는 것입니다. 오랫동안 검색한 결과 다음과 같은 결론이 나왔습니다. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

로컬 솔루션(결함):
첫 번째 해결 방법은 로컬 .vimrc 파일을 사용하여 해당 위치에 설정하는 것입니다. 따라서 모든 사용자에 대해 로컬 .vimrc( ~/.vimrc)를 만들고 거기에서 옵션을 설정할 수 있습니다. 또는 /etc/skel새로 만드는 모든 사용자에 대해 자동으로 생성되도록 하나를 만드세요.

하지만 로컬 파일을 사용할 때는 .vimrc거기에 모든 옵션을 설정해야 합니다. 왜냐하면 로컬 파일이 있으면 가 전혀 로드되지 않기 .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

답변2

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 구성 파일에서 "는 주석을 시작합니다).

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

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

답변3

그만큼mouse옵션 에 대한 Vim 문서라고

Shift 키를 계속 누르고 있으면 마우스 버튼의 xterm 처리를 계속 사용할 수 있습니다.

답변4

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

관련 정보