如何在Vim中保存文件后自动执行shell命令?

Run*_*tle 57 vim autocmd

这是因为我想在每个文件保存后自动运行测试.

我已经看过autocmdBufWritePost,但不能使它工作.

小智 72

run_tests.sh在保存任何文件后运行,当前文件名为唯一参数:

:autocmd BufWritePost * !run_tests.sh <afile>
Run Code Online (Sandbox Code Playgroud)

使用以下命令查看自动命令:

:autocmd BufWritePost *
Run Code Online (Sandbox Code Playgroud)

并删除上一个中的所有自动命令:

:autocmd! BufWritePost *
Run Code Online (Sandbox Code Playgroud)

  • 在保存之前它是 `BufWritePre` (5认同)
  • 有没有办法解决这样的问题?:如果当前目录或上面的目录中存在名为 tests.html 的文件,则运行命令 testprog tests.html 或 cd .. testprog tests.html ? (3认同)
  • @Running Turle:我会为此创建一个函数,然后在autocmd中使用它.使用`filereadable()`来测试是否有文件,然后相应地采取行动. (3认同)
  • @botenvouwer 尝试 `:autocmd BufWritePost *silent!run_tests.sh &lt;afile&gt;`。输出仍会写入控制台,但 vim 不会等待您确认。向您的特定命令发送“quiet”/“silent”选项,或者在需要时添加 `&gt;/dev/null` 以黑洞其输出。 (3认同)