我已经设置了我的 vim 编辑器(我使用 MacVim)以在失去焦点时自动保存文件:
autocmd FocusLost * silent! wall
我还使用此自动命令自动从 python 文件中去除尾随空格:
autocmd BufWritePre *.py :%s/\s\+$//e
当我手动保存文件时(通过键入:w或按⌘s),此自动命令可以完美运行,但当我切换到另一个应用程序并自动写入缓冲区时,它不会执行(即空白不被剥离)。
如何修改这些自动命令以使它们一起工作?
您需要将 FocusLost 自动命令更改为:
autocmd FocusLost * nested silent! wall
详情请参阅:h autocmd-nested
。
我无法在图形 Vim 中对此进行测试,但您可以尝试一些选项:
autocmd BufWritePre,FocusLost *.py ...
autocmd BufWritePre *.py :execute "%s/\s\+$//e" | doautocmd FocusLost %