`gnome-terminal '환경에서`vim`에서 마우스 지원 비활성화


47

편집 : 활성화 된 마우스의 문제는 vim특정 gnome-terminal버전 인 것으로 보입니다 (버전 3.4.1.1-1; 나는 그놈 3 대체 모드를 사용하고 있습니다). 을 실행 xterm하면 마우스 지원 기능 vim이 기본적으로 비활성화되어 있으며 활성화 :set mouse=a하지 않고 (비활성화하지 않음) 비활성화하는 옵션이 있습니다 ( :set mouse=). 반대로, vim에서 실행할 때 gnome-terminal기본적으로 마우스 지원이 활성화되어 :set mouse=있으며 비활성화 할 수 없습니다 (효과 없음). 터미널 에뮬레이터를 바꾸는 것이 부족한 해결책이 있습니까?


에서 마우스 지원을 완전히 비활성화하고 싶습니다 vim. 나는 실행하고 vim통해 7.3.547-3 : 버전 2 gnome-terminal버전 3.4.1.1-1. vim에서 직접 실행하거나 .vimrc파일에 추가 한 다음 명령은 마우스 지원을 비활성화하지 못합니다.

set mouse =
set mouse =""

vim 매뉴얼과 온라인 게시물을 읽은 것을 바탕으로이 명령 중 하나 또는 둘 다 작동합니다. 특히, vim 매뉴얼은 다음과 같이 말합니다.

'mouse'                 string  (default "", "a" for GUI, MS-DOS and Win32)
    The mouse can be enabled for different modes:
            n       Normal mode
            v       Visual mode
            i       Insert mode
            c       Command-line mode
            h       all previous modes when editing a help file
            a       all previous modes
            r       for |hit-enter| and |more-prompt| prompt 
    Normally you would enable the mouse in all four modes with: >
            :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

랩톱을 사용하고 있는데 손으로 트랙 패드를 닦을 때마다 vim의 커서 위치가 갑자기 움직입니다.

답변:


29

나는 많은 리눅스 맛 으로이 나쁜 행동을 일으키는 것을 발견했습니다.

/usr/share/vim/vim80/defaults.vim # may be "vim81" depending on your vim version

파일 ~/.vimrc/etc/vimrc없거나 /etc파일 이있는 경우에도 '소스'입니다 . 따라서 파일이 없으면 @lgpasquale에서 제안한대로 빈 파일을 만듭니다.

mkdir ~/.vim/; [[ -s ~/.vim/vimrc ]] && echo "aborted, file exists" || :> ~/.vim/vimrc

defaults.vim에서 가져온 다른 기능 (구문 강조 표시 등)이 마음에 들면 이전 명령 대신이 명령을 사용할 수 있습니다.

mkdir ~/.vim/; [[ -s ~/.vim/vimrc ]] && echo "aborted, file exists" || echo -e "source /usr/share/vim/vim80/defaults.vim\nset mouse=" > ~/.vim/vimrc

2
감사합니다! 해당 파일에서 "mouse -a"행을 주석 처리하면 문제가 해결되었습니다 (Archlinux에서)
luckyrumo

1
해당 파일 (archlinux에서 vim-runtime의 일부)을 편집 할 필요는 없습니다. 해당 파일에 명시된 바와 같이 vimrc가없는 경우에만로드됩니다. 즉, .vimrc파일을 집에두면 문제가 해결됩니다 (나를 위해). 아무 것도 포함 할 필요가 없으며 빈 파일 일 수도 있습니다.
lgpasquale

이것은 Fedora 25의 실제 솔루션입니다.
KamikazeCZ

2017 년 말 데비안 8
에서이 기능이 제대로

1
@rlf 내 의견 /usr/share/으로는 패키지 관리자가 관리 하는 파일을 편집하는 것은 나쁜 생각입니다. 의 옵션 중 일부를 유지하려면에 옵션을 defaults.vim복사합니다 ~/.vimrc.
lgpasquale

24

마우스 지원은 기본적으로 비활성화되어 있으므로 무언가 켜져 있습니다. 아마도 당신 set mouse=이 실패 하는 이유 는 그것이 무엇을 켜기 전에 실행되기 때문입니다. vimrc의 나머지 부분과 시스템 전체의 vimrc ( /etc/vim/vimrc표준 위치)를 살펴 보겠습니다 .

최후의 수단으로,이 추악한 해킹을 수행하면 편집기를 제어하기 전에 명령을 마지막으로 수행 할 수 있습니다.

autocmd BufEnter * set mouse=

2
/etc/vim/vimrc파일은 꽤 드러났습니다 ( runtime! debian.vim조건부 if filereadable("/etc/vim/vimrc.local") ; source /etc/vim/vimrc.local; endif). /etc/vim/vimrc.local파일은 내 시스템에 존재하지 않습니다. 내 ~/.vimrc파일에는 수동으로 추가 한 몇 줄만 있습니다. 의 stracevim구성 파일에 대한 다음 위치를 확인합니다 : /usr/share/vim/vimrc, /etc/vim/vimrc.local( ENOENT ) 및 /home/user/.vimrc. (ENOENT 오류가 발생하는 이유는 무엇입니까?이 if문이 존재하지 않는 파일을 열려고 시도 하지 못 합니까?).
user001

또한 :set mouse=vim에 직접 입력하면 구성 파일의 설정을 재정의해서는 안됩니까? 왜이 문장을 직접 실행하면 vim마우스 컨트롤이 비활성화되지 않습니까?
user001

1
@ user001 ENOENTvim에서 파일이 존재하는지 확인해야합니다. 이것은 일반적으로 파일이 존재하지 않는 경우 statreturn 을 호출 하여 수행됩니다 ENOENT.
Ulrich Dangel 5

2
@ user001 아, 현재 세션에 입력 할 때 작동하지 않는다는 사실은 중요한 정보입니다. 이를 바탕으로 문제가 vim인지 확실하지 않습니다. 아마도 그놈 터미널은 끔찍한 일을하고있을 것입니다. 다른 터미널 에뮬레이터를 사용해 볼 수 있습니까?
Patrick

안녕하세요, 좋은 제안입니다. xterm마우스를 사용해 보았는데 아무런 문제가 없었습니다. 나는 입력하여 문제를 재현 할 수 :set mouse=a에서 vim의 실행을 xterm(하고 다음을 입력하여 역 :set mouse=). gnome-terminal글리치 문제를 해결하는 방법에 대한 아이디어가 있습니까? 새 스레드를 시작해야합니까? 감사.
user001

9

Fedora Server 25 호스트의 OS X "터미널"앱에서이 문제가 발생했습니다. .vimrc에서 다음과 같이 영구적으로 해결했습니다.

set mouse=
set ttymouse=

이제 마우스로 터미널의 스크롤 백에서 이전 bash 기록으로 스크롤 할 수 있습니다.


vim이 업데이트되면 vimrc.local이 업데이트되지 않으므로 vimrc.local을 같은 카탈로그에 작성하는 것이 좋습니다.
Orphans

Raspbian 9.4에서 나를 위해 일했습니다. PUTTY를 통해 로그인 할 때 다른 답변으로 원하지 않는 마우스 동작을 해결하지 못했습니다.
Dmitry

다른 사람이 잘라서 붙여 넣기하는 경우 set ttymouse=화살표 키의 동작, 이스케이프 키가 변경되는 등의 이상한 동작이 발생했습니다.
mozboz

4

마우스에 대한 새로운 Vim의 민감도에 대한 불만이 거의 동일했습니다. 사용하는 set mouse=""것도 나를 위해 그것을하지 않았다.

파일 set mouse=c하단에 따옴표 가 없습니다 .vimrc. 그것은 "PuTTY"를 사용하여 직장에서 내 (웃음) Windows 컴퓨터에서 ssh로 들어갈 때를 제외하고는 Vim이 마우스를 사용하지 못하게하는 것처럼 보였습니다. PuTTY에 붙여 넣으려면 Shift-Middle 버튼을 사용해야합니다.

2018-03-30 편집 : :mouse=원치 않는 마우스 효과를 없애기 위해 vim의 일부 원격 (CentOS 6.7) 인스턴스에서 : (따옴표 또는 아무것도 사용 하지 않음)를 사용하기 시작했습니다 .


안녕하세요, 제안 해 주셔서 감사합니다. 나는 이것을 .vimrc파일에 추가 하고 대화식으로 실행하려고했지만 ( :set mouse=c) 내 경우에는 영향을 미치지 않았다.
user001

3

이것을 다음에 추가하십시오 .vimrc.

if has("gui_running")
    "echo "yes, we have a GUI"
    set mouse=a
else
    "echo "Boring old console"
    set mouse=
endif

1
이것은 묻는 질문과 관련이 없습니다.
GKFX

@GKFX 확실합니까? 그것은 나에게 관련이 보인다. 주 has("gui_running")단말 환경에서 0이다. 이 답변은 다른 답변과 달리 터미널 환경 에서만 마우스를 비활성화 하기 위해 추가 노력이 필요합니다. 단지 질문은 gvim에서 활성화 된 상태로 둡니다.
hvd

@ hvd 나는 내 의견을 조금 거칠게 말했다. 죄송합니다. 그러나이 답변은 OP가 이미 시도한 것을 if 블록으로 묶기 때문에 도움이되지 않습니다.
GKFX

1
@GKFX 페어 포인트이며 다른 답변에도 적용됩니다.
hvd

3

데비안 스트레치에 일부 중앙 설정이로드 된 로드 /etc/vim/vimrc/etc/vim/vimrc.local. 참조 /etc/vim/vimrc:

...
" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
" If you don't want that to happen, uncomment the below line to prevent
" defaults.vim from being loaded.
"let g:skip_defaults_vim = 1
...

이 파일의 기본값은 /usr/share/vim/vim80/defaults.vim입니다. 이제 아래 중앙 파일 변경 /usr/share/...IS를

  • 비 영구적이면 업데이트 후 되돌립니다.

skip_defaults_vim위의 행을 주석 해제하여 설정 하면 해당 파일에서 설정 한 다른 모든 옵션이 제거됩니다. 원하지 않는 옵션을 제거하려면 다음을 입력하십시오 /etc/vimrc.local.

" /etc/vim/vimrc.local
" honor skip_defaults_vim from the master /etc/vim/vimrc file
if ! exists('skip_defaults_vim')
  " Source the defaults file manually from here
  source $VIMRUNTIME/defaults.vim
endif

" avoid loading the defaults twice
let g:skip_defaults_vim = 1

" revert any unwanted changes the defaults file introduced
set mouse=

" set any other options you want centrally on your system
"set paste " uncomment if you want paste insert enabled
"...

이렇게하면 defaults.vim수동으로로드되고 자동로드가 꺼 지므로 .vimrc모든 사용자 계정에 대해 설정을 만들지 않고도 원치 않는 설정을 되돌릴 수 있습니다.


당신의 대답은 마침내 데비안 10 "버스터"의 문제에 대한 진정한 해결책을 주었다. 고마워
aef

0

당신이 neovim (nvim) 당신이 놓아야 사용하는 경우 약간, 질문과 관련 set mouse=하여에 ~/.config/nvim/init.vim구성 파일을.

디렉토리가 존재하지 않으면 mkdir -p ~/.config/nvim/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.