8

我正在编写我的第一个 vim 插件(viml + python)。该插件的一个命令是“GetStepCommand()”,它基本上从远程数据源获取数据,我稍微按摩一下数据并将其复制到缓冲区中,以便用户可以开始编辑它。用户必须向“GetStepsCommand”提供一个参数,即数据所在位置的搜索路径,例如:/projects/procedure/step

现在这条路可能很长,而且很容易拼错一些东西。所以我想为参数部分实现我自己的制表符补全。Vim 已经负责通过 tab 键自动完成命令,但它当然不知道如何完成参数(我会自己解决这个问题)。

但首先我需要知道: - 如果/我可以在命令模式下拦截按键 - 获取/获取用户当前正在编写的命令行 - 测试它是否处于命令模式或插入/查看模式 - 和最后返回一个更新的命令行(tab-completed),用户可以在按键后继续在':'中写入。

任何指针,提示,文章,教程......即信息非常感谢

4

1 回答 1

9

当自定义命令的参数是文件系统路径时,只需添加-complete=file:command定义中,如下所示:

:command -nargs=1 -complete=file MyCommand echomsg <q-args>

你不需要在命令行模式下拦截按键(你不应该,因为这会导致与其他插件的不良交互!)Vim 提供了其他默认完成(cp. :help :command-complete),甚至是 Vimscript 函数的自定义完成调用以确定完成候选者。

于 2012-09-28T08:57:36.797 回答