web-dev-qa-db-fra.com

vim couper-coller ne fonctionne pas dans Stretch / Debian 9

Mis à jour ici quelques serveurs VM vers Debian 9.

Maintenant, lorsque vous utilisez ssh, nous ne pouvons pas copier et coller entre les terminaux distants.

Le curseur semble faire les mouvements et marquer le texte, bien que d'une manière plus amusante/différente que d'habitude, mais rien n'est copié autre dans le presse-papiers lors de l'exécution de la commande-C/commande-V ou du copier-coller dans le menu respectif .

Nous avons également essayé de faire les mouvements de la souris avec Shift et d'autres combinaisons de clavier, sans résultats positifs.

Cela se produit sous OS/X, à savoir Sierra et El Capitan, et sous Windows, en utilisant également les terminaux mobaXterm.

La situation est due à la conscience de Vim d'avoir une souris.

Suite à d'autres questions dans Stack Overflow, j'ai créé /etc/vim/vimrc.local avec set mouse="r" et set mouse="v; cela n'a pas bien fonctionné.

Enfin, configurez set mouse=""dans le même fichier, avec un succès modéré.

Cependant, cela ne fonctionne pas non plus bien à 100% du temps. Que peut-on faire d'autre?

35
Rui F Ribeiro

La solution consiste en fait à définir l'option mouse=a Sur mouse=r.

Le problème lors de la définition de ceci dans le /usr/share/vim/vim80/defaults.vim, Comme le dit la réponse acceptée, est qu'il sera écrasé à chaque mise à jour. J'ai cherché longtemps et je me suis retrouvé sur celui-ci: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

La solution consiste dans un premier temps à utiliser des fichiers .vmrc locaux et à les y paramétrer. Vous pouvez donc créer un .vimrc local (~/.vimrc ) pour chaque utilisateur et définissez-y vos options. Ou créez-en un dans /etc/skel Afin qu'il soit automatiquement créé pour chaque nouvel utilisateur que vous créez.

Mais lorsque vous utilisez des fichiers .vmrc locaux, vous devez y définir toutes les options, car s'il existe un .vimrc Local, le defaults.vim Ne se charge pas du tout! Et s'il n'y a pas de .vimrc Local, tous vos paramètres sont remplacés par defaults.vim.

Je voulais une configuration globale pour tous les utilisateurs, qui charge les options par défaut, puis ajoute ou écrase les valeurs par défaut avec mes paramètres personnels. Heureusement, il existe une option pour cela dans Debian: Le /etc/vim/vimrc.local sera chargé après le /etc/vim/vimrc. Vous pouvez donc créer ce fichier et laisser les valeurs par défaut en cours de chargement, les empêcher d'être chargées à nouveau (à la fin), puis ajouter vos options personnelles:

Veuillez créer le fichier suivant: /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

(Notez que $VIMRUNTIME Utilisé dans l'extrait ci-dessus a une valeur comme /usr/share/vim/vim80/defaults.vim.)

Si vous souhaitez également activer "l'ancien comportement copier/coller", ajoutez également les lignes suivantes à la fin de ce fichier:

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction
39
I-GaLaXy-I

Une façon de couper vim de la conscience de la souris semble être de commenter la configuration de la souris.

Dans /usr/share/vim/vim80/defaults.vim J'ai commenté la détection spécifique de la souris comme dans:

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(dans ces fichiers de configuration vim, "lance un commentaire).

Le changement nous a permis de copier et coller à nouveau sans aucun problème.

Je suis d'accord avec les commentaires, ce n'est pas la solution idéale, car il est en effet écrasé dans toute mise à jour à moins que le fichier de configuration soit protégé (ou détourné). À l'époque, et en raison des spécificités d'une version du package ou de la configuration des serveurs sur lesquels je travaillais, c'était la seule qui fonctionnait. En tant que tel, je laisse cette réponse ici, et elle ne doit être utilisée qu'en dernier recours.

26
Rui F Ribeiro

La documentation Vim pour l'option mouse dit

La gestion xterm des boutons de la souris peut toujours être utilisée en maintenant la touche Maj enfoncée.

11
Stefan

Vous pouvez désactiver cela sans modifier les fichiers système en créant /etc/vimrc.local et en insérant ce qui suit:

set mouse=
3
Geoffrey

Beaucoup de gens ont suggéré :set mouse=a mais j'ai trouvé que seulement :set mouse=r active le copier-coller dans Vim sur Debian 9. Bonne chance!

2
David Yeager