単純なキー マッピングに基づいて呼び出される関数があります。
function! JumpToDefinition()
let filetype=&ft
if filetype == 'coffee'
exe '<C-]>'
endif
endfunction
これは手動で行うと機能します<C-]>
が、上記で「実行」しようとすると「末尾の空白」エラーが発生します。
上記のようなスタンドアロン関数でこれを呼び出すにはどうすればよいですか?
単純なキー マッピングに基づいて呼び出される関数があります。
function! JumpToDefinition()
let filetype=&ft
if filetype == 'coffee'
exe '<C-]>'
endif
endfunction
これは手動で行うと機能します<C-]>
が、上記で「実行」しようとすると「末尾の空白」エラーが発生します。
上記のようなスタンドアロン関数でこれを呼び出すにはどうすればよいですか?
結果の式をExコマンドとして実行することに注意してください:execute
.Exコマンドがないため、これはおそらくあなたが望むものではありません <C-]>
. を使用する必要があります:normal
。
ただし、これらの「特別なキー」を、それらが表す文字の代わりに使用できるようにするには、次の 3 つの点に注意する必要があります。
\<xxx>
。のヘルプを確認してくださいexpr-string
。:normal
のような式ではなく、コマンドを受け入れます:execute
したがって、上記の項目 1 と 2 から、 を使用する必要があることがわかり"\<C-]>"
ますが、これを の前に置くことはできません :normal
。できますが、「引用符、バックスラッシュ、C、...」として実行されます。解決策は、 の使用に戻り
:execute
、今度"\<xxx>"
は の前に表示される文字列を作成:normal
し、実際の文字に展開して実行することです。
:exe "norm \<C-]>"