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:变量未定义
  • 事件被禁用,请参阅 :help eventignore (这不太可能)
  • 您的 vim 版本不支持自动命令功能(这也不太可能)。:version 必须列出 +autocmd。
  • 我最喜欢的:自动命令没有来源。您确定您的自动命令处于活动状态吗?

做什么

:verbose autocmd BufEnter

说?如果您的自动命令未列出,则它未处于活动状态。

或者尝试一些更简单并提供直接反馈的方法,以查看带有 BufEnter 的自动命令是否正常工作。例如

:au BufEnter * echom "缓冲区输入"

于 2012-07-05T19:39:23.347 回答