繁体   English   中英

在 vim/neovim 的引号内执行 function

[英]Executing a function inside quotes in vim/neovim

我想要这样的工作:

imap key1 func1() ? "key2 func2()" : "key3"

我目前使用的映射是:

imap <expr> <CR> pumvisible() ? ((complete_info()["selected"] == "-1") ? "\<C-n>\<C-y>\<Plug>(ultisnips_expand)" : ncm2_ultisnips#expand_or("\<C-y>",'n')) : "\<CR>"

当弹出菜单可见但我没有选择任何建议时,按 Enter 将 select 第一个元素,如果它是一个片段,那么片段将被展开,如果我已经选择了一个建议,那么按 Enter 将关闭弹出菜单并展开这是一个片段,如果弹出菜单不可见,则 enter 的行为就像它应该的那样。

但问题是每次执行"\<Cn>\<Cy>\<Plug>(ultisnips_expand)"时,弹出菜单都不会关闭。 因此,我尝试将\<Plug>(ultisnips_expand)替换为ncm2_ultisnips#expand_or("\<Cy>",'n') ,因为前一个仅扩展代码段,但如果扩展失败,后一个将关闭菜单。

那么如何在"<Cn>"之后添加 function ncm2_ultisnips#expand_or("\<Cy>",'n') 简单地执行"<Cn>ncm2_ultisnips#expand_or("\<Cy>",'n')"是行不通的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM