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.
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
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=
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.
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.
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
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.
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
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/