web-dev-qa-db-fra.com

désactivation de la prise en charge de la souris dans `vim` dans un environnement` gnome-terminal`

Edit: Le problème d'une souris activée dans vim semble être spécifique à gnome-terminal (version 3.4.1.1-1; j'utilise le mode de secours de gnome 3). Si j'exécute xterm, la prise en charge de la souris dans vim est désactivée par défaut et j'ai la possibilité de l'activer (:set mouse=a, ce que je ne fais jamais) et le désactiver (:set mouse=). En revanche, lorsque j'exécute vim dans gnome-terminal, la prise en charge de la souris est activée par défaut et il n'est pas possible de la désactiver (:set mouse= n'a aucun effet). Existe-t-il une solution à court de changer d'émulateur de terminal?


Je souhaite désactiver complètement la prise en charge de la souris dans vim. J'exécute vim version 2: 7.3.547-3 à gnome-terminal version 3.4.1.1-1. Les commandes suivantes, qu'elles soient exécutées directement dans vim ou ajoutées à mon .vimrc fichier, impossible de désactiver la prise en charge de la souris:

set mouse =
set mouse =""

D'après la lecture du manuel de vim et des publications en ligne, l'une ou les deux de ces commandes devraient fonctionner. En particulier, le manuel vim indique ce qui suit

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

J'utilise un ordinateur portable et chaque fois que ma main brosse le trackpad, la position de mon curseur dans vim se déplace brusquement.

49
user001

J'ai trouvé la cause de ce mauvais comportement avec de nombreuses versions de Linux:

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

il est "sourcé" s'il n'y a pas de ~/.vimrc mais même si vous avez un /etc/vimrc ou tel /etc fichier, donc si vous n'en avez pas, créez-en un vierge comme suggéré par @lgpasquale:

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

Si vous avez aimé les autres fonctionnalités (comme la coloration syntaxique) que vous avez obtenues de defaults.vim, vous pouvez utiliser cette commande plutôt que la précédente:

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

la prise en charge de la souris est désactivée par défaut, donc quelque chose l'allume. Probablement la raison pour laquelle votre set mouse= échoue parce qu'il s'exécute avant tout ce qui est activé. Je regarderais le reste de votre vimrc, et peut-être le vimrc à l'échelle du système (/etc/vim/vimrc est un emplacement standard).

En dernier recours, vous pouvez faire ce hack vraiment laid qui fera exécuter la commande comme l'une des dernières choses effectuées avant de vous donner le contrôle de l'éditeur.

autocmd BufEnter * set mouse=
24
Patrick

Je suis tombé sur cela sur mon application "Terminal" OS X sur un hôte Fedora Server 25. Je l'ai définitivement résolu avec ceci dans mon .vimrc avec:

set mouse=
set ttymouse=

Maintenant, je peux faire défiler jusqu'à mon historique bash précédent dans le défilement arrière de mon terminal avec ma souris.

9
Robpol86

J'ai eu à peu près les mêmes plaintes que vous au sujet de la sensibilité du nouveau Vim à la souris. En utilisant set mouse="" ne l'a pas fait pour moi non plus.

J'ai set mouse=c (sans guillemets) près du bas de mon .vimrc fichier. Cela semblait empêcher Vim d'utiliser la souris, sauf lors de l'utilisation de "PuTTY" pour ssh depuis ma (ugh!) Machine Windows au travail. Je dois utiliser shift-middle-button pour coller dans PuTTY.

2018-03-30 Edit: J'ai maintenant commencé à utiliser: :mouse= (sans guillemets ni rien) sur certaines instances distantes (CentOS 6.7) de vim pour se débarrasser des effets de souris indésirables.

4
Bruce Ediger

Sur Debian Stretch, certains paramètres centraux sont chargés après chargement /etc/vim/vimrc et /etc/vim/vimrc.local. Voir /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
...

Par défaut, ce fichier est /usr/share/vim/vim80/defaults.vim. Modification d'un fichier central sous /usr/share/... est

  • mal
  • non permanent, il est rétabli après une mise à jour

Réglage skip_defaults_vim en décommentant la ligne ci-dessus supprime toutes les autres options définies par ce fichier. Pour supprimer simplement les options indésirables, mettez ce qui suit dans /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
"...

Cela charge le defaults.vim manuellement et désactive le chargement automatique, vous donnant ainsi la possibilité de rétablir tous les paramètres indésirables, sans avoir à créer un .vimrc pour chaque compte utilisateur.

3
Holger Böhnke

Ajoutez ceci à votre .vimrc:

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

Relativement à la question, si vous utilisez neovim (nvim), vous devez mettre set mouse= dans ton ~/.config/nvim/init.vim fichier de configuration.

Si le répertoire n'existe pas, créez-le avec mkdir -p ~/.config/nvim/

0
Marcelo Lacerda