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-papierCTRL-R "
(registre non nommé) insère la dernière suppression ou suppression.Pour trouver cela dans l'aide de vim, tapez :h i_ctrl-r
Si vous ne voulez pas que Vim modifie le formatage du texte collé entrant, vous pouvez également envisager d'utiliser: :set paste
. Cela empêchera Vim de re-tabuler votre code. Une fois le collage terminé, :set nopaste
reviendra au comportement normal.
Il est également possible de basculer le mode avec une seule clé en ajoutant quelque chose comme set pastetoggle=<F2>
à votre fichier .vimrc. Plus de détails sur le basculement automatique sont ici .
Non pas directement. Cependant, vous pouvez quitter rapidement le mode insertion pour un fonctionnement en mode normal avec Ctrl-O puis collez à partir de là qui finira par vous remettre en mode insertion.
Combo clé: Ctrl-Op
EDIT: Intéressant. Il semble qu'il existe un moyen comme plusieurs autres personnes l'ont mentionné.
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é dans X),"
pour le registre sans nom (dernière suppression ou yank dans Vim),:h registers
).Ctrl-R {register}
insère le texte comme s'il était saisi.
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 une commande en mode normal avant de revenir en mode insertion.Ctrl-O "+p
peut également être utilisé, par exemple.
Pour plus d'informations, consultez la documentation avec :h i_ctrl-r
Vous pouvez l'utiliser pour coller du presse-papiers avec Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
Et ceci pour une sélection visuelle dans le presse-papiers avec Ctrlc:
vnoremap <C-c> "+y
Si vous souhaitez également utiliser le presse-papiers par défaut pour vim yanking/coller classique (y/p) en mode normal, voici une option de configuration qui le fait:
set clipboard=unnamedplus
Avec cette configuration, vous pouvez par exemple tirez d’abord en mode normal puis collez avec Ctrlv en mode insertion. En outre, vous pouvez coller du texte provenant de différentes instances de vim et de différentes applications.
Une autre option est:
set clipboard=unnamed
Ensuite, vous pourrez 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) à Vim et shiftinsert quelque part par la suite, ce qui est probablement très limitatif.
Vim docs à ce sujet: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Pour coller des 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 que set clipboard=unnamedplus
et set clipboard=unnamed
fonctionnent, vous devez utiliser gvim ou vimx (vim-X11
): ceux-ci sont compilés avec +xterm_clipboard
. Vous pouvez éventuellement placer ceci dans votre .bashrc
pour 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 ou non le +xterm_clipboard
dans les informations fournies par vim --version
.
Si vous configurez Vim pour utiliser le presse-papiers du système (:set clipboard=unnamed
), alors tout texte que vous copiez dans Vim peut être collé à l'aide de Shift + Insert. Shift + Insert est simplement une combinaison de touches de collage à l'échelle de l'OS (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 accéder au mode -- INSERT (past) --
via:
ou
:set paste
et entrer en mode insertion (:set nopaste
pour désactiver)une fois en mode -- INSERT (past) --
, utilisez simplement la fonction de collage de votre système (par exemple, CtrlShiftv sur Linux, Cmdv sur Mac OS).
Cette stratégie est très utile lorsque vous utilisez vim over ssh.
Oui. Sous Windows, Ctrl + V et Linux, appuyez simultanément sur les deux boutons de la souris.
Sous Windows, je pense que cette ligne de 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.
Une carte personnalisée semble appropriée dans ce cas. C’est ce que j’utilise pour coller les éléments tirés en mode insertion:
inoremap <Leader>p <ESC>pa
Ma touche Leader
est ici \
; cela signifie que frapper \p
en mode insertion collerait les éléments/lignes précédemment arrachés.