1

次のautocmdを使用してローカル変数が定義されていない場合、バッファローカル変数をグローバル変数に設定しようとしています

au BufEnter * if !exists('b:Variable') | let b:Variable = g:Variable | endif

ただし、b:Variable は定義されていません。ここで間違っていることは何ですか?

編集:言い換え/明確にするために、 b:Variable がファイルで使用されています。エラーはそれb:Variable is not definedです。

4

1 に答える 1

4

まず第一に、あなたの自動コマンドは正しいです。動作するはずです。

失敗する理由がいくつかあります。

  • g:変数が定義されていません
  • イベントは無効になっています。:helpeventignoreを参照してください(これはほとんどありません)
  • autocommand-featureはvimバージョンではサポートされていません(これもありそうにありません)。:versionは+autocmdをリストする必要があります。
  • 私のお気に入り:自動コマンドはソースされていません。自動コマンドがアクティブになっていることを確認しますか?

何をしますか

:verbose autocmd BufEnter

いう?自動コマンドがリストされていない場合、それはアクティブではありません。

または、BufEnterを使用した自動コマンドが一般的に機能するかどうかを確認するために、より単純で直接フィードバックを提供するものを試してください。例えば

:au BufEnter *echom"バッファが入力されました"

于 2012-07-05T19:39:23.347 に答える