Ashish Ranjan
Ashish Ranjan

Reputation: 575

What is the difference between BufRead and BufEnter?

I am confused between the two events BufRead and BufEnter. What is the difference between them?

Some example scenarios where I would choose one over the other would be greatly helpful.

Upvotes: 15

Views: 6471

Answers (2)

Ingo Karkat
Ingo Karkat

Reputation: 172698

A buffer is the in-memory representation of a file; to edit one, it has to be displayed in a window.

The BufRead event is triggered after Vim has read the file into its memory. Unless you reload via :edit!, this only happens once.

The BufEnter is fired whenever you activate a certain buffer, i.e. when it becomes the buffer the cursor is in. For example when you have split windows that show different buffers, and you move between them. Also in a single window, when you use a command like <C-^>, :bnext to change which buffer is currently being edited.

Upvotes: 19

romainl
romainl

Reputation: 196777

BufRead is triggered after the buffer has been populated with the content of a file.

BufEnter is triggered after you enter a buffer for editing.

You may use BufNew, BufRead or BufAdd if you want to do something upon the creation of the buffer: setting some global variable, populating a buffer list of your own for use in a script.

You may use BufEnter when you want to set specific options depending on the filetype or whatever.

Upvotes: 6

Related Questions