我正在尝试编写一段 VimL以允许用户使用热键切换不需要的尾随空格的高亮显示。(这是我的第一个 Vim 脚本,除了将内容复制粘贴到我的.vimrc
, 所以......盐粒:P)
我希望'我们目前是否正在突出尾随空格?成为特定于缓冲区的状态;但是我在弄清楚自动命令如何与缓冲区交互时遇到了很多麻烦。
例如,这是augroup
我对缓冲区本地 的第一次尝试autocmd
:
augroup ExtraWhitespace
au!
au BufEnter <buffer=abuf> match ExtraWhitespace /\s\+$/
au InsertEnter <buffer=abuf> match ExtraWhitespace /\s\+\%#\@<!$/
au InsertLeave <buffer=abuf> match ExtraWhiteSpace /\s\+$/
augroup END
…不幸的是,这在调用时会立即出错:
Error detected while processing function ToggleExtraWhitespace:
line 19:
E680: <buffer=0>: invalid buffer number
line 20:
E680: <buffer=0>: invalid buffer number
line 21:
E680: <buffer=0>: invalid buffer number
No matching autocommands
我不明白为什么<abuf>
是0
,什么时候bufnr('%')
是1
,或者如何让自动命令执行缓冲区1
。(当然0
是无效的!)
目前,我已经换成 <buffer=abuf>
了*
; 但是当加载了多个缓冲区时,这会破坏此函数的功能,这很糟糕。因此,欢迎任何帮助解决这个问题。/=