当我尝试调用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>
。
输入时此设置无效。
有没有更好的方法来重新映射密钥或退出输入?
答案 0 :(得分:2)
input()
中的模式是命令行模式(即:cmap
)。即使是未映射的<C-C>
也会导致input()
返回空字符串,因此您应该检查一下(if empty(replacement)
)并中止您的功能。
但是,我会在没有明确input()
的情况下解决这个问题(这在效果不高且在宏中调用时会出现问题):
:nnoremap <Leader>r :%s///g<Left><Left>