当我使用system("cp /home/currently_opened_file.txt /somewhere/else")
退出vim时,我想执行:wq
。那是否有autocmd事件?或者其他任何方式吗?
答案 0 :(得分:3)
<强>更新强>:
OP在评论中指出,这种组合完全符合要求(仅在:wq
上执行命令)。
:autocmd BufWritePost * :autocmd VimLeave * :!cp % /somewhere/else
原始回答:
您可以挂钩BufWritePost
事件。这将在每次写入时运行命令,而不仅仅是在您使用:wq
离开文件时。
:autocmd BufWritePost * :!cp % /somewhere/else
我想您可以尝试挂钩BufDelete
事件(在从缓冲区列表中删除缓冲区之前),但这似乎有问题,因为缓冲区用于超过文件编辑。它们还用于快速列表,帮助查看器等等。
退出时会发生一些事件,这可能是一种选择。
QuitPre when using :quit, before deciding whether to quit
VimLeavePre before exiting Vim, before writing the viminfo file
VimLeave before exiting Vim, after writing the viminfo file
您可以使用:help autocmd-events
查看完整列表。
另请注意,您可以限制与活动匹配的内容。例如,如果您只希望HTML文件和CSS文件发生这种情况,您可以使用:
:autocmd QuitPre *.html,*.css :!cp % /somewhere/else
我怀疑你需要进行实验,看看哪些对你有用。
答案 1 :(得分:0)
看起来您需要自动将文件的写入级联到另一个位置。我的DuplicateWrite plugin提供了设置此类的舒适命令。 (插件页面包含指向其他插件的链接。)
:DuplicateWrite /somewhere/else