Подтвердить что ты не робот

Как автоматически сохранять файл каждые 1 секунду в vim?

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

Я просто хочу автоматически сохранить текущий рабочий файл, чтобы сохранить его каждые 1 секунду в vim.

Как я могу это достичь?

4b9b3361

Ответ 1

Это сохраняет буфер при изменении текста. (Vim 7.4)

autocmd TextChanged,TextChangedI <buffer> silent write

Ответ 2

Когда вы начнете читать файл, установите переменную буфера на текущее время:

au BufRead,BufNewFile * let b:save_time = localtime()

Установите событие, чтобы проверить, прошло ли время со времени последнего сохранения и обновления, если нет:

au CursorHold * call UpdateFile()

Установите период автоматического сохранения в секундах:

let g:autosave_time = 1

Определите функцию для сохранения файла при необходимости:

" save if needed / update the save_time after the save
function! UpdateFile()
  if((localtime() - b:save_time) >= g:autosave_time)
      update
      let b:save_time = localtime()
  else
      " just debugging info
      echo "[+] ". (localtime() - b:save_time) ." seconds have elapsed so far."
  endif
endfunction

Затем, чтобы reset сохранить время явно:

au BufWritePre * let b:save_time = localtime()

Я не тестировал выше на vim 7.0 и новее. Кроме того, событие CursorHold вряд ли будет достаточным для такого небольшого периода автоматического сохранения (он также не срабатывает при записи) - возможно, вы также должны вызвать UpdateFile() в CursorMoved.

Кроме того, рассмотрите возможность использования файлов подкачки. По умолчанию файл подкачки записывается после ввода 200 символов или 4 секунды бездействия. Восстановление от swap довольно простое и, возможно, более надежное, если что-то пойдет не так.

Ответ 3

vim-workspace плагин имеет довольно настраиваемую функцию автоматического сохранения, которая может удовлетворить ваши потребности (с помощью autoread, чтобы вы получили последний выигрыш от записи поведение). Вы можете настроить его всегда автосохранение (по умолчанию оно только автосохраняется в сеансе рабочей области) и соответственно установите ваше обновление.

let g:workspace_autosave_always = 1
updatetime=1000