1

単純なキー マッピングに基づいて呼び出される関数があります。

function! JumpToDefinition()
    let filetype=&ft
    if filetype == 'coffee'
        exe '<C-]>'
    endif
endfunction

これは手動で行うと機能します<C-]>が、上記で「実行」しようとすると「末尾の空白」エラーが発生します。

上記のようなスタンドアロン関数でこれを呼び出すにはどうすればよいですか?

4

1 に答える 1

5

結果の式をExコマンドとして実行することに注意してください:execute .Exコマンドがないため、これはおそらくあなたが望むものではありません <C-]>. を使用する必要があります:normal

ただし、これらの「特別なキー」を、それらが表す文字の代わりに使用できるようにするには、次の 3 つの点に注意する必要があります。

  1. それらを表す正しい方法は、バックスラッシュを使用することです\<xxx>。のヘルプを確認してくださいexpr-string
  2. 一重引用符ではなく二重引用符を使用する
  3. :normalのような式ではなく、コマンドを受け入れます:execute

したがって、上記の項目 1 と 2 から、 を使用する必要があることがわかり"\<C-]>"ますが、これを の前に置くことはできません :normal。できますが、「引用符、バックスラッシュ、C、...」として実行されます。解決策は、 の使用に戻り :execute、今度"\<xxx>"は の前に表示される文字列を作成:normalし、実際の文字に展開して実行することです。

:exe "norm \<C-]>"
于 2013-05-08T14:22:29.327 に答える