Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/google-chrome-extension/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当焦点从窗口丢失时,如何在Vim 7中自动保存?_Vim - Fatal编程技术网

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

当焦点从窗口丢失时,如何在Vim 7中自动保存?,vim,Vim,我在我的.vimrc中尝试了以下操作: :au FocusLost * silent! wa autocmd BufLeave,FocusLost silent! wall 并尝试: 但无法使其工作,当我按Ctrl+Z键或切换到终端(mac)中的另一个选项卡时,它仍然不会自动保存。当您转到另一个缓冲区时,会触发buflive。无论是还是切换到另一个Terminal.app选项卡都不会触发此问题,因为您使用的是CLI Vim,它根本不关心终端仿真器的GUI或环境,而且……您没有离开缓冲区 这同

我在我的
.vimrc
中尝试了以下操作:

:au FocusLost * silent! wa
autocmd BufLeave,FocusLost silent! wall
并尝试:


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

当您转到另一个缓冲区时,会触发buflive
。无论是
还是切换到另一个Terminal.app选项卡都不会触发此问题,因为您使用的是CLI Vim,它根本不关心终端仿真器的GUI或环境,而且……您没有离开缓冲区

这同样适用于
FocusLost
(文档或多或少地说,它只是GUI,但可以在某些终端上工作,而不知道是哪个终端)

因此,这些设置可能在MacVim中起作用,但在CLI Vim中肯定不起作用

事实上,由于Vim不知道终端仿真器的选项卡,也不知道它被放在后台,所以我怀疑您能否在CLI Vim中实现目标


我碰巧在我的
~/.vimrc
中有
autocmd FocusLost*:wa
,但我将它放在
中,如果有(“gui_running”)
条件,并且
inoremap:w
在ESC上保存。希望有帮助。

在OS X和Vim CLI上,我使用这个插件

自动保存-自动将更改保存到磁盘,而无需使用
:w
(或对它的任何绑定)每次修改缓冲区时。 默认情况下禁用自动保存,请运行
:AutoSaveToggle
以启用/禁用 自动保存。如果您希望插件始终处于启用状态,可以使用
g:auto_save
选项(将
'let g:auto_save=1'
放在
.vimrc
中)


inoremap:w
太棒了。谢谢@romainl@adarsh,
autocmd InsertLeave*如果展开('%')!=''update | endif
好得多。@romainl,那太棒了!它确实省略了诸如“x”或“dd”之类的内容。对于这些类型的命令,您可以使用什么?事实上,可能就是这样。好吧,没关系,也有凹痕。我猜你必须在每个命令上都保存,但这似乎有点过头了。否?添加了一个我发现的插件,似乎比手动配置/破解更干净,并且该工作是否可能重复:au BufHidden*:wat此插件似乎是一个更新的版本: