2012-05-23 3 views
8

В Vim, я хотел бы, чтобы отменить через все изменения в все буферы, в хронологическом порядке.ВИМ - отмена всех буферов/Windows/открытых файлов и т.д.

например, в сеансе vim обычно у меня много открытых вкладок, на каждой вкладке много окон. Используя u для отмены (или /g, для перемещения по списку изменений), vim перемещается по изменениям, сделанным в , что буфер, даже если в других буферах внесены новые изменения. (Который я признаю, это то, что я хочу большую часть времени.)

Но есть ли способ вернуться к изменениям во всех буферах в хронологическом порядке? (Я полагаю, что vim прыгнул бы с табула на вкладку, что было бы хорошо.)

Зачем это полезно? ... в основном, когда я возобновляю кодирование после перерыва, я могу напомнить себе о том, «где я нахожусь», то есть все изменения, которые я сделал в прошлый раз.

(Использование MacVim 7,3)

UPDATE: ответы об использовании Git/ртутный сделать хорошие моменты (спасибо, особенно для git stash), но я до сих пор найти эту функцию полезной, как это шаги меня через последние изменения, в порядок, с подсветкой синтаксиса, внутри ВИМ и т.д.)

+5

Я бы утвердил, что журналы фиксации являются лучшими индикаторами прогресса, чем что-либо еще. Даже если у вас есть незавершенные изменения, можно добавить сообщение в 'git stash'. – derekerdmann

+0

FTR Я согласен с общим настроением здесь: используйте VCS. Еще лучше, используйте DVCS и microcommit! – sehe

+0

Другой вариант использования: я просто потратил 5 минут на реорганизацию слишком агрессивно. Теперь тонна модульных тестов не срабатывает, и я понятия не имею, что я сломал. Я хочу отменить, пока тесты не пройдут снова. Да, если бы я решил проверить контроль версий до рефакторинга, это было бы хорошо, но я об этом не думал. – alexanderbird

ответ

4

Вы могли бы прошли долгий путь с undolist:

:bufdo echo expand('%') | undolist 

Результаты в, например, для простого сеанса редактирования:

SpiritParser.cpp 
number changes when    saved 
    1  1 13:57:51 
SpiritParser.h 
number changes when    saved 
    1  1 13:57:55 

Чтобы сделать это для всех видимых окон, делают windo вместо bufdo. Если у вас несколько вкладок, сделайте это

:tabdo windo echo expand('%') | undolist 
1

вы должны использовать какой-то контроля версий: Git, Mercurial, Subversion, независимо от ...

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

Или вы могли бы сделать что-то вроде :windo u. Но это звучит грязно.

Смежные вопросы