![Vim Cut&Paste가 Stretch/Debian 9에서 작동하지 않습니다.](https://rvso.com/image/97232/Vim%20Cut%26Paste%EA%B0%80%20Stretch%2FDebian%209%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
여기에서 몇 개의 VM 서버를 Debian 9로 업그레이드했습니다.
이제 를 사용할 때 ssh
원격 터미널 간에 복사하여 붙여넣을 수 없습니다.
커서는 평소보다 더 재미있고 다른 방식으로 이동하고 텍스트를 표시하는 것처럼 보이지만 command-C/command-V를 수행하거나 해당 메뉴에서 복사하여 붙여넣을 때 클립보드에 아무것도 복사되지 않습니다. .
또한 Shift 및 기타 키보드 조합을 사용하여 마우스 이동을 시도했지만 긍정적인 결과가 없었습니다.
이는 OS/X, 즉 Sierra 및 El Capitan과 Windows에서도 mobaXterm 터미널을 사용하여 발생합니다.
상황은 vim이 마우스를 가지고 있다는 것을 인식하고 있기 때문입니다.
Stack Overflow의 다른 질문에 따라 /etc/vim/vimrc.local
및 set 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
. 행운을 빕니다!