10

在 vim 中带有弹出菜单的 Tab 补全在正确的配置下工作得很好。 http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE

我有一小部分在 vim 中使用的代码生成器和代码操作程序。程序是:

1. initiate visual mode
2. highlight text
3. :'<,'>!hashify

我想利用 vim 弹出菜单来提供一系列操作。

新程序将是:

1. initiate visual mode
2. highlight text
3. <Tab> -- select transform option from menu

是否有可用于此的 vimscript 接口?

4

2 回答 2

4

插入模式完成弹出窗口可用于插入选择的文本片段。有两种实现方式,见:help complete-functions:help complete()。如果您的代码生成器返回要插入的单行(并且不太长)文本片段,您可以调用生成器system(...),然后将返回的值提供给完成函数。

另一方面,如果菜单选择不直接对应于插入的文本,而是战术选择或动作,大多数插件都会呈现这样的选择菜单,其样式类似于内置菜单(例如 from :ilist):

:echohl Title
:echo 'Code fragments:'
:echohl None
:echo '1. foo'
:echo '2. bar'
:let choice = nr2str(getchar())
:if choice == 1 ...

:normal! iText然后,通过、 或插入与选择相对应的文本setline()

由于您似乎需要从视觉模式完成,您可以首先通过使用y.

于 2012-11-24T18:24:16.700 回答
4

这个插件允许为 Vim 创建类似的弹出窗口:

在此处输入图像描述

于 2014-05-28T21:27:34.793 回答