将Ctrl-c重新映射到Ctrl-q在输入模式下不起作用

时间:2013-11-07 12:42:19

标签: vim

当我尝试调用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>。 输入时此设置无效。

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

1 个答案:

答案 0 :(得分:2)

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

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

:nnoremap <Leader>r :%s///g<Left><Left>