我正在使用带有deoplete自动完成插件的neovim。我不喜欢自动自动完成,因此我尝试使用<Tab>
完成工作。正如文档所示:
inoremap <silent><expr> <Tab>
\ pumvisible() ? "\<C-n>" : deoplete#manual_complete()
这很有用......除了<Tab>
不会缩进,即使我在一行的开头(或者光标下面有空格)。我写了一个函数(很差)来解决这个问题:
function! Smart_TabComplete()
if pumvisible()
return "^N"
endif
let line = getline('.') " current line
let substr = strpart(line, -1, col('.')+1) " from the start of the current
" line to one character right
" of the cursor
let spaces = strpart(line, -1, col('.'))
let substr = matchstr(substr, '[^ \t]*$') " word till cursor
let spaces = matchstr(spaces, '[^ \t]*$')
if (strlen(substr)==0) " nothing to match on empty string
return " "
endif
if (strlen(spaces)==0) " nothing to match on empty string
return " "
endif
deoplete#manual_complete()
endfunction
我之所以称之为deoplete#manual_complete()
而不是<Tab>
。看起来这修复了使用Not an editor command: deoplete#manual_complete()
缩进问题,但现在我总是得到函数内部:
deoplete
我不确定该如何处理,我甚至尝试将Smart_TabComplete
作为参数传递给<Tab>
,但它不起作用。
deoplete#manual_complete()
用于自动填充和间距?destroy
?答案 0 :(得分:1)
使用:call
命令调用函数。
call deoplete#manual_complete()
如果您需要返回deoplete#manual_complete()
的结果,请使用:return
:
return deoplete#manual_complete()
如需更多帮助,请参阅:
:h :call
:h :return