私はdeopleteオートコンプリートプラグインでneovimを使用しています。私は自動自動完了が気に入らないので、<Tab>
を使って作業を完了しようとしています。ドキュメントが示すように:これは私が行の先頭にしていても、もはや字下げしないこと<Tab>
除いて...素晴らしい作品Vim:カスタム関数でオブジェクトメソッドを呼び出す
inoremap <silent><expr> <Tab>
\ pumvisible() ? "\<C-n>" : deoplete#manual_complete()
(またはカーソルの下のスペースがあります)。私はこれを回避するための機能を(悪い)書いた:
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()
を呼び出すにはどうすればよいですか?
これは、関数を呼び出すにつながるんが、それはように見えます'deoplete'関数呼び出しを実際にプロキシするのではなく、関数' 0'の戻り値を使用してください。助言がありますか? –