Vim插件 - 在命令模式下自定义自动完成params

时间:2012-09-28 08:08:50

标签: vim vim-plugin

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

现在路径可能很长而且很容易错过拼写的东西。 所以我想为参数部分实现自己的tab-completion。 Vim已经负责通过tabbing自动完成命令,但当然它不知道如何完成参数(我将自己解决)。

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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