在Vim中设置缓冲区特定变量

时间:2012-07-05 02:17:01

标签: vim

如果未使用以下autocmd定义局部变量,我正在尝试将缓冲区局部变量设置为全局变量

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

但是,b:变量未定义。我在这做什么不正确?

编辑:重新说明/澄清,b:文件中正在使用变量。错误是b:Variable is not defined

1 个答案:

答案 0 :(得分:4)

首先,您的自动命令是正确的。它应该工作。

我看到一些可能失败的原因:

  • g:未定义变量
  • 事件已停用,请参阅:help eventignore(这不太可能)
  • vim版本不支持自动命令功能(这也不太可能)。 :版本必须列出+ autocmd。
  • 我最喜欢的:自动命令不是来源的。您确定您的自动命令是否处于活动状态?

什么是

  

:详细的autocmd BufEnter

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

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

  

:au BufEnter * echom“Buffer Entered”