desabilitando o suporte ao mouse em 'vim' em um ambiente 'gnome-terminal'

38

Editar: O problema de um mouse habilitado em vim parece ser específico de gnome-terminal (versão 3.4.1.1-1; estou usando o modo fallback do gnome 3). Se eu executar xterm , o suporte do mouse em vim estará desativado por padrão e eu tenho a opção de habilitá-lo ( :set mouse=a , o que eu nunca faço) e desabilitá-lo ( :set mouse= ). Por outro lado, quando executo vim em gnome-terminal , o suporte a mouse é habilitado por padrão e não é possível desabilitá-lo ( :set mouse= não tem efeito). Existe uma solução que não seja a de alterar o emulador de terminal?

Desejo desativar completamente o suporte do mouse em vim . Estou executando vim versão 2: 7.3.547-3 até gnome-terminal versão 3.4.1.1-1. Os comandos a seguir, sejam executados diretamente no vim ou adicionados ao meu arquivo .vimrc , não desabilitam o suporte ao mouse:

set mouse =
set mouse =""

Com base na leitura do manual do vim e das publicações on-line, um ou ambos os comandos devem funcionar. Em particular, o manual do vim declara o seguinte

'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.

Estou usando um laptop e toda vez que minha mão escova o trackpad, a posição do meu cursor no vim se move abruptamente.

    
por user001 02.08.2012 / 03:04

6 respostas

27

Encontrei o que causa esse mau comportamento com muitos tipos de linux:

/usr/share/vim/vim80/defaults.vim

é 'originado' se não houver ~/.vimrc , mas mesmo se você tiver um arquivo /etc/vimrc ou /etc , então se você não tiver um, crie um em branco como sugerido por @lgpasquale:

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

Se você gostou dos outros recursos (como realce de sintaxe) obtidos do defaults.vim, pode usar esse comando, em vez do anterior:

[[ -s ~/.vim/vimrc ]] && echo "aborted, file exists" || echo -e "source /usr/share/vim/vim80/defaults.vim\nset mouse=" > ~/.vim/vimrc
    
por 21.09.2016 / 23:36
22

o suporte do mouse está desativado por padrão, então algo está ativando-o. Provavelmente a razão pela qual seu set mouse= está falhando é porque ele está sendo executado antes do que está sendo ligado. Eu examinaria o restante do vimrc e possivelmente o vimrc do sistema ( /etc/vim/vimrc é um local padrão).

Como último recurso, você pode fazer este hack realmente feio, o que fará com que o comando seja executado como uma das últimas coisas feitas antes de dar a você o controle do editor.

autocmd BufEnter * set mouse=
    
por 02.08.2012 / 03:19
5

Eu encontrei isso em meu aplicativo OS X "Terminal" em um host Fedora Server 25. Eu permanentemente resolvi isso com isso no meu .vimrc com:

set mouse=
set ttymouse=

Agora, posso rolar até meu histórico bash anterior na rolagem do meu terminal com o mouse.

    
por 19.12.2016 / 01:39
4

Eu tinha praticamente as mesmas reclamações que você sobre a sensibilidade do Vim ao mouse. Usar set mouse="" também não fez isso por mim.

Eu tenho set mouse=c (sem aspas) perto da parte inferior do meu arquivo .vimrc . Isso pareceu impedir que o Vim usasse o mouse, exceto ao usar o "PuTTY" para o ssh da minha (ugh!) Máquina Windows no trabalho. Eu tenho que usar shift-middle-button para colar no PuTTY.

2018-03-30 Edit: Agora eu comecei a usar: :mouse= (sem aspas ou qualquer coisa) em algumas instâncias remotas (CentOS 6.7) do vim para se livrar de efeitos indesejados do mouse.

    
por 02.08.2012 / 04:09
3

Adicione isso ao seu .vimrc :

if has("gui_running")
    "echo "yes, we have a GUI"
    set mouse=a
else
    "echo "Boring old console"
    set mouse=
endif
    
por 08.04.2013 / 03:26
0

Algo relacionado à pergunta, se você estiver usando neovim (nvim), coloque set mouse= no arquivo de configuração ~/.config/nvim/init.vim .

Se o diretório não existir, crie-o com mkdir -p ~/.config/nvim/

    
por 26.03.2018 / 16:29