2

我已经设置了我的 vim 编辑器(我使用 MacVim)以在失去焦点时自动保存文件:

autocmd FocusLost * silent! wall

我还使用此自动命令自动从 python 文件中去除尾随空格:

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

当我手动保存文件时(通过键入:w或按⌘s),此自动命令可以完美运行,但当我切换到另一个应用程序并自动写入缓冲区时,它不会执行(即空白不被剥离)。

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

4

2 回答 2

5

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

autocmd FocusLost * nested silent! wall

详情请参阅:h autocmd-nested

于 2013-03-06T16:27:51.390 回答
1

我无法在图形 Vim 中对此进行测试,但您可以尝试一些选项:

  • 在同一个自动命令中加入一些事件autocmd BufWritePre,FocusLost *.py ...
  • 从事件执行自动命令,例如:
    autocmd BufWritePre *.py :execute "%s/\s\+$//e" | doautocmd FocusLost %
于 2011-12-20T11:53:27.350 回答