Ответ 1
Вам также необходимо избежать косой черты.
:%s/\/Users\/tom\/documents\/pdfs\//<new text>/g
в vi, поиск и замена, как вы избегаете "/" (косую черту), чтобы она была правильной. Скажите по пути.
like:/Пользователи/tom/documents/pdfs/
:%s//Users/tom/documents/pdfs//<new text>/g --FAILS (obviously)
:%s/\/Users/tom/documents/pdfs\//<new text>/g -- FAILS with a trailing error
:%s/'/Users/tom/documents/pdfs/'/<new text>/g -- FAILS with a trailing error
Что мне не хватает?
Вам также необходимо избежать косой черты.
:%s/\/Users\/tom\/documents\/pdfs\//<new text>/g
В качестве альтернативы вы можете сделать :%s,foo/bar/baz,foo/bar/boz,g
- я почти никогда не использую косые черты из-за избегающей путаницы.
Как предложила Сара, вам нужно избегать всех косых черт.
Вместо этого вы можете использовать другой символ, кроме прокрутки в качестве разделителя. Это удобно, если в вашей строке поиска много косых черт.
:%s#/Users/tom/documents/pdfs/#<new test>#g
Это отлично работает в vim. Я не уверен на 100% относительно ванили vi.
Я знаю, что этот вопрос несколько лет, но для других, кто может приземлиться на него, ищущего более легкое решение, в 2014 году вы можете заменить разделитель "/" на что-то еще, например "!", если вы сделайте это спереди, посередине и спине, например:
:%s!foo/bar/baz!foo/bar/boz!g
Очень похоже на ответ Медера... Но, я считаю, что восклицание намного проще рассматривать как разделитель. И я просто хотел подтвердить, что этот метод все еще работает в текущей версии VIM, которую я использую в Mac OSX Mavericks.
Вы можете использовать ?
для поиска
В случае поиска шаблона в регистре, и шаблон содержит символ "/", вы можете просто использовать команду ?
вместо команды /
из обычного режима, чтобы начать сопоставление шаблонов. В этом случае для '/' char больше необходимости не требуется. (однако вам нужно сбежать '?' char сейчас)
?
будет искать в обратном направлении /
, поэтому, если вы не против направления поиска, и ваш шаблон поиска не содержит "?" char.
Кроме того, проверьте escape()
script, если вы хотите больше.