我在.vimrc
中尝试了以下内容:
:au FocusLost * silent! wa
autocmd BufLeave,FocusLost silent! wall
还尝试过:
How can I make Vim autosave files when it loses focus?
但无法使其工作,当我执行Ctrl + Z或切换到终端(mac)中的另一个选项卡时,它仍然无法自动保存。
答案 0 :(得分:11)
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上。希望它有所帮助。
答案 1 :(得分:1)
在OS X和Vim CLI上,我使用此插件http://www.vim.org/scripts/script.php?script_id=4521
自动保存 - 无需使用
:w
即可自动将更改保存到磁盘 每次修改缓冲区时(或任何绑定)。 默认情况下禁用AutoSave,运行:AutoSaveToggle
启用/禁用 自动保存。如果您希望始终启用插件,则可以使用g:auto_save
选项{将'let g:auto_save = 1'
放在.vimrc
)。