This question already has an answer here:

New to linux :-)

In my .bashrc I have set -o vi.
That way when I'm in the terminal I can press CTRL +{ and then use VI commands to navigate, edit and search the command history.

One thing I cannot figure out is how to find and replace. Let's say for example, I have the following command cp /abc/*.src /def/*.src. How can I find/replace src with trg?

To clarify, I'm NOT in the VI/VIM editor. I'm on the command-line. For example, on the command-line to access the last command, i can do the following:

CTRL +{ k

Then to append to the end of command I can do:

$ a

How can I change my command using find/replace on the command-line.


marked as duplicate by Radu Rădeanu, Seth, Eric Carvalho, Mitch, Tom Brossman Jul 26 '13 at 15:59

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • So what for all discussion about vi (in title, tags, ...) as time as you want find/replace on the history command-line? – Radu Rădeanu Jul 25 '13 at 18:08
  • @hba I'm just wondering if you got the answer or not. BTW, it would be better if you highlight 'Bash in vi mode' in your question title :) – Drake Guan Dec 21 '14 at 15:11
  • @Drake - done...no I still don't know how to do this... – hba Dec 22 '14 at 8:14

The command for replacing a string with another in vi editor is


for more information on usage : vim

Not the answer you're looking for? Browse other questions tagged or ask your own question.