1

У меня есть список переменных, которые я хочу сравнить в форме

 acceptEncoding == copy.
 authorization == copy.
 cacheControl == copy.
 contentEncodin == copy.
 contentLength == copy.
...

и я хочу превратить это в

acceptEncoding == copy.acceptEncoding &&
authorization == copy.authorization &&
cacheControl == copy.cacheControl &&
contentEncodin == copy.contentEncoding &&
contentLength == copy.contentLength &&
...

используя:% s в vim. Я использовал команду как %s/(.+) == copy\./\1 == copy.\1 &&/ но она не соответствует ни одному из экземпляров, хотя регулярное выражение кажется правильным и работает в regex buddy / другие приложения регулярных выражений, есть ли что-то особенное в регулярных выражениях vim:s, которое заставляет это не работать? Я уже просто пошел вперед и сделал это с помощью макроса, но я хочу знать, почему регулярное выражение не сработало.

1 ответ1

3

Вам нужно сбежать ( + ) &

%s/\(.\+\) == copy\./\1 == copy.\1 \&\&/

Это должно привести к:

acceptEncoding == copy.acceptEncoding &&
authorization == copy.authorization &&
cacheControl == copy.cacheControl &&
contentEncodin == copy.contentEncodin &&
contentLength == copy.contentLength &&
...

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