如何在vimscript中显示自动完成菜单?

2024-10-08 20:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是vimscript的初学者,即使我在网上搜索了几个小时,也无法找到如何执行以下操作:

我想创建一个vimscript,它允许只键入一些字母来打开文件:

假设

  • 我只在当前的工作目录中搜索
  • 我有一个python脚本,可以递归地查看文件夹,并将带有给定字母的文件存储在数组中

我想要什么

<leader><leader>p调用一个函数,该函数将执行必要的操作(目前我不知道具体是什么…)

此功能将要求用户输入所需的字母。当他输入字母时,一个菜单将显示可用的结果(因此,这个菜单需要自动刷新)。在

我希望用户可以结束输入,只需高亮显示所需的文件。在

例如:

Autocompletion exemple

我目前拥有的

if !has('python')
    echo "Error: Sublime Search require vim compiled with +python"
    finish
endif

let s:current_file=expand("<sfile>:r")
let s:script_path = s:current_file . '.py'
exec 'pyfile ' . s:script_path

function SublimeSearchTrigger()

    python lookFor()

endfun

if !exists('g:sublimesearch_keys')
    let g:sublimesearch_keys = 1
endif

if g:sublimesearch_keys
    inoremap <leader><leader>p :call SublimeSearchTrigger()<cr>
    nnoremap <leader><leader>p :call SublimeSearchTrigger()<cr>
endif

以及python文件

^{pr2}$

如何开始?

如您所见,我不确定如何开始,但我确实很有动力(我正在计划更复杂的功能,但将使用python实现)。在

有人能帮我开始吗?在

谢谢

达米安


Tags: 文件函数用户功能if字母菜单current
1条回答
网友
1楼 · 发布于 2024-10-08 20:16:18

屏幕截图中显示的是命令行的wildmenu。您可以为自己的命令添加自定义完成,请参见:help :command-completion-custom。不幸的是,您不能更改诸如:edit之类的内置命令的完成行为(但是您可以定义自己的包装命令:Edit,并使其使用您的完整函数)。在

第二种机制是插入模式完成(:help ins-completion-menu)。这用于自动完成、代码段、输入缓冲区的任何文本。除非您想将文件名插入缓冲区(例如,为了完成import语句),否则这不是适合您的方法。在

许多插件实现自己的完成机制,因为这提供了最多的控制。它们创建了一个新的拆分暂存缓冲区,并将其用于显示匹配项,通常与插入模式完成菜单结合使用(但不用于插入所选文本,而是对其执行操作)。看看the FuzzyFinder plugin,它很好地利用了这一点,甚至允许插入自定义数据提供程序(这可能是您的Python脚本!)在

相关问题 更多 >

    热门问题