0

当我尝试调用 ReplaceIt() 时,我可以键入 ctrl-c 退出输入。

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

但是我已经将 Ctrl-c 映射到 <Esc><Esc>,在此之前我需要将其他键重新映射到 Ctrl-c。

我尝试设置map <C-q> <C-c>. 此设置在键入时没有用。

有没有更好的方法来重新映射键或退出输入?

4

1 回答 1

2

进入时的模式input()命令行模式(即:cmap)。即使是未映射的<C-C>也会导致input()返回空字符串,因此您可能应该检查该 ( if empty(replacement)) 并中止您的函数。

但是,我会在没有明确的情况下解决这个input()问题(这效率不高,并且在宏中调用时会出现问题):

:nnoremap <Leader>r :%s///g<Left><Left>
于 2013-11-07T12:55:53.987 回答