vim copy and replace text

筅森魡賤 提交于 2019-12-04 19:08:16

问题


Lets say that i have this text:

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

and I want to copy lorem and paste into ipsum. I tried to do yi' on lorem and then went on ipsum and did ci' but that replaced my pastebin with ipsum. and my previous copy was lost.


回答1:


yi' on lorem, move to i of ipsum, vep?




回答2:


Easy:

"kyi' on lorem, move to i of ipsum, ve"kp

This yanks lorem into register k, pastes it over ipsum from register k, and keeps it in register k ready to paste again anywhere else you might want to put it. ipsum still ends up in the default register, but that's no longer a problem and could be useful too.

If you've already got something in register k, you can use a different register instead (just use a different key).




回答3:


I usually go to the sed command.

:%s/ipsum/lorem/g
  • % means do this for every line
  • s means sed, or search and replace
  • g at the end means replace every ipsum with lorem; if you omit this, it only replaces the first.



回答4:


Go to the l of lorem, ye (yank to end of word). Go to the i of ipsum, "_de (delete to end of word, putting the deleted text in the black hole register. P (paste register before cursor).

Altogether: yej"_deP




回答5:


Why don't you yank into a named buffer, using "ayi', then delete and paste with d'i"aP?




回答6:


I'm not sure what do you want exactly.

You have this on two lines:

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

If you go to l and yw, it yanks lorem, then go to i of ipsum, and cw, and p and it will replace ipsum with lorem. You will still have both lorem and ipsum in the registers.

You can get the contents of those registers with :reg

If you want to paste something from them then "*p, or ":p, or "0p (you'll see it when you type :reg)




回答7:


Words here to stop Markdown treating the code that follows as plain text.

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

The first text searches for 'lorem'; the next deletes the word into the buffer named 'a', leaving a pair of empty quotes behind in the text. The next search finds 'ipsum'; the "aP pulls the buffer named 'a' in before the word ipsum; the "bdw deletes the word into the buffer named 'b', leaving 'lorem' behind. The double back-tick goes back to the place the last search came from - the empty quotes; and "bp pulls the named buffer after the first quote.

You can also omit the "a and "b, but this way, the values are in the named buffers "a and "b and can be copied again, and again, and again until you don't need the values any more.




回答8:


After you do ci' on impsum your lorem is in register "0. So, you can do ci'^R0 (^R means Ctrl+r) and paste your lorem in place of ipsum.

See :help quote_number for more info on numbered registers.




回答9:


vi'y on lorem

vi'p on ipsum

gvy to copy back lorem to register for possible macro with vi'p

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




回答10:


You want to use y to copy a selection and p to paste.

Here is a good list to keep handy.



来源:https://stackoverflow.com/questions/619194/vim-copy-and-replace-text

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!