2010-09-29 7 views
1
:/From book:/,/$/ cmd_copy [email protected][email protected]_until_end_of_line.txt 

J'ai essayé de ne pas utiliser les mots «écrire», «mettre» ou «lire» car VIM a une signification particulière pour eux. J'essaie de copier (désolé ne faisant pas référence à la commande de copie de VIM) la chose entre les correspondances à un fichier. Comment faites-vous, sans copier les lignes entières?Copie entre les correspondances, pas les lignes, mais les points entre les points

exemple factice

TEXTE:

ne me copie pas dummy1 Bonjour tout le monde s'il vous plaît me copier dummy2 ne me copie pas

certains entre, devrait aussi travailler avec entre dans btw les points de match dummy1 pas encore!

Pas encore!

la copie se terminera bientôt! dummy2

Copié:

Bonjour tout le monde s'il vous plaît me copier

ou

dummy1 Bonjour tout le monde s'il vous plaît me copier dummy2

+0

Je ne suis pas sûr d'avoir compris votre question. Pourriez-vous nous donner un exemple factice avec ce à quoi il ressemble AVANT et APRÈS? Merci. – Benoit

Répondre

0

donc, pourquoi ne pas utiliser

:1s/^\_.\{-}dummy1// "first line: delete everything until first occurrence of dummy1 
:%s/dummy2\zs\_.\{-}\zedummy1/\n/ 
:1s/\_.*dummy2\zs\_.*// "delete from last occurrence of dummy2 till EOF 
3

Pour copier du texte entre start et end, utilisez la séquence suivante de commandes du mode Normal .

/start/e+1Entrezy/end/Entrez

Les premières recherches de commande pour la prochaine occurrence du motif correspondant début d'un fragment de texte à copier, et positionne le curseur sur le premier caractère Après le match. Le second enlève tout jusqu'à la prochaine correspondance du motif de fin. Selon le contexte dans lequel les commandes seront utilisées, elles peuvent être réécrites en tant que commande Ex, un mappage ou une macro.

  • commande Ex

    :norm!/start/e+1^My/end/ 
    

    (type ^M comme Ctrl +V, Entrez.)

  • Mapping

    :nnoremap <leader>y /start/e+1<cr>y/end/<cr> 
    
  • Macro

    :let @y = "/start/e+1\ry/end/\r" 
    

    (ou enregistrer une macro de la manière habituelle: le type q, inscrivez-vous pour enregistrer la macro, par exemple, y, puis les commandes comme s'affiche en haut de la réponse suivi de la dernière q.)

Questions connexes