Чтобы найти и заменить все экземпляры слова в Vim, я используюНайти и заменить целые слова в Vim
%s/word/newword/g
Как изменить это так, что он находит только экземпляры «слова», которые целые слова ?
Чтобы найти и заменить все экземпляры слова в Vim, я используюНайти и заменить целые слова в Vim
%s/word/newword/g
Как изменить это так, что он находит только экземпляры «слова», которые целые слова ?
Вы можете использовать \<
, чтобы соответствовать начало слова и \>
соответствовать конец:
%s/\<word\>/newword/g
Это работает. Это синтаксис регулярного выражения, или он работает только в vim? – neuromancer
Это специальный синтаксис регулярного выражения Vim. Perl (PCRE), например, использует \ b ... \ b. –
Жаль, что Vim не поддерживает \ b ... \ b –
Для чувствительны к регистру заменить .. Вы можете использовать "\ C"
:%s/\<word\>\C/newword/g
Он заменяет только «слово» новым словом, оставляя других, таких как Word, WORD ... unreplaced.
Почему требуется \ C, когда его можно просто сделать с использованием, :% s/\
\ C необходимо, только если мы хотим, чтобы поиск с учетом регистра. –
Для PCRE совместимого поиска и замены, вы можете использовать команды perldo
или rubydo
, как описано здесь: http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
Например:
:perldo s/\bword\b/newword/g
возможно дубликат [Searching слова в Vim?] (HTTP: //stackoverflow.com/questions/458915/searching-word-in-vim) –