7

Я использую MacVim (snapshot 51) для редактирования файлов Python/HTML/etc в проекте среднего размера. Каждые несколько месяцев моя система блокируется или выходит из строя, и Vim оставляет множество.* .swp файлы вокруг. Когда я снова открываю Vim после сбоя и редактирую любой из этих файлов, мне говорят, что «файл подкачки» .xyz.swp уже существует!"с параметрами [Прервать] [Выйти] [Удалить] [Восстановить] [Редактировать в любом случае] и [Открыть только для чтения].

Эта опция восстановления будет иметь смысл, если в буфере Vim будут изменения, которые не были сохранены во время сбоя. Однако в момент сбоя эти файлы были открыты на фоне Vim и без изменений.

Если возможно, как я могу настроить Vim, чтобы он не задавал этот лишний вопрос при открытии файлов, для которых нет изменений между файлом .swp и фактическим файлом, например, одним из:

  1. Автоматическое сравнение изменений в файле .swp с файлом, и если изменений нет, просто откройте файл без запроса;

  2. Не хранить файл .swp для файлов без изменений.

  3. Любые другие способы систематически избегать этой бессмысленной подсказки (но я бы предпочел не избегать подсказки в случаях, когда, конечно, были несохраненные изменения).

У меня есть более пятидесяти файлов .swp которые нужно очистить в данный момент, и бессмысленная подсказка - это разочарование, которого я бы хотел избежать.

Спасибо за чтение.

Брайан

4 ответа4

4

Хотя это не совсем то, что вы хотите, это может смягчить проблему:

" Setup backup location and enable
set backup
set backupdir=$HOME/temp/vim_backups/       "where to put those backups
set directory=$HOME/temp/vim_swp/           "this is for swp files      

Создайте эти каталоги, и vim запишет файлы ~ и .swp в центральное место. Гораздо проще убрать таким образом!

Также проверьте recovery.vim - если обнаружен файл .swp, он предложит запустить diff для версии на диске и swp, чтобы вы могли увидеть, что изменилось. Гораздо полезнее этот способ ИМО.

3

Я не тестировал его, но как насчет этого решения, представленного на официальной вики-странице vim?

Файл подкачки "..." уже существует! - так разглядеть

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

#!/bin/bash
# Expects variables realfile, swapfile, recoveryfile.
vim -r "$swapfile" -c ":wq! $recoveryfile" && rm "$swapfile"
if cmp "$recoveryfile" "$realfile"
then rm "$recoveryfile"
else vimdiff "$recoveryfile" "$realfile"
fi

Есть сценарий для этой проблемы также в Stackoverflow.

Это удалит все файлы подкачки, которые соответствуют современным файлам. Все, что не совпадает, отображаются в окне vimdiff, поэтому я могу объединить свои несохраненные изменения.

0

Vim автоматически создает файлы .swp в качестве резервной копии именно для такой ситуации: происходит сбой системы. Чтобы отключить создание файла .swp, следуйте этим инструкциям.

1-й результат для Google: vim disable .swp .

-1

Прочтите документацию по функции «swap-file» в Vim, выполнив команду Vim :help swap должен помочь вам с большим количеством вещей о том, как Vim обрабатывает создание файла подкачки и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .