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

标签 vim vim-plugin

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

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

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

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

最佳答案

当自定义命令的参数是文件系统路径时,只需添加 -complete=file给您的 :command定义,像这样:

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

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

关于Vim 插件 - 在命令模式下自定义自动完成参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636068/

相关文章:

visual-studio - Vim 中类似 Visual Studio 的自动完成功能

vim - 无法使用 macvim 8.2.319 在 MacOS Catalina 上运行 NERDTree 和 lightline

c++ - Vim 如何在某些文件类型上运行/加载某些插件?

vim - 检查 VIM 中的变量更改位置?或者如何设置shiftwidth?

vim - 有直接让dein.vim安装插件的shell命令吗?

macos - Mac 上的默认 vimrc 在哪里

vim - 是否有用于 vim C++ Action 的插件

Vim : youCompleteme plugin opens up a split window with function definition

python - 如何在 Vim 中拉出整个 block ?

unix - 还有其他像 VIM Tutor 这样的教程吗?