我使用的插件在初始化时执行多个*noremap
操作。我将以下映射添加到YCM / UltiSnips后:
inoremap <expr> <CR> pumvisible() ? "<C-R>=<SID>ExpandSnippetOrReturn()<CR>" : "\<CR>"
我已经打破了其他插件查看<Enter>
密钥的能力,或者说我覆盖/破坏了原始的inoremap。我想重新启用该功能,但不禁用使用Enter键从自动完成菜单中选择片段的功能。这个键映射实际上是说&#34;如果菜单可见,请选择该选项,否则模拟<Enter>
键&#34;。我需要它说的是#34;如果菜单可见,选择该选项,否则执行任何命令<Enter>
键已经映射到&#34;。所以基本上,在声明这个inoremap时,我需要将这个键的现有inoremap扩展到else。
我看过<C-R>=feedkeys('<CR>')<CR>
和<C-R>=mapcheck('\<CR>', 'i')<CR>
,但无法开始工作。有人可以帮助我吗?
答案 0 :(得分:0)
终于弄清楚了......这比我一天所需要的更多vim故障排除。
function! LoadPumvisibleEnter()
let smartmap = maparg("<Enter>", "i")
execute printf('inoremap <script> <expr> <CR> pumvisible() ? "<C-R>=<SID>ExpandSnippetOrReturn()<CR>" : %s', smartmap)
endfunction
au VimEnter * :execute LoadPumvisibleEnter()