Comment faire couper / copier / coller dans GVim sur Ubuntu fonctionne avec Ctrl + X, Ctrl + C, Ctrl + V?

54

Par défaut, les raccourcis couper / copier / coller dans GVim sur Ubuntu sont les suivants:

 Couper "+ x
 Copier "+ y
 Coller "+ gP

Je voudrais utiliser des combinaisons de touches de contrôle dans GVim, comme dans Firefox et d’autres applications gnome. Comment configurer GVim pour qu'il fonctionne comme les autres applications Gnome?

pcapademic
la source
Pour éviter les conflits avec les touches vim par défaut, optez pour Ctrl + Maj + Touche au lieu de Ctrl + Touche
Sheharyar le

Réponses:

50

Ajoutez les lignes suivantes à votre _vimrcou.vimrc

source $VIMRUNTIME/mswin.vim
behave mswin

Mais attention, le mode visuel est alors CTRL-Q au lieu de CTRL-V.

Pour obtenir un aperçu de ce que mswin.vim voit, consultez le code source mswin.vim . Il est très bien commenté et si une commande n'est pas claire, vous pouvez facilement la rechercher avec l'aide de vim.

Voici un aperçu rapide compilé à partir de la source:

  • les touches de retour arrière et de curseur se positionnent à la ligne précédente / suivante
  • CTRL-X et SHIFT-Del sont coupés
  • CTRL-C et CTRL-Insert sont une copie
  • CTRL-V et SHIFT-Insert sont Coller
  • Utilisez CTRL-Q pour faire ce que CTRL-V faisait
  • Utilisez CTRL-S pour enregistrer, également en mode Insertion
  • CTRL-Z est Annuler; pas dans cmdline si
  • CTRL-Y est Redo (bien que ne répète pas); pas dans cmdline si
  • Alt-Space est le menu Système
  • CTRL-A est tout sélectionner
  • CTRL-Tab est la fenêtre suivante
  • CTRL-F4 est Fermer la fenêtre

À la demande de Nippysaurus: je mets la suite dans mon .gvimrc pour montrer Ctrl-V à côté de Coller dans le menu:

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+

Je ne l'ai pas testée à fond, juste une rapide vérification si elle a répondu à mes attentes. Ça marche pour moi, espérons que ça marche pour vous ;-)

Ludwig Weinzierl
la source
1
Je comprends et apprécie les remarques de Manni et Peter Thorin dans les commentaires de la réponse de Peter Thorin. Mon point de vue est que j'ai appris GVim sous Windows, en remplacement du bloc-notes, et que je veux moins de frictions. Merci Ludwig
pcapademic
2
Existe-t-il un moyen de modifier le texte du raccourci de menu afin qu'il corresponde aux nouvelles touches de raccourci?
Nippysaure
@ Nippysaurus: Je l'avais essayé avec menutrans dans .gvimrc. Je ne l'ai pas fait fonctionner, j'y reviendrai dans la soirée ...
Ludwig Weinzierl
2
On dirait mswin.vimqu'il a déjà un behave mswinappel. Est-il nécessaire de rappeler cela chez moi _vimrc?
Nathan Friend
1
@NathanFriend Ditto. Cela fonctionne même sans behave mswin, du moins sur mon système avec Vim 8.0.
Mikel
46

Si vous voulez que les fonctions Couper / Copier / Coller utilisent les raccourcis clavier "standard", mais que vous ne voulez modifier aucune des autres options de configuration de gvim, essayez d'ajouter ce qui suit à ~/.vimrc.

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

Le collage ne fonctionne qu'en mode visuel et en mode insertion, de sorte que vous n'avez pas à vous soucier du conflit entre Ctrl-V et le mode visuel par blocs. Ce n'est pas un problème, car Copy and Cut vous met en mode insertion et vous permet de coller immédiatement après. Si vous l'essayez, vous constaterez que cela se sent complètement naturel.

Je suis venu avec cette configuration après plusieurs itérations de peaufinage, et je pense que c'est "parfait" maintenant. Si vous n'êtes même pas satisfait de votre configuration actuelle de copier / coller, essayez-le et je parie que vous allez l'adorer.

Cogan
la source
Ceci est exactement ce que je cherchais. Merci.
Sean McCleary
2
Après quelques expériences et consultation de :help i_ctrl-r_ctrl-o, j'ai décidé de changer imap <C-v> <ESC>"+papour imap <C-v> <C-r><C-o>+; cela fonctionne comme prévu lorsque le curseur se trouve à gauche du premier caractère d'une ligne et imite le plus fidèlement le comportement "standard".
Holger
Je pense changer <C-v>pour changer + insérer qui semble être beaucoup plus rapide sur ma machine. Mais au milieu d'un projet, vous n'avez pas envie de redémarrer vim pour le moment. Tout partage
Will
Tu es génial =)
Yugal Jindle
9

Si vous souhaitez conserver le comportement normal de vim tout en permettant une utilisation moins lourde du Presse-papiers du système, reportez -vous à la section Accès au Presse-papiers du système . Si vous souhaitez gvim utiliser le presse - papiers du système comme mémoire tampon par défaut (donc tout x, y, p, etc. commande utilise le presse - papier) , puis ajoutez la ligne suivante à votre vimrc:

set clipboard=unnamed

Personnellement, j'utilise beaucoup plus les tampons dans vim qu'entre vim et le système; Je préférerais donc avoir un raccourci légèrement plus encombrant que de voir le presse-papier de mon système constamment bouché. Mais c'est bien que l'option soit là pour ceux qui le préféreraient.

jtb
la source
2

Je pense que vous pouvez ajouter ceci avec la commande: imap (essayé avec Ctrl + X sous Windows, cela a fonctionné, appuyer sur ctrl + c semble annuler la commande, donc vous devrez peut-être le faire dans vimrc).

:imap <C-X> "+x
:imap <C-C> "+y 
:imap <C-V> "+gP

Si vous l'ajoutez à votre ~ / .vimrc, il vous suffit de supprimer le: devant imap.

imap ajoute uniquement les liaisons en mode insertion, vous pouvez donc le changer pour une carte ou autre chose. Regardez :help mapmodepour en savoir plus sur le remappage et le démappage de choses.

Bonne chance!

Peter Thorin
la source
1
Cela devrait faire un peu du tour. Mais c'est une mauvaise idée de le faire. Ctrl-V devrait passer en mode visuel, Ctrl-C annulera toutes les commandes. Et l'astuce ne fonctionnera que sur votre système; sur une autre machine, vous serez perdu.
InnaM
1
Je suis en partie d’accord avec le fait que c’est une mauvaise idée, je ne voudrais pas l’utiliser moi-même, mais si vous êtes un utilisateur occasionnel de gvim, vous ne rateriez probablement pas les liaisons que vous supprimez de toute façon.
Peter Thorin
1
Pourquoi utiliser gvim en premier lieu? Combien de temps resterez-vous un utilisateur occasionnel?
InnaM
2
Je ne pense pas que ce soit une si mauvaise idée. Les gens sont habitués à Ctrl + X etc. et il y a des milliards d'autres raisons d'utiliser vim.
Ludwig Weinzierl