[Full code at the end of message]
我正在尝试为 vim 编写一个插件,我在其中调用了一个 ruby 脚本。该函数不会成为CTRL-P
自动完成的一部分。我只需要调用一个带有选项的弹出窗口。
脚本被传递方法和它的前一个单词。例如Array.fill
orsome_variable.new
将传递整个字符串,而some_var.some_word.new
将传递some_word.new
。该插件将找到方法的参数并将它们附加到 Vim 中的文本中。当有多种可能性时,它将调用一个弹出窗口供用户选择。
一切正常,并且可以使用以下方法将结果粘贴到行中:
call setline(line('.'), getline('.') . shell_output)
但在多种可能性的情况下,我想使用一个弹出对话框,用户可以选择插入什么。我试过这个:
call complete(col('.'), [shell_output])
现在 vim 抱怨我没有从插入模式调用它。但是我需要从正常模式调用它才能传入前一个单词……!!
inoremap <TAB> <esc>"*yiW:call TestDio(@*)<CR>
function! TestDio(string)
let result = a:string
let shell_output = system("ruby SCAutoComplete.rb " . result)
call complete(col('.'), [shell_output])
endfunction