BufRead和BufEnter有什么区别?

14
我对 BufReadBufEnter 这两个事件感到困惑。它们之间有什么区别?请举一些例子说明何时应选择其中一个。

1
你尝试过使用 :help BufRead:help BufEnter 吗? - user849425
2
是的,我看了文档。但我并没有完全理解。 - Ashish Ranjan
2个回答

15

缓冲区是文件的内存表示形式;要编辑一个文件,必须在窗口中显示。

BufRead事件在Vim将文件读入内存后触发。除非您通过:edit!重新加载,否则只会发生一次。

BufEnter在您激活某个缓冲区时触发,即当它成为光标所在的缓冲区时。例如,当您拆分窗口以显示不同的缓冲区并在它们之间移动时。在单个窗口中,当您使用像<C-^>:bnext这样的命令来更改当前编辑的缓冲区时也会触发。


6
为什么在定义自动命令(autocmds)时,许多人都使用了BufRead,BufEnter?考虑到在开始编辑缓冲区之前,BufEnter始终会在BufRead之后发生,为什么还需要使用BufRead - Ciro Santilli OurBigBook.com

4

BufRead会在文件内容被写入缓冲区后触发。

BufEnter会在您进入某个缓冲区进行编辑后触发。

如果您想在创建缓冲区时执行一些操作:设置一些全局变量,为脚本中使用的自己的缓冲区列表填充数据等,可以使用BufNewBufReadBufAdd

如果您想根据文件类型或其他条件设置特定选项,则可以使用BufEnter


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接