Coller en mode insertion?

Est-il possible de coller en mode insertion dans Vim?

En mode insertion, appuyez sur CTRL-R {register}

Exemples:

  • CTRL-R * va insérer dans le contenu du presse-papiers
  • CTRL-R " (le registre sans nom) insère la dernière suppression ou yank.

Pour trouver ceci dans l’aide de vim, tapez :h i_ctrl-r

Si vous ne souhaitez pas que Vim modifie la mise en forme du texte collé, vous pouvez également envisager d’utiliser :set paste . Cela empêchera Vim de modifier votre code. A la fin du collage :set nopaste reviendra au comportement normal.

Il est également possible de basculer le mode avec une seule touche, en ajoutant quelque chose comme set pastetoggle= à votre fichier .vimrc. Plus de détails sur le basculement automatique sont ici .

Non pas directement Ce que vous pouvez faire, cependant, c’est quitter rapidement le mode d’insertion pour une seule opération en mode normal avec Ctrl-O , puis coller à partir de là, ce qui finira par vous remettre en mode insertion.

Combo clé: Ctrl-O p

EDIT: intéressant. Il semble qu’il y ait un moyen, comme plusieurs autres personnes l’ont mentionné.

Vous pouvez l’utiliser pour coller du presse-papiers avec Ctrl v :

 set pastetoggle= inoremap  + 

Et ceci pour sortinger la sélection visuelle dans le presse-papiers avec Ctrl c :

 vnoremap  "+y 

Si vous souhaitez également utiliser le presse-papier par défaut pour vim yanking / pasting classique ( y / p ) en mode normal, voici une option de configuration qui le fait:

 set clipboard=unnamedplus 

Avec cette configuration, vous pouvez, par exemple, effectuer un premier tirage en mode normal, puis coller avec Ctrl v en mode insertion. Vous pouvez également coller du texte provenant de différentes instances de vim et de différentes applications.

Une autre option est:

 set clipboard=unnamed 

Vous pourrez ensuite simplement sélectionner quelque chose en faisant glisser la souris dans votre environnement X et le coller ensuite dans vim. Mais (pour une raison quelconque), vous ne pourrez pas tirer quelque chose ( y ) dans Vim et le déplacer ultérieurement, ce qui est probablement assez limitatif.

Vim docs à ce sujet: http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Pour coller à partir de registres personnalisés, vous pouvez suivre les autres réponses :). Cette réponse concerne principalement l’intégration de Vim dans le presse-papiers de votre système.


Notez que pour set clipboard=unnamedplus et set clipboard=unnamedplus pour fonctionner, vous devez utiliser gvim ou vimx ( vim-X11 ): Ceux-ci sont compilés avec +xterm_clipboard . Vous pouvez éventuellement mettre ceci dans votre .bashrc à alias vim avec vimx :

 if [ -e /usr/bin/vimx ]; then alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard fi 

Vous pouvez savoir si votre vim a le +xterm_clipboard dans les informations fournies par vim --version .

En mode insertion, vous pouvez utiliser Ctrl-R {register} , où register peut être:

  • + pour le presse-papier,
  • * pour le presse-papiers X (dernier texte sélectionné en X),
  • " pour le registre sans nom (dernière suppression ou yank dans Vim),
  • ou un certain nombre d’autres (voir :h registers ).

Ctrl-R {register} insère le texte comme s’il était tapé.

Ctrl-R Ctrl-O {register} insère le texte avec l’indentation d’origine.

Ctrl-R Ctrl-P {register} insère le texte et le met automatiquement en retrait.

Ctrl-O peut être utilisé pour exécuter toute commande de mode normal avant de retourner en mode insertion,
Ctrl-O "+p peut également être utilisé, par exemple.

Pour plus d’informations, consultez la documentation avec :h i_ctrl-r

Si vous définissez Vim pour utiliser le Presse-papiers du système ( :set clipboard=unnamed ), tout texte copié dans Vim peut être collé à l’aide de Maj + Insertion . Shift + Insert est simplement une combinaison de touches de collage à l’échelle du système d’exploitation ( Ctrl + Insert est la copie correspondante).

Vous pouvez également utiliser le bouton central de la souris pour coller en mode insertion (Linux uniquement).

Vous pouvez entrer -- INSERT (past) -- mode via:

  • Combo clavier: y p

ou

  • :set paste et entrer en mode insertion ( :set nopaste à désactiver)

Une fois en mode -- INSERT (past) -- utilisez simplement la fonction de collage des systèmes (par exemple Ctrl Shift v sous Linux, Cmd v sous Mac OS).

Cette stratégie est très utile lorsque vous utilisez vim sur ssh.

Oui. Sous Windows Ctrl + V et Linux, appuyez simultanément sur les deux boutons de la souris.

Dans Windows, je pense que cette ligne dans mon _vimrc le fait probablement:

 source $VIMRUNTIME/mswin.vim 

Sous Linux, je ne me souviens pas comment je l’ai fait. Il semble que j’ai probablement supprimé une ligne du fichier .vimrc par défaut.

Coller en mode insertion

Une carte personnalisée semble appropriée dans ce cas. C’est ce que j’utilise pour coller les éléments supprimés en mode insertion:

 inoremap p pa 

Ma touche Leader ici est \ ; Cela signifie que si vous appuyez sur \p en mode insertion, les éléments / lignes précédemment supprimés seront collés.