2013-02-28 30 views
8

我很困惑這兩個事件BufReadBufEnter。他們有什麼區別?BufRead和BufEnter有什麼區別?

一些示例場景,我會選擇一個在另一個會很有幫助。

+1

你試過':help BufRead'和':help BufEnter'嗎? – 2013-02-28 07:17:54

+1

是的。我閱讀了文檔。但我並不清楚。 – 2013-02-28 07:23:03

回答

8

A 緩衝區是文件的內存中表示;要編輯一個,它必須顯示在窗口中。

Vim將文件讀入內存後觸發BufRead事件。除非您通過:edit!重新加載,否則只會發生一次。

無論何時激活某個緩衝區,即當它成爲光標所在的緩衝區時,都會觸發BufEnter。例如,當您有分割窗口顯示不同的緩衝區,然後在兩者之間移動時。同樣在單個窗口中,當您使用像<C-^>:bnext這樣的命令更改當前正在編輯的緩衝區時。

+3

我看到許多用'BufRead,BufEnter'定義的autocmds。爲什麼'BufRead'也被使用,考慮到'BufEnter'會在你開始編輯緩衝之前總是發生? – 2014-04-07 06:15:35

3

BufRead在緩衝區填充文件內容後觸發。

BufEnter在您輸入緩衝區進行編輯後觸發。

您可以使用BufNewBufRead或者,如果你想要做在創建緩衝區的東西BufAdd:設置一些全局變量,填充自己的緩衝區列表在腳本中使用。

當您想根據文件類型或其他設置特定的選項時,您可以使用BufEnter