如何运行某些插入模式,获取用户输入然后返回插入模式?

如何运行某些插入模式,获取用户输入然后返回插入模式?

我有inoremap <C-d> <C-o>:%s/\<<C-r><C-w>\>\C//g<Left><Left>,效果很好(或多或少模拟了 sublime text 的 find-all 多光标)。

但是它让我处于正常模式,有没有什么办法可以让它使用输入功能,这样它就会让我回到插入模式?

答案1

经过进一步挖掘,我发现https://stackoverflow.com/questions/15273810/remap-key-and-get-user-input并最终以某种方式采用了它:

function! PoorMultiCursor()
    let word = expand('<cword>')
    if strlen(word) > 0
        call inputsave()
        let repl = input('replace "'.word.'" with: ')
        call inputrestore()
        if strlen(repl) > 0
            execute '%s/\<'.word.'\>/'.repl.'/g'
        endif
    endif
endfunction


" sublime text's ctrl+d / alt+f3 (find all)
inoremap <C-d> <C-o>:call PoorMultiCursor()<cr>
nnoremap <C-d> :call PoorMultiCursor()<cr>
vnoremap <C-d> :call PoorMultiCursor()<cr>

相关内容