tutto - Come salvare automaticamente un file ogni 1 secondo in vim?




vim ubuntu guide (2)

Il plugin vim-workspace ha una funzione di salvataggio automatico abbastanza personalizzabile che può soddisfare le tue esigenze (con autoread in modo da ottenere l'ultimo comportamento di scrittore vince). È possibile impostarlo per il salvataggio automatico sempre (per impostazione predefinita, salva solo automaticamente durante una sessione di lavoro) e imposta il tuo updatetime di conseguenza.

let g:workspace_autosave_always = 1
updatetime=1000

Non voglio sapere perché non si dovrebbe salvare automaticamente o ci sono file di swap ecc. O qualunque ragione per non salvare automaticamente.

Voglio semplicemente salvare automaticamente il file di lavoro corrente per salvarlo ogni 1 secondo in vim.

Come posso raggiungere questo obiettivo?


Quando inizi a leggere un file, imposta una variabile buffer sull'ora corrente:

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

Impostare un evento per verificare se è trascorso abbastanza tempo dall'ultimo salvataggio e aggiornamento se non:

au CursorHold * call UpdateFile()

Imposta il periodo di salvataggio automatico, in secondi:

let g:autosave_time = 1

Definire una funzione per salvare il file, se necessario:

" 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

Quindi, per resettare il tempo di salvataggio in modo esplicito:

au BufWritePre * let b:save_time = localtime()

Non ho provato quanto sopra su vim 7.0 e successivi. Inoltre, è improbabile che l'evento CursorHold sia sufficiente per un periodo di salvataggio automatico così piccolo (non si attiva anche durante la registrazione) - forse dovresti chiamare anche UpdateFile() su CursorMoved.

Inoltre, considera l'uso di file di scambio. Per impostazione predefinita, un file di scambio viene scritto dopo 200 caratteri digitati o 4 secondi di inattività. Il recupero dallo swap è abbastanza semplice e forse più affidabile, nel caso qualcosa vada storto.





autosave