Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim插件-在命令模式下自定义自动完成参数_Vim_Vim Plugin - Fatal编程技术网

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

Vim插件-在命令模式下自定义自动完成参数,vim,vim-plugin,Vim,Vim Plugin,我正在编写我的第一个vim插件(viml+python)。 插件的一个命令是“GetStepCommand()”,它基本上是从远程数据源获取数据,我稍微按摩一下数据,然后将其复制到缓冲区中,这样用户就可以开始编辑它了。 用户必须向“GetStepsCommand”提供一个参数,该参数是数据所在位置的搜索路径,例如:/projects/procedure/step 现在,这条路可能很长,很容易错过拼写的东西。 所以我想为参数部分实现我自己的制表符完成。 Vim已经通过制表符自动完成命令,但当然它不

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

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

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


任何提示、提示、文章、教程。。。i、 当自定义命令的参数是文件系统路径时,非常感谢您提供的信息,只需将
-complete=file
添加到
:command
定义中,如下所示:

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

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

感谢您的提示,我会看一遍的。但是,参数不是文件系统路径,而是我将数据拉入缓冲区的系统中的数据(描述数据库中的路径)。所以,这就是为什么我需要做一些我自己的自动完成处理。谢谢你的参考“:命令-完成”。。。刚玩完它。。。从这里应该没有问题。@Kristofernordström关于这个特殊的完成类型的一个注意事项:
-complete=file
除了它的名称之外,不是一个完成选项。它将使完成工作能够完成文件,将扩展环境变量,将阻止您键入未缩放的空间(通常使用
-nargs=1
MyCommand,并且b
参数将是
ab
),将扩展模式并执行反勾扩展(如果这些扩展导致的文件名超过
-nargs
允许的数量,则会回显错误)。帮助中没有提到这些内容。是否有方法指定加载文件的路径?(因此不是当前目录)