1

我想做的是让<tab>一切都做。

  1. 如果那里有空格,请添加普通选项卡
  2. 如果出现,在弹出菜单中上下移动
  3. 在那里添加 CodeComplete() 函数的返回结果

我从 CodeComplete() 函数中得到了变量的结果codecompl。所以问题就在这里:如何在变量中插入刺codecompl。请不要调用return,因为在插入变量的字符串后我还有其他事情要做codecompl。代码贴在这里:

function! CleverTab()
    if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
        return "\<Tab>"
    endif
    if pumvisible()
        return "\<C-N>"
    endif
    let s:codecompl = CodeComplete()
    <c-r>=s:codecompl<cr>
    "exec " " .s:codecompl. "\<enter>"."."
    "if g:swith_region_flag == 1
    "    return SwitchRegion()
    "else return s:codecompl
    return ''
endfunction

我尝试了很多方法,但问题仍然没有解决。我现在想的是使用 = 将字符串插入变量 codecompl 中。然后做其他事情。

4

2 回答 2

2

如果您不坚持编写自己的函数,请查看supertab。它具有所有这些功能...

于 2013-02-21T10:57:30.807 回答
1

你的意思是你不能只是

:return s:codecompl

因为你需要执行其他代码,但是插入内容之后s:codecompl就完成了?!

该序列不可能在单个函数中实现;将附加代码移动到不同的函数并将其调用附加到插入的代码中:

:return s:codecompl . "\<C-O>:call SecondPart()\<CR>"

或者

:return s:codecompl . "\<C-R>=SecondPart()\<CR>"
于 2013-02-21T11:09:10.347 回答