В моей ВИМ 7.4 патч 769 это работает очень хорошо.
:%s/foo/FOO/ | %s/bar/BAR/
Похоже, что вы упустили окончательный символ разделителя из ваших замещений. Vim не знает, где заканчивается ваша строка замены, не имея в ней завершающих символов #
. При обычной команде одной подстановки vim обрабатывает конец команды в качестве разделителя-разделителя, если его не найти.
Например, он работает, если опустить терминатора в последней подстановки команды:
:%s/foo/FOO/ | %s#bar#BAR
И, наконец, быстрый наконечник относительно ваших сабвуферов. Вы можете обернуть строку в тексте с помощью одной подстановки с помощью некоторой основной магии группы захвата. Совпадение по всей линии и использование &
на замену для повторного использования совпадающего текста:
:s#.*#/* & */
Спасибо. Ваш быстрый совет - это то, что я искал. Конечный разделитель позволяет выполнять команды цепочки, но не для косой черты/как вставки. Это:% s/foo/f/o/| :% s/bar/b/r/и это:% s/foo/f/\/o/| :% s/bar/b/\/r/приводит к той же ошибке 488. Как избежать косой черты? – qupear
@ user2661175: должен хорошо работать. Я думаю, что у вас есть опечатка в последнем суб; одна дополнительная косая черта. Это работает для меня: ': s/foo/f \/o/| с/бар/б \/г/' – progo