Оновіть усі файли в буфері з диска in vim


124

Команда оновити файл з версії на диску є :e!

Як я можу зробити те саме для всіх файлів у буфері?

Передумови: мені це потрібно, оскільки я використовую git з декількома гілками з одним відкритим vim, який містить буфер. Коли я перевіряю відділення, я хотів би оновити vim.

Відповіді:


87

Прочитайте документацію bufdo, вона повинна робити те, що ви хочете.


33
добре, так, що: буфдо е! зробимо це. Але є оперативне завантаження (Y / N) кожного разу. Як я можу його позбутися?
odwl

21
Використовуйте, set noconfirmперш ніж використовувати bufdoкоманду ( set confirmзгодом до повторного доступу).
pmf

22
bufdo eз цікавістю залишає всі буфери не виділеними синтаксисом
Стівен Лу

4
@StevenLu Перевірте відповідь ПолаФенні нижче.
DBedrenko

12
Чому люди голосують за це? Це не тільки не відповідь, але і напрямок, до якого веде, означає, що підсвічування синтаксису буде відключено після перезавантаження.
Дмитро Міньковський

120

:checkt[ime]Команда призначена для цієї мети.

Це запропонує вам перезавантажити будь-які зміни буферів; якщо ви хочете пропустити підказку, ви можете зробити це :set autoreadзаздалегідь (ви все одно отримаєте підказку про буфери з локальними незбереженими змінами).

Це також уникає питання виділення синтаксису, про яке згадував Стівен Лу у прийнятій відповіді; :bufdoвимикає підсвічування синтаксису за дизайном .

Знайдено через: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html


19

Ось що я в кінцевому підсумку вклав у свій .vimrc:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

7

Від :help autoread:

Якщо виявлено, що файл змінено поза Vim, і він не змінений всередині Vim, автоматично прочитайте його ще раз. Коли файл буде видалено, цього не робиться.

Якщо, як я, ти просто хочеш завжди пасивно перезавантажувати застарілі, але незмінені буфери, то це здається, що це повинно зробити роботу.

Однак остаточною деталлю є те, коли vim помічає несвіжий буфер. Що можна змусити checktime. Якщо у вас налаштовані події фокусування , ми можемо працювати, checktimeколи ми отримуємо фокус так:

set autoread
autocmd FocusGained * checktime

У цій відповіді є також кілька цікавих деталей.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.