我希望vim能够尽可能频繁地自动编写我的文件.理想的是每次按键.
我需要定期保存,以便我的后台构建过程能够看到它.这是一个乳胶文档的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
Sameer.. 11
不再需要这些黑客攻击了.无论何时更改,Vim都可以自动将文件写入磁盘.只需将其添加到$ MYVIMRC即可:
autocmd TextChanged,TextChangedI
我相信你需要Vim 7.4.相反autosave=1
,这将在您更改文件后立即保存.
不再需要这些黑客攻击了.无论何时更改,Vim都可以自动将文件写入磁盘.只需将其添加到$ MYVIMRC即可:
autocmd TextChanged,TextChangedI
我相信你需要Vim 7.4.相反autosave=1
,这将在您更改文件后立即保存.
一个hack就是使用你的状态行:
function! WriteFile() if &buftype == "" write endif return '%f %h%w%m%r%=%-14(%l,%c%V%) %(%P%)' endfunction setlocal statusline=%!WriteFile() set laststatus=2
只要状态行可见,它就会在每次更改文件后更新.更新后,将WriteFile()
调用该函数,该函数将写入文件(并在默认状态行返回我的近似值).使用时laststatus=2
,即使只打开一个窗口,也会显示状态行.
这将在每次更改后保留当前缓冲区.
有CursorMoved和CursorMovedI autocmd事件,但我不认为每次键入插入模式时都会应用一个事件.
您也可以,如此大胆,在插入模式下重新绑定每个可打印字符以保存然后键入字符.