:inoremap abc <do stuff>
但是,它有一些缺点:该序列的部分版本,例如
ab
,实际上不会短时间显示这些字符,因为它是在“等待”以查看是否要键入完整命令。这是不可取的。我想映射一个字母链而不暂停输入的部分子字符串。如果我输入
ab
,则暂停(并等待直到字符实际出现以上所述),然后输入c
,命令未执行。我希望无论等待多长时间都可以执行该命令。我将使用
iab
,但这不起作用,因为:在字符串后输入空格我不能用它执行任意命令,只能插入文本字符串。
如果有特定字符串,有什么方法可以执行命令或击键进入插入模式,而不使用地图(每次输入
a
都会烦人地暂停,如果等待时间过长则无法工作)?#1 楼
这是一种实现方法:let s:inputBuffer = ''
augroup _silentInsertTrigger
autocmd!
autocmd InsertCharPre * call <sid>OnPreEnterChar()
autocmd InsertLeave * call <sid>OnInsertLeave()
augroup END
function! s:OnPreEnterChar()
let s:inputBuffer .= v:char
if s:inputBuffer[-3:] ==# 'abc'
echo '<do stuff>'
endif
return v:char
endfunction
function! s:OnInsertLeave()
let s:inputBuffer = ''
endfunction
评论
这些缺点也适用于:cnoremap abc当您执行ab