如果没有使用下面的autocmd定义局部变量,我将尝试将buffer-local变量设置为全局变量
au BufEnter * if !exists('b:Variable') | let b:Variable = g:Variable | endif
但是,B:变量没有被定义。我做错了什么?编辑:重新措辞/澄清,B:文件中使用了变量。错误是b:Variable is not defined。
b:Variable is not defined
67up9zun1#
首先,你的自动命令是正确的。应该可以的我看到了它可能失败的一些原因:
什么能:verbose autocmd BufEntersay?如果您的自动命令未列出,则它未处于活动状态。或者尝试一些更简单的东西,并提供直接的反馈,看看BufEnter的自动命令是否正常工作。举个例子:Au BufEnter * echom“已进入缓冲区”
iq0todco2#
实际上,BufReadPre并没有涵盖所有的情况--它只在 existing 文件被读入缓冲区时触发。要让autocmd也为新文件触发,可以像这样组合BufReadPre和BufNew:
BufReadPre
autocmd
BufNew
augroup ale_linters autocmd! autocmd BufNew,BufReadPre * if !exists('b:ale_linters') | let b:ale_linters = 'all' | endif augroup end
2条答案
按热度按时间67up9zun1#
首先,你的自动命令是正确的。应该可以的
我看到了它可能失败的一些原因:
什么能
:verbose autocmd BufEnter
say?如果您的自动命令未列出,则它未处于活动状态。
或者尝试一些更简单的东西,并提供直接的反馈,看看BufEnter的自动命令是否正常工作。举个例子
:Au BufEnter * echom“已进入缓冲区”
iq0todco2#
实际上,
BufReadPre
并没有涵盖所有的情况--它只在 existing 文件被读入缓冲区时触发。要让autocmd
也为新文件触发,可以像这样组合BufReadPre
和BufNew
: