2011-12-20 69 views
2

我设置我的vim编辑器(我用的MacVim)保存文件时,将自动失去焦点:Vim的:保存在FocusLost和执行自动命令

autocmd FocusLost * silent! wall 

我也自动剥去Python文件结尾的空白使用这个自动命令:

autocmd BufWritePre *.py :%s/\s\+$//e 

这种自动命令完美的作品,当我手动保存文件(通过输入:W或按⌘S),但它不执行(即。当我切换到另一个应用程序并且自动写入缓冲区时,空白区不会被删除)。

如何修改这些自动命令以使它们一起工作?

回答

3

您需要将FocusLost自动命令更改为:

autocmd FocusLost * nested silent! wall 

有关详细信息,请参阅:h autocmd-nested

1

我不能在图形Vim的测试,但你可以尝试一些选项:

  • 加入一些事件在相同的自动命令autocmd BufWritePre,FocusLost *.py ...
  • 从事件执行一个自动命令,类似:
    autocmd BufWritePre *.py :execute "%s/\s\+$//e" | doautocmd FocusLost %
+0

谢谢...我自己可能已经想到了! ;-)我使用了“多个事件加入”方法。 – GaretJax 2011-12-20 13:41:48

+0

你有什么想法,为什么它不能直接与我的原始设置? – GaretJax 2011-12-20 13:42:20

+0

@GaretJax:对不起,我无法帮助解决这个问题。似乎自动命令不能链接,但不知道原因。 – Birei 2011-12-20 17:48:05