【发布时间】:2012-07-06 17:19:11
【问题描述】:
我是 vimscript 的初学者,即使我在网上搜索了几个小时,我也无法找到如何做以下事情:
我想创建一个 vimscript,它允许通过输入一些字母来打开文件:
假设
- 我只在当前工作目录中搜索
- 我有一个 python 脚本,它可以递归地查看文件夹并将具有给定字母的文件存储在一个数组中
我想要什么
<leader><leader>p 调用一个函数来执行必要的操作(我暂时不知道具体是什么......)
此功能将要求用户输入所需的字母。当他输入字母时,一个菜单会显示可用的结果(因此,这个菜单需要自动刷新)。
我希望用户可以结束键入并通过突出显示它移动到所需的文件。
例如:
我目前拥有的
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 实现)。
有人可以帮我开始吗?
谢谢,
达米安
【问题讨论】:
-
vim.org/scripts/script.php?script_id=1984<br> peepcode.com/products/peepopen/<br> 是我想到的两个插件,此外vim.org/scripts/script.php?script_id=2620 和vim.org/scripts/script.php?script_id=1879 在插入文本时提供了弹出窗口和文件名补全;例如在源代码中引用文件时
-
@ epsilon 'εⳆ2' halbe 这正是我想要做的......只是为了方便起见必须映射。非常感谢。我会尝试看看 FuzzyFinder 如何为这个问题添加答案:)
-
另外你知道
set wildmenu、set wildmode=list:longest和set wildignore=*.o,*.jpg,...我想它可以解决你的问题
标签: python autocomplete vim