2013-02-28 34 views
8

Tôi đang bối rối giữa hai sự kiện BufReadBufEnter. sự khác biệt giữa chúng là gì?Sự khác nhau giữa BufRead và BufEnter là gì?

Một số trường hợp mẫu mà tôi sẽ chọn một trường hợp khác sẽ hữu ích hơn rất nhiều.

+1

Bạn đã thử ': help BufRead' và': help BufEnter'? –

+1

Có. Tôi đọc tài liệu. Nhưng tôi không hiểu rõ. –

Trả lời

8

Bộ đệm là bản trình bày trong bộ nhớ của tệp; để chỉnh sửa, nó phải được hiển thị trong một cửa sổ .

Sự kiện BufRead được kích hoạt sau khi Vim đã đọc tệp vào bộ nhớ của nó. Trừ khi bạn tải lại thông qua :edit!, điều này chỉ xảy ra một lần.

BufEnter được kích hoạt bất cứ khi nào bạn kích hoạt bộ đệm nhất định, tức là khi bạn trở thành bộ đệm con trỏ. Ví dụ: khi bạn có cửa sổ phân tách hiển thị bộ đệm khác nhau và bạn di chuyển giữa lúc đó. Cũng trong một cửa sổ, khi bạn sử dụng lệnh như <C-^>, :bnext để thay đổi bộ đệm nào hiện được chỉnh sửa.

+3

Tôi thấy nhiều autocmds được định nghĩa với 'BufRead, BufEnter'. Tại sao 'BufRead' cũng được sử dụng, xem xét rằng' BufEnter' sẽ luôn luôn xảy ra sau khi nó trước khi bạn bắt đầu chỉnh sửa bộ đệm? –

3

BufRead được kích hoạt sau khi bộ đệm được điền bằng nội dung của tệp.

BufEnter được kích hoạt sau khi bạn nhập bộ đệm để chỉnh sửa.

Bạn có thể sử dụng BufNew, BufRead hoặc BufAdd nếu bạn muốn làm điều gì đó dựa vào việc tạo bộ đệm: thiết lập một số biến toàn cầu, Populating một danh sách đệm của riêng bạn để sử dụng trong một kịch bản.

Bạn có thể sử dụng BufEnter khi bạn muốn đặt tùy chọn cụ thể tùy thuộc vào loại tệp hoặc bất kỳ điều gì.

Các vấn đề liên quan