VIM関数でキーコマンドを実行する


13

関数があり、キーコマンドを実行したいのですが、Trailing charactersというエラーが表示されます。

function! MyFunction()
  if condition
    <C-W><C-W>
  else
    :some_other_command
  endif
endfunction

<CW> <CW>は好きではありません

代わりに何を使用できますか?

回答:


20

一般的な答えは、:normal次のようなコマンドを使用することです

:exe "normal \<C-W>\<C-w>"

この:executeアプローチは、:normalコントロールキーの組み合わせなどの特殊文字を認識するための読み取り可能な方法です。他のアプローチは

:normal ^W^W

ここで、それぞれ^Wはと入力して挿入される1文字Ctrl-vCtrl-wです。


^Wスクリプトで使用すると、バイナリモードで開きます。それを回避するにはどうすればよい:exeですか?
デニスコロディン

0

フィードキー機能を使用します。^ Wは「^」+「W」ではなく、実際には「Ctrl-V Ctrl-W」と入力することに注意してください。それは特別なキャラクターです。

function! MyFunction()
  if condition
    call feedkeys("^W^W")  
  else
    :some_other_command
  endif
endfunction
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.