所以我发现这样做
:%s//my new string/g
Run Code Online (Sandbox Code Playgroud)
我可以替换当前搜索到的所有文本
Hello, world! la la la Hello.
Run Code Online (Sandbox Code Playgroud)
因此,如果我踩到“Hello”,按 *,然后执行 :%s//Bye/g,我可以将所有“Hello”更改为“Bye”。
我只想做一个小的重新映射来为我做到这一点,我是 vim 新手,所以这对我来说非常困难,我真的不知道如何获取用户输入以进行重新映射。
一位 Reddit 用户推荐了我
nnoremap <c-n> :%s///g<left><left>
Run Code Online (Sandbox Code Playgroud)
所以我可以用来触发替换,但它不起作用,我猜是因为它没有在任何地方指定输入?我想做
<c-n> SOME NEW TEXT <enter>
Run Code Online (Sandbox Code Playgroud)
并用一些新文本替换所有问候语
这可能吗?
您需要编写一个小函数来接受用户输入。例如:
function! ReplaceIt()
call inputsave()
let replacement = input('Enter replacement:')
call inputrestore()
execute '%s//'.replacement.'/g'
endfunction
Run Code Online (Sandbox Code Playgroud)
你可以把它放在你的 vimrc 中。或其他文件并在 vim 中获取它。
那么您可以先搜索(通过/或*, #...)然后输入:
:call ReplaceIt()
Run Code Online (Sandbox Code Playgroud)
你会看到输入提示,你只需给出你想要的替换,然后按Enter。
您可以为此函数调用创建映射,例如:
nnoremap <leader>r :call ReplaceIt()<cr>
Run Code Online (Sandbox Code Playgroud)