1

所以我发现这样做

:%s//my new string/g

我可以替换我当前搜索的所有文本

Hello, world! la la la Hello.

因此,如果我踩到 Hello,按 *,然后执行 :%s//Bye/g,我可以将所有 Hello's 更改为 Bye's。

我只想为我做一个小的重映射,我是 vim 的新手,所以这对我来说非常困难,我真的不知道如何获取用户输入以进行重映射。

一位 reddit 用户建议我

nnoremap <c-n> :%s///g<left><left>

所以我可以用来触发替换,但它不起作用,我猜是因为它没有在任何地方指定输入?我想做

<c-n> SOME NEW TEXT <enter>

并用一些新文本替换所有你好

这可能吗?

4

1 回答 1

4

您需要编写一个小函数来接受用户输入。例如:

function! ReplaceIt()
    call inputsave()
    let replacement = input('Enter replacement:')
    call inputrestore()
    execute '%s//'.replacement.'/g'
endfunction

你可以把它放在你的vimrc中。或另一个文件并在 vim 中获取它。

那么您可以先搜索(按/*#...),然后输入:

:call ReplaceIt()

您将看到输入提示,您只需提供所需的替换,然后按Enter

您可以为此函数调用创建映射,例如:

nnoremap <leader>r :call ReplaceIt()<cr>
于 2013-03-07T14:44:33.073 回答