Vim: игнорирование ошибок в списке сопоставленных замен - PullRequest
9 голосов
/ 16 января 2012

У меня есть несколько регулярных замен, которые я регулярно делаю, и поэтому хочу сопоставить ключ, чтобы сделать это легко. Однако, если одно из регулярных выражений, которые нужно заменить, не найдено в файле, мое сопоставление клавиш останавливается из-за E486: Pattern not found, и дальнейшие замены не выполняются. Например. если отображение в моем vimrc

map <F12> :%s/spam/foo/<enter>:%s/ham/bar/<enter>:%s/eggs/baz/<enter>

и в моем файле нет ham, eggs не будет подставлено. Есть ли флаг, который я могу поставить на замены, чтобы игнорировать ошибки? Я прочитал :help regex и :help map, но ничего не нашел.

С другой стороны, есть ли другой, более простой, более очевидный способ сделать это, что я пропускаю?

Ответы [ 2 ]

18 голосов
/ 16 января 2012

Добавьте флаг /e к каждой команде замещения.Он не отображает сообщения об ошибках и продолжает, как если бы ошибка не произошла.Это будет новое отображение:

map <F12> :%s/spam/foo/e<enter>:%s/ham/bar/e<enter>:%s/eggs/baz/e<enter>
9 голосов
/ 16 января 2012

Вы можете добавить «флаг» в конце шаблона:

:%s/spam/foo/e

не выдаст ошибку, если не найдет spam и не позволит продолжить.

См. :help flags.

...