我想做这样的事情
if exists(expand('<cword>'))
inoremap ( (<esc>g_i)<left>
else
inoremap ( ()<left>
endif
这背后的逻辑是,如果我的光标下面有某些东西,用括号括起来,否则只需创建一个闭括号。
if当前不识别光标下的元素。
有解决方案吗?
答案 0 :(得分:1)
要使映射在调用时对当前条件做出反应,您无法重新定义映射本身。相反,您必须使映射的右侧对条件作出反应。使用:help :map-expr
可以最简单地完成此操作,如下所示:
:inoremap <expr> ( (empty(expand('<cword>')) ? '()<Left>' : '(<Esc>g_i)<Left>')
请注意,我刚刚翻译了您的示例,我没有检查它是否有意义或按预期工作。