所以,我试图在python中实现一个自定义的completefunc
,但是我在让代码正确地接口时遇到了困难。我希望它为我提供(最初)一个来自固定目录的文件名列表(不久将被另一个列表替换)。在
我最近的尝试是这样的:
function! CompleteNVIM(findstart,base)
python <<
import vim
import os
def complete( base ):
matches = [ "'"+os.path.splitext(x)[0]+"'" for x in os.listdir('notes') ]
vim.command( "let p = [" + ",".join(matches) + "]" )
return vim.eval('p')
def findstart():
r,c = vim.current.window.cursor
l = vim.current.line
while c>0 and l[c-1] != '[':
c=c-1
return c
def complete_nvim( findstart,base ):
if 1==findstart:
return findstart()
else:
return complete( base )
.
return python complete_nvim(a:findstart,a:base)
endfunction
set completefunc=CompleteNVIM
{return}然而}抱怨^。如果我省略python
,就会得到一个unknown function complete_nvim
错误。在
我也尝试过这样的结局:
^{pr2}$(例如,删除def complete_nvim chunk
,但当我试图从函数外部返回时,这会失败(或者python是这么想的)。在
我也尝试过将python函数放在初始化函数中,然后尝试set completefunc=complete_nvim
,但是对于未知函数,这也失败了。在
在深入研究了一些插件之后,我得出了这样的结论:vim中的python函数不能直接返回值。在
解决方法是使用全局变量,如下所示:
还请注意在传递参数时需要使用
vim.eval
相关问题 更多 >
编程相关推荐