Vim 重新映射密钥并获取用户输入

Vim 重新映射密钥并获取用户输入,vim,Vim,所以我发现 :%s//my new string/g 我可以替换当前搜索文本中出现的所有内容 Hello, world! la la la Hello. 因此,如果我点击Hello,按*,然后执行:%s//Bye/g,我可以将所有的Hello改为Bye 我只是想做一个小的重新映射来为我做到这一点,我是vim的新手,所以这对我来说非常困难,我真的不知道如何获得重新映射的用户输入 一位reddit用户建议我 nnoremap <c-n> :%s///g<left><

所以我发现

:%s//my new string/g
我可以替换当前搜索文本中出现的所有内容

Hello, world! la la la Hello.
因此,如果我点击Hello,按*,然后执行:%s//Bye/g,我可以将所有的Hello改为Bye

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

一位reddit用户建议我

nnoremap <c-n> :%s///g<left><left>
nnoremap:%s///g
所以我可以用它来触发replace,但它不起作用,我猜是因为它没有指定任何地方的输入?我想做

<c-n> SOME NEW TEXT <enter>
一些新的文本
并用一些新文本替换所有Hello


这可能吗?

您需要编写一个小函数来接受用户输入。e、 g:

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>
nnoremap r:调用ReplaceIt()

您需要编写一个小函数来接受用户输入。e、 g:

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>
nnoremap r:调用ReplaceIt()
工作很有魅力:)非常感谢!工作得很有魅力:)非常感谢!