Vim автосохранение?

13

От :help swap-file:

Обновление файла подкачки

Файл подкачки обновляется после ввода 200 символов или после того, как вы ничего не набрали в течение четырех секунд. Это происходит только в том случае, если буфер был изменен, а не когда вы только перемещались. Причина, по которой он не обновляется постоянно, заключается в том, что это слишком сильно замедляет нормальную работу. Вы можете изменить количество символов в 200 с помощью опции «updatecount». Вы можете установить время с помощью опции «время обновления». Время дается в миллисекундах. После записи в файл подкачки Vim синхронизирует файл на диск. Это занимает некоторое время, особенно в загруженных системах Unix. Если вы не хотите этого, вы можете установить опцию 'swapsync' в пустую строку. Риск потери работы становится все же больше. В некоторых не-Unix системах (MS-DOS, Amiga) файл подкачки вообще не будет записан.

Из этого у меня есть несколько вопросов:

  1. Означает ли это, что Vim время от времени автоматически сохраняет вашу работу?

  2. «После записи в файл подкачки Vim синхронизирует файл на диск». Что это значит? Это относится к файлу, который записывается сначала в память, а затем на диск, или это что-то еще?

  3. Скажем, я делаю заметки в классе: я пишу быстро, и мне не нужно выходить из режима вставки. Но много раз я меняю на Нормальный, чтобы сохранить свою работу. Нужно ли мне это делать или Vim следит за тем, чтобы большая часть моей работы была сохранена, даже если я не выхожу из режима вставки?

Гонсалу Рибейро
источник

Ответы:

9
  1. Да, это сохраняет файл подкачки.

Вы можете сделать быстрый тест, чтобы почувствовать это. Перейти в каталог. Скажи vim notest.txtи напиши какой-нибудь текст. Вам даже не нужно сохранять файл.

Если вы перечислите файлы в рабочем каталоге, вы найдете файл подкачки. Скопируйте его в другой каталог (где, как говорится, нет файла "notes.txt") vim notest.txt.

Вы получите сообщение о существующем свопе, его изменении и опциях открытия только для чтения, восстановления и т. Д. Выберите recovery и вуаля! «Копия» вашего файла.

  1. Да, своп удерживается в памяти.

Когда Vim читает файл, он добавляет его в оперативную память. Это как для существующих, так и для новых (все еще несохраненных файлов). При сохранении свопа он записывается на диск. HDD Из оперативки

  1. Да и нет.

С настройками по умолчанию большая часть вашей работы сохраняется. Это для каждых 200 введенных символов, или когда у вас есть 4-секундная пауза. Хотя я доверяю сохранению файла подкачки, мне нравится сохранять свою работу, когда я знаю, что нахожусь в нестабильной системе. Но, тем не менее, можно быть уверенным, что работа сохранится, если только вам не повезет и система хостинга паникует сразу после написания очень важного предложения.

Короче говоря, достаточно сэкономить, когда лекция закончится. Если система должна остановиться по какой-либо причине в классе, работа идет до свопинга.

Конечно: если вам очень не повезло, во время записи файла подкачки может произойти сбой. В результате файл подкачки может быть поврежден. Никогда не сталкивался с этим, и не уверен, какие части файла могут быть испорчены, но, возможно, стоит подумать. Поскольку файл подкачки является двоичным (в отсутствие лучшего слова), кажется, что он более хрупкий, чем простой текстовый файл.


Как примечание. По крайней мере, при использовании рабочего каталога для подкачки файл подкачки не зависит от местоположения, когда дело доходит до восстановления. Таким образом, вы можете скопировать файл подкачки в новое место и восстановить файл как новый файл. Заметьте только, что имя файла жестко запрограммировано в свопе. Как таковой вы не можете сказать:

cp .foo.txt.swp .bar.txt.swp

и

vim bar.txt

и ожидать файл подкачки foo.txt.

Если вы очень заинтересованы, вы можете сделать (на * nix):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

чтобы получить путь (с некоторыми причудами) исходного файла. Как вы увидите, добавлен полный путь, например:

~user/blah/blah/notes.txt

но только базовое имя используется при проверке подкачки.

В связи с этим вы также можете проверить vim -rопцию - в которой перечислены файлы подкачки в текущем и нижнем каталогах. Смотрите :h crash-recoveryс подтемами.

Runium
источник
0

Для меня это нормально, чтобы сохранить буфер при каждом изменении текста:

autocmd TextChanged,TextChangedI <buffer> silent write

Я нашел это здесь . Меня устраивает.

simhumileco
источник