Як я можу перезавантажити всі буфери одночасно?


20

Під час роботи над гілкою функцій у gitмені часто потрібно зберігати зміни, щоб зробити виправлення помилок у головній гілці. Коли я закінчую роботу над змінами, я git stash popоновлює часові позначки на файли.

Незважаючи на те, що файли ідентичні, наступного разу, коли я намагаюся зберегти, я отримую:

ПОПЕРЕДЖЕННЯ: Файл змінено після його читання !!!

Ви дійсно хочете написати до нього (у / п)?

Я не хочу автоматично перезавантажувати файл щоразу, коли він змінюється на диску, тільки коли я git stash pop.

Зараз я вручну завантажую кожен буфер окремо ( :e). Чи є спосіб зробити це за допомогою однієї команди?

Відповіді:


26

Подивіться, :help bufdoщо ви хочете зробити. Він виконає команду у кожному буфері списку буферів. Наприклад:

:bufdo e

Ви також можете переглянути, :help noconfirmщоб відключити діалогове вікно підтвердження перед тим, як видавати bufdoкоманду

:set noconfirm

і повторно включити його після bufdoкоманди.

:set confirm

1
Для сили, спробуйте: :bufdo! e.
kenorb

і без друку повідомлень на екрані: мовчить! bufdo е
Вернер

12

Це можна зробити за допомогою :checktimeкоманди. З документів :

:checkt[ime]        Check if any buffers were changed outside of Vim.
                    This checks and warns you if you would end up with two
                    versions of a file.

Команда запитає вас, що робити для кожного буфера, у файлі якого є змінена часова мітка. Щоб вимкнути це для файлів, які не змінилися, ви можете :set autoreadзмусити vim просто перезавантажити їх. ВІМ буде просити вас , якщо вміст між буфером і файлом на диску змінилися.

Ви можете налаштувати карту на зразок наступної для зручності використання:

nnoremap <F5> :checktime<CR>

Ось деякі відомості про бонуси, які насправді не є частиною відповіді: Для мене на OpenSUSE gvim (графічний інтерфейс GTK для vim) робить це автоматично, коли він набуває фокус. Я не знаю, чому це робиться, і я не перевіряв інші системи, але я вважав, що це може бути корисним як додаткове. Може, Someelse може підтвердити?
tokoyami

Це справді корисно! Що я зробив в кінці, це інтегрувати цю команду як частину клавіш швидкого перемикання вкладок. тобтоnnoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith

1
@tokoyami, функція, яку ви маєте, gvimможе бути пов'язана з FocusGainedподією в vim. Тут Ви можете знайти деяку пов’язану інформацію - unix.stackexchange.com/a/383044/99801 .
Віктор Ярема
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.