desarrollo-web-br-bd.com

deshabilitar el soporte del mouse en `vim` en un entorno` gnome-terminal`

Editar: El problema de un mouse habilitado en vim parece ser específico de gnome-terminal (versión 3.4.1.1-1; estoy usando el modo de reserva de gnome 3). Si ejecuto xterm, la compatibilidad con el mouse en vim está deshabilitada de manera predeterminada, y tengo la opción de habilitarla (:set mouse=a, que nunca hago) y desactívelo (:set mouse=). En contraste, cuando ejecuto vim en gnome-terminal, el soporte del mouse está habilitado de forma predeterminada y no es posible deshabilitarlo (:set mouse= no tiene efecto). ¿Existe alguna solución que no sea cambiar el emulador de terminal?


Quiero deshabilitar completamente la compatibilidad con el mouse en vim. Estoy ejecutando vim versión 2: 7.3.547-3 a través de gnome-terminal versión 3.4.1.1-1. Los siguientes comandos, ya sea ejecutados directamente en vim o agregados a mi .vimrc archivo, no se puede desactivar la compatibilidad con el mouse:

set mouse =
set mouse =""

Según la lectura del manual de vim y las publicaciones en línea, uno o ambos de estos comandos deberían funcionar. En particular, el manual de vim establece lo siguiente

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

Estoy usando una computadora portátil y cada vez que mi mano roza el trackpad, la posición de mi cursor en vim se mueve abruptamente.

49
user001

He encontrado la causa de este mal comportamiento con muchos sabores de Linux:

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

es 'fuente' si no hay ~/.vimrc pero incluso si tienes un /etc/vimrc o tal /etc, así que si no tiene uno, simplemente cree uno en blanco como lo sugiere @lgpasquale:

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

Si le gustaron las otras características (como el resaltado de sintaxis) que obtuvo de defaults.vim, puede usar este comando en lugar del anterior:

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

el soporte del mouse está deshabilitado de forma predeterminada, por lo que algo lo está activando. Probablemente la razón de su set mouse= está fallando porque se está ejecutando antes de lo que sea que lo esté activando. Buscaría en el resto de su vimrc, y posiblemente en todo el sistema vimrc (/etc/vim/vimrc es una ubicación estándar).

Como último recurso, puede hacer este truco realmente feo que hará que el comando se ejecute como una de las últimas cosas antes de darle el control del editor.

autocmd BufEnter * set mouse=
24
Patrick

Me encontré con esto en mi aplicación OS X "Terminal" en un servidor Fedora Server 25. Lo resolví permanentemente con esto en mi .vimrc con:

set mouse=
set ttymouse=

Ahora puedo desplazarme hacia mi historial de bash anterior en el desplazamiento hacia atrás de mi terminal con el mouse.

9
Robpol86

Tenía más o menos las mismas quejas sobre la nueva sensibilidad de Vim al ratón. Utilizando set mouse="" tampoco lo hizo por mí.

Yo tengo set mouse=c (sin comillas) cerca de la parte inferior de mi .vimrc archivo. Eso parecía evitar que Vim usara el mouse, excepto cuando usaba "PuTTY" para ingresar desde mi (¡uf!) Máquina de Windows en el trabajo. Tengo que usar shift-middle-button para pegar en PuTTY.

2018-03-30 Editar: ahora he comenzado a usar: :mouse= (sin comillas ni nada) en algunas instancias remotas (CentOS 6.7) de vim para eliminar los efectos no deseados del mouse.

4
Bruce Ediger

En Debian Stret se cargan algunas configuraciones centrales después cargando /etc/vim/vimrc y /etc/vim/vimrc.local. Ver /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
...

Este archivo por defecto es /usr/share/vim/vim80/defaults.vim. Ahora cambiando un archivo central en /usr/share/... es

  • mal
  • no permanente, se revierte después de una actualización

Ajuste skip_defaults_vim al descomentar la línea anterior elimina todas las demás opciones establecidas por ese archivo. Para eliminar las opciones no deseadas, coloque lo siguiente en /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
"...

Esto carga el defaults.vim manualmente y apaga la carga automática, lo que le da la oportunidad de revertir cualquier configuración no deseada, sin tener que crear un .vimrc para cada cuenta de usuario.

3
Holger Böhnke

Agregue esto a su .vimrc:

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

Algo relacionado con la pregunta, si está usando neovim (nvim) debe poner set mouse= en tus ~/.config/nvim/init.vim archivo de configuración.

Si el directorio no existe, créelo con mkdir -p ~/.config/nvim/

0
Marcelo Lacerda