我在我的尝试过.vimrc:
:au FocusLost * silent! wa
autocmd BufLeave,FocusLost silent! wall
Run Code Online (Sandbox Code Playgroud)
并尝试过:
但无法让它工作,当我执行Ctrl + Z或切换到终端(mac)中的另一个选项卡时,它仍然不会自动保存.
rom*_*inl 12
BufLeave当你去另一个缓冲区时触发.既<C-z>没有切换到另一个Terminal.app选项卡也会触发这个因为你使用的是CLI Vim,它根本不关心终端仿真器的GUI或环境......你没有离开你的缓冲区.
同样的情况也是如此FocusLost(或多或少,文档说它只是GUI,但可以在某些终端工作而不知道哪一个).
因此,这些设置可能适用于MacVim,但绝对不适用于CLI Vim.
实际上,由于Vim不知道您的终端模拟器选项卡或者它是否在后台,我怀疑您可以在CLI Vim中实现您的目标.
我碰巧autocmd FocusLost * :wa在我的~/.vimrc身上,但我把它放在if has("gui_running")有条件的地方,也inoremap <Esc> <Esc>:w<CR>节省了ESC.希望能帮助到你.