在文件保存时终止进程
Kill a process on file save
我试图告诉 neovim 在关闭其配置文件 (sxhkdrc) 后终止 sxhkd 和 运行 sxhkd。这就是我 init.vim
中的内容
autocmd BufWritePost *sxhkdrc pkill sxhkd; setsid sxhkd
我收到以下错误
"sxhkdrc" 9L, 136C written
Error detected while processing BufWritePost Autocommands for "*sxhkdrc":
E492: Not an editor command: pkill sxhkd; setsid sxhkd
Press ENTER or type command to continue
我可以在终端中 运行 pkill sxhkd; setsid sxhkd
而不会出错,但由于某种原因,我的 init.vim 文件不知道如何执行此命令。
当我保存它的配置文件时,如何杀死一个进程,例如 sxhkd?
从 Vim 内部执行外部命令时,我们使用 运行 非交互式 shell 中命令的 !
前缀。您可以通过执行 :!ls
进行快速演示来对此进行测试。
在你的例子中,Vim 是在通知你它不理解你给它的命令。这很公平:它不是编辑器命令,而是设计用于从终端执行的命令。你可能想要:
autocmd BufWritePost *sxhkdrc !pkill sxhkd; setsid sxhkd
编辑:Alex 在评论中指出 sxhkd 是一个守护进程,因此使用 &
作为背景会更有意义:
autocmd BufWritePost *sxhkdrc !pkill sxhkd && setsid sxhkd &
我试图告诉 neovim 在关闭其配置文件 (sxhkdrc) 后终止 sxhkd 和 运行 sxhkd。这就是我 init.vim
autocmd BufWritePost *sxhkdrc pkill sxhkd; setsid sxhkd
我收到以下错误
"sxhkdrc" 9L, 136C written
Error detected while processing BufWritePost Autocommands for "*sxhkdrc":
E492: Not an editor command: pkill sxhkd; setsid sxhkd
Press ENTER or type command to continue
我可以在终端中 运行 pkill sxhkd; setsid sxhkd
而不会出错,但由于某种原因,我的 init.vim 文件不知道如何执行此命令。
当我保存它的配置文件时,如何杀死一个进程,例如 sxhkd?
从 Vim 内部执行外部命令时,我们使用 运行 非交互式 shell 中命令的 !
前缀。您可以通过执行 :!ls
进行快速演示来对此进行测试。
在你的例子中,Vim 是在通知你它不理解你给它的命令。这很公平:它不是编辑器命令,而是设计用于从终端执行的命令。你可能想要:
autocmd BufWritePost *sxhkdrc !pkill sxhkd; setsid sxhkd
编辑:Alex 在评论中指出 sxhkd 是一个守护进程,因此使用 &
作为背景会更有意义:
autocmd BufWritePost *sxhkdrc !pkill sxhkd && setsid sxhkd &