vimrc 搜索并替换所有不包括以前的匹配项
vimrc search and replace all excluding previous matches
所以我的 vimrc 中有两个我经常使用的函数:
function! FindAndReplaceAllConfirm(from, to)
exec '%s/' . a:from . '/' . a:to . '/gc'
endfunction
function! FindAndReplaceAll(from, to)
exec '%s/' . a:from . '/' . a:to . '/g'
endfunction
问题是考虑我是否将 Foo 替换为 FooBar。有时我的文件中已经有 FooBar,但我不想让 FooBar 变成 FooFooBar。如何排除这样的补丁。
您可以添加单词边界 \<
和 \>
以仅匹配和替换完全相同的单词,如以下函数所示:
function! FindAndReplaceAll(from, to)
exec '%s/\<' . a:from . '\>/' . a:to . '/g'
endfunction
所以我的 vimrc 中有两个我经常使用的函数:
function! FindAndReplaceAllConfirm(from, to)
exec '%s/' . a:from . '/' . a:to . '/gc'
endfunction
function! FindAndReplaceAll(from, to)
exec '%s/' . a:from . '/' . a:to . '/g'
endfunction
问题是考虑我是否将 Foo 替换为 FooBar。有时我的文件中已经有 FooBar,但我不想让 FooBar 变成 FooFooBar。如何排除这样的补丁。
您可以添加单词边界 \<
和 \>
以仅匹配和替换完全相同的单词,如以下函数所示:
function! FindAndReplaceAll(from, to)
exec '%s/\<' . a:from . '\>/' . a:to . '/g'
endfunction