Vim:保存在FocusLost上并执行自动命令

时间:2011-12-20 11:00:06

标签: vim autocmd

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

autocmd FocusLost * silent! wall

我还使用这个自动命令自动从python文件中删除尾随空格:

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

当我手动保存文件时(通过键入:w 或按⌘s),此自动命令可以正常工作但是它没有被执行(即空格是当我切换到另一个应用程序并自动写入缓冲区时,没有剥离。

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

2 个答案:

答案 0 :(得分:3)

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

autocmd FocusLost * nested silent! wall

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

答案 1 :(得分:1)

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

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