回答:
これはかなり単純です:
:autocmd CursorHold *
\ let save_modified = &modified |
\ silent! execute 'write' fnameescape(tempname()) |
\ let &modified = save_modified
ただし、これには:new
、最初のトリガーでバッファに名前を付けるという副作用があります。(これは、既存のファイルには影響を与えません。これは間の差である:write
と:saveas
。)あなたはどちらか(別のチェックを追加することができますempty(bufname(''))
)と、アンドゥを経由している:0file
、または完全な機能レベル下げるように移動します。
:autocmd CursorHold * call writefile(getline(1, '$'), tempname())
このアプローチの注意点は、ファイルの内容が常に保持されることです。
'encoding'
設定で'fileencoding'
は、元のバッファーのカスタムが失われます。map()
は、によって返されたリストを介して復元できますgetline()
)。
:[range]w !command
。