2

マージの競合をすばやく通過するために、いくつかのマップをセットアップしようとしています。これが私のコードです:

func! DiffAccept(w)
  diffget a:w
  diffupdate
  normal ]c
endfunc

noremap dh :exec DiffAccept("//2")<CR>
noremap dl :exec DiffAccept("//3")<CR>

これを使用しようとするたびに、「a:w に一致するバッファがありません」というメッセージが表示されます。私は明らかにこの変数を間違って使用していますが、行を「echo a:w」に変更すると期待どおりに動作します。

4

1 に答える 1

5

Vim の評価規則は、ほとんどのプログラミング言語とは異なります。:execute(関数の引数)変数を評価するために使用する必要があります。それ以外の場合は、文字どおりに (バッファー名として) 取得されます。

execute 'diffget' a:w

PS: :normal!(with !);を使用することをお勧めします。これにより、マッピングによる干渉が回避されます。

于 2013-09-23T19:35:02.133 に答える