当焦点从窗口丢失时,如何在Vim 7中自动保存?

时间:2012-01-31 21:58:38

标签: vim

我在.vimrc中尝试了以下内容:

:au FocusLost * silent! wa
autocmd BufLeave,FocusLost silent! wall

还尝试过:

How can I make Vim autosave files when it loses focus?

但无法使其工作,当我执行Ctrl + Z或切换到终端(mac)中的另一个选项卡时,它仍然无法自动保存。

2 个答案:

答案 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)。