Refresh all files in buffer from disk in vim

前端 未结 5 1700
予麋鹿
予麋鹿 2021-01-29 19:18

The command to refresh a file from version on disk is :e!

How can I do the same for all files in the buffer?

Background: I need that because I am u

相关标签:
5条回答
  • 2021-01-29 19:27

    Read the documentation for bufdo, it should do what you want.

    0 讨论(0)
  • 2021-01-29 19:28

    From :help autoread:

    When a file has been detected to have been changed outside of Vim and it has not been changed inside of Vim, automatically read it again. When the file has been deleted this is not done.

    If, like me, you just want to always passively reload stale-but-unmodified buffers, then this seems like it should get the job done.

    However the final detail is when vim notices the stale buffer. That can be forced with checktime. If you have focus events set up, then we can run checktime whenever we gain focus like so:

    set autoread
    autocmd FocusGained * checktime
    

    This answer also has some interesting details.

    0 讨论(0)
  • 2021-01-29 19:31

    Here's what I ended up putting in my .vimrc:

    fun! PullAndRefresh()
      set noconfirm
      !git pull
      bufdo e!
      set confirm
    endfun
    
    nmap <leader>gr call PullAndRefresh()
    
    0 讨论(0)
  • 2021-01-29 19:36

    The :checkt[ime] command is designed for this very purpose.

    It will prompt you to reload any buffers that have changed; if you wish to skip the prompt, you can do :set autoread beforehand (you'll still get a prompt on buffers with local unsaved changes).

    It also avoids the syntax highlighting issue mentioned by Steven Lu on the accepted answer; :bufdo turns off syntax highlighting by design.

    Found via: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

    0 讨论(0)
  • 2021-01-29 19:45

    As @Matthew S Mentioned here https://vi.stackexchange.com/a/462, you can use:

    :set noconfirm
    :bufdo !e
    :set confirm
    
    0 讨论(0)
提交回复
热议问题