web-dev-qa-db-fra.com

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

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?

52
pcapademic

Ajoutez les lignes suivantes à votre _vimrc ou .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 ne voit pas, 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 ;-)

50
Ludwig Weinzierl

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.

44
Cogan

Si vous souhaitez conserver le comportement normal de vim mais également permettre une utilisation moins lourde du presse-papiers du système, voir Accès au presse-papiers du système . Si vous souhaitez que gvim utilise le presse-papiers du système comme tampon par défaut (toute commande x, y, p, etc. utilise le presse-papiers), 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.

9
jtb

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 dans :help mapmode pour en savoir plus sur le remappage et le démappage.

Bonne chance!

2
Peter Thorin