让tab在vim中做所有事情

时间:2013-02-21 10:03:57

标签: vim

我要做的是让<tab>做所有事情。

  1. 如果有空格那么添加普通标签
  2. 如果显示
  3. ,则在弹出菜单中上下移动
  4. 在那里添加CodeComplete()函数的返回结果
  5. 我将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中插入字符串。然后做其他事情。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你的意思是你不能

:return s:codecompl

因为您需要执行其他代码,但 后插入s:codecompl的内容已完成?!

在单一功能中无法实现该序列;将附加代码移动到另一个函数并将其调用附加到插入的代码:

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

或者

:return s:codecompl . "\<C-R>=SecondPart()\<CR>"