vim - VIM 中的自定义弹出菜单

标签 vim

在正确的配置下,vim 中带有弹出菜单的制表符补全效果非常好。 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 界面?

最佳答案

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

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

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

然后,通过插入与选择相对应的文本:正常! iTextsetline()

由于您似乎需要从视觉模式完成,因此您可以首先通过使用 y 启动映射来捕获所选文本。

关于vim - VIM 中的自定义弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537521/

相关文章:

vim - 用于格式化对象的 Vim 命令

Vim - 删除直到前一个词(不包括前一个词)

vim - 自动居中 vim 搜索结果

Vim - 粘贴时如何排除剪贴板寄存器的一部分

c++ - echofunc 显示过多的函数声明

vim - 将 `:map` 的输出放入缓冲区

vim 选择文本

macos - 如何从终端运行 mvim (MacVim)?

python - Jedi-vim 自动补全 python3.6 virtualenv 不工作

vim - 编译前如何让vim打印提示保存未保存的文件?