【发布时间】:2015-08-04 22:34:38
【问题描述】:
我正在尝试write a snippet of VimL 以允许用户切换使用热键突出显示不需要的尾随空格。 (这是我的第一个 Vim 脚本,除了将内容复制粘贴到我的 .vimrc 之外,所以......盐粒:P)
我希望“我们当前是否突出显示尾随空格?”是特定于缓冲区的状态;但我在弄清楚自动命令如何与缓冲区交互时遇到了很多麻烦。
例如,here's 我第一次尝试 buffer-local autocmds 的 augroup:
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无效!)
目前,I've swapped out <buffer=abuf> 为 *;但是当加载了多个缓冲区时,这会破坏此函数的功能,这很糟糕。因此,欢迎任何帮助解决这个问题。 /=
【问题讨论】:
-
你有什么理由需要
<buffer=abuf>吗?从 sn-ps 你应该只需要<buffer>。另外你是如何加载论文的?它是在你的 vimrc 期间加载的吗? -
抱歉没有查看所有链接。最后两个的答案是在 VimEnter 期间加载的。
-
你让它变得比现在复杂得多。看看trailertrash 了解更简单的方法。
标签: vim vim-syntax-highlighting autocmd