【问题标题】:Remap key and get user input重新映射键并获取用户输入
【发布时间】:2013-03-07 22:44:33
【问题描述】:

所以我发现这样做

:%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>

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

这可能吗?

【问题讨论】:

    标签: vim


    【解决方案1】:

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

    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>
    

    【讨论】:

    • 工作就像一个魅力:) 非常感谢!
    猜你喜欢
    • 2021-09-04
    • 2011-06-09
    • 2018-08-05
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多