2013-02-28 12 views
8

Sono confuso tra i due eventi BufRead e BufEnter. Qual'è la differenza tra loro?Qual è la differenza tra BufRead e BufEnter?

Alcuni scenari di esempio in cui scegliere uno rispetto all'altro sarebbero di grande aiuto.

+1

Hai provato ': help BufRead' e': help BufEnter'? –

+1

Sì. Ho letto il documento. Ma non ho capito chiaramente. –

risposta

8

A buffer è la rappresentazione in memoria di un file; per modificarne uno, deve essere visualizzato in una finestra .

L'evento BufRead viene attivato dopo che Vim ha letto il file nella sua memoria. A meno che non si ricarichi tramite :edit!, ciò accade solo una volta.

Il viene attivato ogni volta che si attiva un determinato buffer, ad esempio quando diventa il buffer in cui si trova il cursore. Ad esempio, quando si dispone di finestre divise che mostrano buffer diversi e si sposta da una posizione all'altra. Inoltre, in una singola finestra, quando si utilizza un comando come <C-^>, :bnext per modificare il buffer attualmente modificato.

+3

Vedo molti autocmds definiti con 'BufRead, BufEnter'. Perché viene usato anche 'BufRead', considerando che' BufEnter' succederà sempre dopo di esso prima di iniziare a modificare il buffer? –

3

BufRead viene attivato dopo che il buffer è stato popolato con il contenuto di un file.

BufEnter viene attivato dopo aver inserito un buffer per la modifica.

È possibile utilizzare BufNew, BufRead o BufAdd se si vuole fare qualcosa al momento della creazione del buffer: impostazione qualche variabile globale, compilazione di un elenco dei buffer del proprio per l'utilizzo in uno script.

È possibile utilizzare BufEnter quando si desidera impostare opzioni specifiche in base al tipo di file o altro.

Problemi correlati