In Vim, is there a way to paste text in the search line?
-
01-07-2019 - |
Question
I want to search for $maximumTotalAllowedAfterFinish
and replace it with $minimumTotalAllowedAfterFinish
. Instead of typing the long text:
:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g
Is there a way to COPY these long variable names down into the search line, since, on the command line I can't type "p
" to paste?
Solution
You can insert the contents of a numbered or named register by typing CTRLR {0-9a-z"%#:-=.}
. By typing CTRL-R CTRL-W you can paste the current word under the cursor. See:
:he cmdline-editing
for more information.
OTHER TIPS
Copy it as normal, then do CtrlR" to paste. There are lots of other CtrlR shortcuts (e.g, a calculator, current filename, clipboard contents). Type :help c_<C-R>
to see the full list.
Type q:
to get into history editing mode in a new buffer. Then edit the last line of the buffer and press Enter
to execute it.
Copy:
1) v
(or highlight with mouse, in visual mode)
2) y
(yank)
Paste:
1) /
(search mode)
2) Ctrl + R + 0
(paste from yanked register)
Or create the command in a vim buffer , e.g. type it in the buffer:
s/foo/bar/gci
And copy it to a named register, with "ayy
(if the cursor is on that line!).
Now you can execute the contents of the "a
" register from Vim's Ex command line with:
:[OPTIONAL_RANGE]@a
I use it all the time.
Typically, you would do that with mouse selecting (perhaps CtrlIns or CtrlC after selecting) and then, when in the command/search line, middle-clicking (or ShiftIns or CtrlV).
Another way, is to write your command/search line in the text buffer with all the editing available in text buffers, starting with :
and all, then, on the line, do:
"add@a
which will store the whole command line in buffer a
, and then execute it. It won't be stored in the command history, though.
Try creating the following line in the text buffer as an example for the key presses above:
:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g
Finally, you can enter q:
to enter history editing in a text buffer.
You can place the cursor on the word that you want to add to your pattern and then press / or : to enter either the search or the command mode, and then press CtrlRCtrlW to copy the word. Source