Vim 中 MenuPopup 的 autocmd 事件

发布于 2025-01-04 03:56:22 字数 530 浏览 0 评论 0原文

目标

ins-completion 期间将 kj 映射到 ,像这样:

autocmd MenuPopup inoremap k <down>
autocmd MenuPopup inoremap j <up>

MenuPopup 消失时撤消临时映射:

autocmd MenuPopupGone iunmap k
autocmd MenuPopupGone iunmap j

问题

什么是正确的 autocmd 事件MenuPopupGone?据我从 :help event 了解到,MenuPopupGone 没有这样的事件。

Objective

Map k and j to <up> and <down> during ins-completion, like so:

autocmd MenuPopup inoremap k <down>
autocmd MenuPopup inoremap j <up>

And undo the temporary mapping when the MenuPopup is gone:

autocmd MenuPopupGone iunmap k
autocmd MenuPopupGone iunmap j

Question

What is the correct autocmd event for MenuPopupGone? As far as I know from :help event, there is no such event for MenuPopupGone.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夕色琉璃 2025-01-11 03:56:22

MenuPopup 事件不适用于插入模式完成菜单,而是用于单击鼠标右键出现的菜单。

要在完成菜单可见时更改映射,请使用计算 pumvisible() 映射:

:inoremap <expr> j pumvisible() ? '<Down>' : 'j'
:inoremap <expr> k pumvisible() ? '<Up>' : 'k'

The MenuPopup event is not for the insert-mode completion menu, but for the menu that comes up with a right mouse button click.

To change mappings when the completion menu is visible, use <expr> mappings that evaluate pumvisible():

:inoremap <expr> j pumvisible() ? '<Down>' : 'j'
:inoremap <expr> k pumvisible() ? '<Up>' : 'k'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文