gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:54 25 4
gpt4 key购买 nike

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

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

假设

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

我想要什么

<leader><leader>p调用一个将执行必要操作的函数(我暂时不知 Prop 体是什么...)

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

我希望用户可以结束键入并通过突出显示它来移动到所需的文件。

例如:

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文件

# -*- encoding: utf-8 -*-

import vim
import sys

def lookFor():

# Ask user to type something to find
vim.command("let user_input = input('Sublime search : ')")
vim.command("call inputrestore()")

# Visual return of what we typed
vim.current.buffer.append( vim.eval( 'user_input' ) )

如何开始?

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

有人可以帮助我开始吗?

谢谢,

达米安

最佳答案

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

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

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

关于python - 如何在 vimscript 中显示自动完成菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com