2009-03-06 9 views
8

Lassen Sie uns sagen, dass ich diesen Text:vim kopieren und Ersetzen von Text

 
$test = 'lorem'; 
$test2= 'ipsum'; 

und ich möchte lorem kopieren und in ipsum einfügen. Ich versuchte yi' auf Lorem zu tun und ging dann auf ipsum und tat ci', aber das ersetzt meine Pastebin mit Ipsum. und meine vorherige Kopie war verloren.

Antwort

7

yi‘ auf lorem, bis ich von ipsum bewegen, vep?

+2

Ok, aber jetzt enthält das Register ipsum. –

+0

Hm, so ist es. Experimente mit. zeige an, dass es die Paste-Ersetzung mit einem delete implementiert, wodurch ipsum in dein Standardregister eingetragen wird. Scheint, das ist schwer zu verhindern; http://stackoverflow.com/questions/290465/vim-how-to-paste-over-without-writing-register hat eine schrecklich beteiligte Lösung. – chaos

+1

Leicht zu lösen: "kyi 'auf Lorem, bewegen Sie sich in i von ipsum, ve" kp? Das löscht Lorem in Register k, fügt es über ipsum von Register k ein und speichert es in Register k, um es überall wieder einzufügen, wo Sie es einfügen möchten. ipsum landet immer noch im Standardregister, aber das ist kein Problem mehr und könnte auch nützlich sein. – sampablokuper

2

Warum reißt du nicht in einen benannten Puffer mit "ayi', dann löschen und einfügen mit d'i"aP?

5

Ich gehe normalerweise zum Befehl sed.

:%s/ipsum/lorem/g 
  • % Mittel tun dies für jede Zeile
  • s sed bedeutet, oder Suchen und Ersetzen
  • g am Ende Replacemittel jedes ipsum mit lorem; Wenn Sie das weglassen, ersetzt es nur das erste.
+1

Ich möchte nicht ersetzen, da das bedeutet, ich muss es eingeben –

+0

Ein wenig Arbeit, wenn Sie kein Wort eingeben möchten, aber Sie können CR CW verwenden, um das Wort unter dem Cursor einzufügen, zB: :% s//, bewegen Sie den Cursor auf ipsum,: /g –

1

Ich bin mir nicht sicher, was genau Sie wollen.

Sie haben dies auf zwei Linien:

$test = 'lorem'; 
$test2= 'ipsum'; 

Wenn Sie l gehen und yw, es zerrt lorem, dann i von ipsum gehen, und cw, und p und es wird ipsum mit Lorem ersetzen . Sie haben immer noch Lorem und Ipsum in den Registern.

Sie können den Inhalt dieser Register erhalten mit: reg

Wenn Sie von ihnen fügen etwas wollen, dann „* p oder“: p oder „0p (Sie werden es sehen, wenn Sie Folgendes eingeben: reg)

0

Wörter hier, um Markdown zu stoppen, der den Code behandelt, der als einfacher Text folgt.

/lorem 
"adw 
/ipsum 
"aP"bdw 
`` 
"bp 

Der erste Text sucht nach 'Lorem'; Die nächste löscht das Wort in den Puffer mit dem Namen "a" und hinterlässt ein Paar leerer Anführungszeichen im Text. Die nächste Suche findet 'ipsum'; die "aP zieht den Puffer mit dem Namen 'a' vor dem Wort ipsum; Die "bdw löscht das Wort in den Puffer mit dem Namen "b" und lässt "Lorem" zurück. Der doppelte Back-Tick geht zurück zu dem Ort, von dem die letzte Suche kam - die leeren Zitate; und "bp zieht den benannten Puffer nach dem ersten Zitat.

Sie können auch die "a und "b, aber auf diese Weise nicht angeben, die Werte sind in dem genannten Puffer "a und "b und wieder kopiert werden, und wieder, und wieder, bis Sie die Werte nicht brauchen mehr.

3

Gehen Sie zum l von Lorem, ye (zum Ende des Wortes ziehen). zum i von ipsum Go "_de (löscht das Wortes zu beenden, den gelöschten Text in den schwarzen Loch Registern setzte P (vor dem Cursor registrieren einfügen)

Insgesamt:.. Yej" _deP

0

Nach Sie tun ci' auf impsum Ihre lorem im Register ist "0. So können Sie ci'^R0 tun (^R bedeutet Ctrl+r) und Ihr lorem ipsum anstelle von einfügen.

:help quote_number für weitere Informationen auf nummerierten Register anzeigen.

0

vi'y auf lorem

vi'p auf ipsum

gvy zu kopieren zurück lorem für möglich Makro registrieren mit vi'p

(qa - gvy-j - vi'p - q - @a - @@ - @@ ...)

9

Ganz einfach:

"kyi auf Lorem‘, i von ipsum bewegen, ve" kp

Diese yanks lorem in Register k, Pasten es über ipsum aus register k, und hält es in register k bereit wieder irgendwo einfügen, wo Sie es vielleicht einfügen möchten. ipsum landet immer noch im Standardregister, aber das ist kein Problem mehr und könnte auch nützlich sein.

Wenn Sie bereits etwas in Register k haben, können Sie stattdessen ein anderes Register verwenden (verwenden Sie einfach einen anderen Schlüssel).