16 votes

Copier, supprimer, puis coller dans Vim

Je viens de commencer à utiliser Vim hier et j'ai du mal à comprendre le copier-coller. Je comprends que pour copier, j'entre en mode visuel, je surligne et je tire. Je me déplace ensuite sur la ligne sur laquelle je souhaite coller, mais le plus souvent, je dois supprimer du texte de cette ligne. Pour ce faire, j'utilise x o dw . Cela a pour conséquence que ma copie originale est écrasée (comme le montre le tableau ci-dessous). x y dw semblent couper). Comment puis-je contourner ce problème ?

Pour donner un exemple

$foo = $this->foo->property;
thislineuses($foo);

Donc avec le code ci-dessus je copie $this->foo->property je voudrais ensuite passer à la ligne 2, supprimer $foo et coller. Le problème est que lorsque je supprime $foo de la ligne 2, c'est alors ce qui est collé à la place de $this->foo->property .

16voto

Jetez un coup d'œil à :h copy-move . L'action par défaut de tirer ou de supprimer va dans un endroit appelé registre (un registre nommé " ). Si vous devez supprimer du texte avant de le coller, vous devez éviter d'écraser le registre x, comme vous l'avez découvert. Heureusement, vous pouvez utiliser toute autre lettre ou tout autre chiffre pour nommer un registre différent.

  • "ayy (tirer une ligne dans le registre a )
  • x , dd etc. (supprimer un peu de texte dans le registre sans nom, " )
  • "ap (coller le texte du registre a )

12voto

Si le problème est que vous avez simplement besoin de remplacer quelques text avec quelques text2 alors, il suffit de mettre en évidence et de tirer text2 . Ensuite, mettez en évidence text et appuyez sur p o P à coller text2 à la place de text .

Un guide complémentaire rapide pour certaines commandes vim courantes est le suivant http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

Profitez-en !

Edit : note que p colle le texte après le curseur et P avant le curseur.

7voto

Eric Bock Points 171

Vous pouvez copier dans un registre nommé "ayw faites votre suppression et collez ensuite à partir du registre nommé. "ap .

Cependant, il est généralement plus facile de changer l'ordre dans lequel vous faites les choses. Faites le collage et ensuite la suppression, ou la suppression et ensuite le copier/coller.

Sinon, vous pouvez supprimer dans le registre des trous noirs "_d . Voir https://stackoverflow.com/q/54255/70863

3voto

mccartrey Points 33

Vous avez plusieurs registres que vous pouvez utiliser pour contenir différentes valeurs de texte. Si vous souhaitez enregistrer du texte dans un registre différent de celui dans lequel le texte supprimé sera placé (par exemple, en utilisant la fonction x o d w ), utilisez ce qui suit :

Pour enregistrer le texte dans le registre a :

  • presse " a [commande d'arrachage et de déplacement] (sauvegarde le texte dans le registre) a )
  • allez à l'endroit où vous voulez coller le texte
  • presse " a p (coller le texte du registre a )

Vous pouvez utiliser un registre pour chacune des lettres du clavier et pour chaque chiffre. La suppression du texte n'utilisera pas ces registres, le texte restera donc dans le registre jusqu'à ce que vous terminiez votre session ou que vous y mettiez manuellement quelque chose d'autre.

0voto

sbeskur Points 1194

Il n'est pas nécessaire de mettre en évidence toute la ligne si vous utilisez la méthode suivante v (par opposition à V ) mode visuel. Si c'est ce que vous demandez.

Si vous parlez de modifier du texte copié, vous devez d'abord copier et ensuite effacer des parties.

Et si vous voulez copier, puis modifier l'original et ensuite coller, alors vous pouvez tirer dans un autre registre. Comme "2y puis modifier, puis aller ailleurs et "2p .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X