所以,我试图completefunc
在 python 中实现一个自定义,但是我无法让代码正确接口。我在它为我提供(最初)来自固定目录的文件名列表之后(这将很快被不同的列表替换)。
我最近的尝试是这样的:
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
但是,退货抱怨no variable named python
。如果我省略python
,我会得到一个unknown function complete_nvim
错误。
我也试过这个结尾:
if 1==findstart:
return findstart()
else:
return complete( base )
.
endfunction
(即删除def complete_nvim chunk
, 但这失败了,因为我试图从函数外部返回(或者 python 认为)。
我还尝试将 python 函数放入初始化函数中,然后尝试set completefunc=complete_nvim
,但这也因未知函数而失败。