2011-10-21 2 views
3

que vous avez eu ce texte:Comment feriez-vous un copier-coller avec ceci dans VIM?

SOMETHING_XXXXXXXXXXXXXX_ELSE 
SOMETHING_XXXXXXXXXXXXXX_ELSE2 
SOMETHING_XXXXXXXXXXXXXX_ELSE3 
SOMETHING_XXXXXXXXXXXXXX_ELSE4 

Et vous vouliez remplacer tous XXX..XXX avec ce mot:

HELLOWORLD 

Si je passe en mode visuel, Yank alors le mot, comment pourrais-je remplacer ensuite le XXX..XXX dans les 4 lignes ci-dessus en utilisant couper et coller?

Si j'essaie, ce qui se passe, c'est que le X pénètre dans mon 'presse-papiers' et je suis alors obligé de le taper manuellement.

+0

Est-ce une question vim ou une question de studio visuel? – Oded

+0

@Ouvert une question [viemu] (http://www.viemu.com/) ;-) Tous les vi [m] sont égaux. –

+0

@Oded viemu est un port commercial de vim vers l'environnement VS. Dans certains cas, il se comporte différemment de vim, ce qui est probablement la raison pour laquelle l'affiche originale a pensé à l'inclure. – Andrew

Répondre

4

Je ne sais pas si cela va fonctionner dans viemu, mais dans VIM vous pouvez faire ce qui suit ...

En utilisant Yank et coller

Yank le texte à un registre spécifique. Sélectionnez le texte en mode visuel et utilisez la commande "ay pour envoyer le texte au registre a. Ensuite, lorsque vous collez, appelez la commande "ap, qui colle le contenu du registre a.

Utilisation de la Command normale

Mais je préfère fortement utiliser la commande normale. Il suffit de sélectionner le mode visuel en utilisant la ligne des lignes

SOMETHING_XXXXXXXXXXXXXX_ELSE 
SOMETHING_XXXXXXXXXXXXXX_ELSE2 
SOMETHING_XXXXXXXXXXXXXX_ELSE3 
SOMETHING_XXXXXXXXXXXXXX_ELSE4 

(<C-v>) et d'émettre cette commande: :'<,'>normal fXct_HELLOWORLD. Ensuite, vous aurez

SOMETHING_HELLOWORLD_ELSE 
SOMETHING_HELLOWORLD_ELSE2 
SOMETHING_HELLOWORLD_ELSE3 
SOMETHING_HELLOWORLD_ELSE4 

Cela signifie qu'il exécutera la commande fXct_HELLOWORLD pour chaque ligne. Laissez-moi vous expliquer la commande:

  • fX - déplace le curseur jusqu'à la première X;
  • ct_ - supprime tout jusqu'à _ et vous met en mode insertion;
  • HELLOWORLD - le mot qui remplacera XXXXXXXXXXXXXX;
+1

Merci pour le 'fX' et 'ct_'! Je ne savais pas à propos de ceux avant. –

+0

@DavidPoole vous pouvez également utiliser cf si vous voulez changer le caractère que vous recherchez. – Despo

+0

@DavidPoole, de rien! –

0

Mettre en évidence les quatre lignes en mode visuel, puis

:'<,'>s/X\+/HELLOWORLD/g 
+0

À moins, bien sûr, que vous vouliez quelque chose d'encore plus automatique. :) – Andrew

+0

Je ne veux pas de solution de recherche et de remplacement, en essayant d'apprendre cette technique en utilisant couper et coller si possible? – codecompleting

0

hypothèse où tous les "XXX..XXX" sont les mêmes. Question ne sait pas là ..
Si vous voulez le faire globalement

:%s/XXX..XXX/HELLOWORLD/gc 

Ou juste pour les lignes spécifiées:

:123,128s/XXX..XXX/HELLOWORLD/gc 
0

Via cette question: How do I use vim registers? je trouve^R en mode commande va coller à partir un registre.

Par exemple, XXXX a mis en évidence puis yanked dans le « registre: : s/^ R »/HELLOWORLD/g

1

Une façon serait de choisir visuellement tout le code que vous voulez remplacer et changer à une fois

Ctrl + v 3jt_cHELLOWORLD [Echap]

note: il faut quelques secondes pour que toutes les lignes soient mis à jour

Une autre façon d'être en créant une macro:

enregistrement macro:

q10fXct_HELLOWORLD [esc] q

run macro sur d'autres lignes:

j @ 1j @ 1j @ 1

q1 enregistre une macro sur le caractère 1

@ 1 rejoue macro

Mais recherche et de remplacement est une bonne alternative pour votre question

+0

C'est pourquoi je préfère emacs ;-) –

+0

@pst N'a jamais essayé emacs mais je commence à penser que je devrais leur donner un coup de feu. – Despo

+0

C'est juste un vieux dialecte de lisp avec une certaine fonction d'édition de texte/affichage jeté dedans - mais il semble que vous soyez déjà sur la [plate-forme de courbe d'apprentissage de vi/vim] (http://blogs.msdn.com/b/steverowe/ archive/2004/11/17/code-editor-learning-curves.aspx) donc pas de raison de changer ;-) Commentaire original pour mon "qu'est-ce que c'est supposé faire!?!?!" réaction. (J'utilise suffisamment de vi/elvis pour éditer les fichiers de configuration, et c'est à peu près tout.) –