Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

When you change a file outside vim, vim notices, and prompts you for action: should it reload the file, and discard any changes you have? should it keep your changes?

Often, just re-reading the buffer is correct. Typically, this occurs:

  • Open a file in vim.
  • Hack away, save.
  • Change branches in git.
  • Vim detects the file has changed.

At this point, I really just want the file to get reloaded, as it is saved. (If the buffer isn't saved, the normal prompt is okay.) Me clicking/typing "Load file" is error prone if I have a stray buffer that isn't saved. Seeing that message only for buffers that are modified would be much safer.

Something that does exactly what I want would be great, but I've really got other desires too (diffing a modified buffer would be cool): can you script what happens when a file changes on-disk?

share|improve this question
add comment

2 Answers

If :set autoread is not enough, you can indeed script the behavior; on this occasion, the FileChangedShell event is fired, and you can hook into that and influence the behavior. See :help FileChangedShell for details.

share|improve this answer
add comment

It sounds like vim's autoread option would do what you're looking for. You can turn that on by adding the following to your vimrc file or typing it into a vim session:

:set autoread

You can get more information about the option by using:

:help 'autoread'

For information on viewing the differences between what's in the vim buffer and what's on disk run:

:help :DiffOrig

That contains some code that you can put into your vimrc file, to define a :DiffOrig command that will do exactly that.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.