autocmd事件执行命令:wq - vimscript?

时间:2016-08-23 12:15:18

标签: vim vi

当我使用system("cp /home/currently_opened_file.txt /somewhere/else")退出vim时,我想执行:wq。那是否有autocmd事件?或者其他任何方式吗?

2 个答案:

答案 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