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

时间:2013-03-07 14:31:12

标签: vim

所以我发现做了

:%s//my new string/g

我可以替换当前所有文本的所有出现

Hello, world! la la la Hello.

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

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

reddit用户建议我

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

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

<c-n> SOME NEW TEXT <enter>

并用一些新文本替换所有Hellos

这可能吗?

1 个答案:

答案 0 :(得分:3)

您需要编写一个小函数来接受用户输入。 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>