14

Почти по ошибке я понял, что вы можете сделать что-то вроде:

$ cp foo.data bar1.data
$ ^bar1^bar2

И эта команда запускает ту же команду с bar2.data вместо bar1.data . Теперь, как насчет того, если у меня есть несколько вхождений целевого слова? Например:

$ cp foo.data bar.data
$ ^data^index

Он заменяет только первое расширение data . Как мне заставить его заменить оба?

2 ответа2

22

Я думаю, что ^data^index эквивалентен !!:s/data/index , поэтому он заменит только первое слово. Если вы хотите заменить всю строку, я думаю, вам придется использовать !!:gs/data/index/

7

Вы можете сделать это, добавив ^:& в конец.
^:& заменит два вхождения
^:g & заменит все

$ cp foo.data bar.data
$ ^data^index^:&
$ cp foo.index bar.index
$ cp foo.data bar.data joe.data doe.data
$ ^data^index^:g&
$ cp foo.index bar.index joe.index doe.index

sidenote: в книге 'командная строка кунгфу'
он говорит, что ^: & заменит все

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .