1

私がやろうとしているのは、<tab>すべてを任せることです。

  1. 空白がある場合は通常のタブを追加
  2. ポップアップメニューが表示される場合は、ポップアップメニューで上下に移動します
  3. そこに CodeComplete() 関数の戻り結果を追加します

CodeComplete() 関数から variable への結果を取得します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?!

そのシーケンスを 1 つの関数で実現することは不可能です。追加のコードを別の関数に移動し、その呼び出しを挿入されたコードに追加します。

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

または代わりに

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