如何在 Vim 中每次按键时将当前缓冲区的内容写回文件?

2023-11-21

我希望 Vim 尽可能频繁地自动写入我的文件。理想的情况是每次击键。

我需要定期保存,以便我的后台构建过程能够看到它。它是 LaTeX 文档的 makefile,我希望预览器在我完成输入后向我显示一个几乎最新的文档。

最终解决方案

下面的答案有助于做到这一点。

" Choose your own statusline here
let g:pbstatusline="%F\ %y\ %l:%c\ %m"
set statusline=%F\ %y\ %l:%c\ %m

autocmd FileType tex setlocal autowriteall

" Save the file every 5 keypresses
autocmd FileType tex setlocal statusline=%!pb:WriteFileViaStatusLine()

" Save the file every time this event fires.
autocmd FileType tex :autocmd InsertLeave,CursorHold,CursorHoldI * call pb:WriteFileViaStatusLine("always")

" 1 optional param: "always" is only allowed value.
let s:writefilecounter = 0
function! pb:WriteFileViaStatusLine(...)
   if s:writefilecounter > 5 || (a:0 > 0 && a:1 == "always")
      if &buftype == ""
         write
      endif
      let s:writefilecounter = 0
   else
      let s:writefilecounter = s:writefilecounter + 1
   endif

   return g:pbstatusline
endfunction

不再需要这些技巧了。当文件发生更改时,Vim 可以自动将文件写入磁盘。只需将其添加到您的 $MYVIMRC 中:

autocmd TextChanged,TextChangedI <buffer> write

我相信你需要 Vim 7.4。相比之下autosave=1,这将保存您的文件立刻你改变它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Vim 中每次按键时将当前缓冲区的内容写回文件? 的相关文章

随机推荐