我正在寻找一种方法来映射:w命令,以便在使用它时将当前目录同步到rsync并保存所涉及的文件。理想情况下,rsync命令生成的响应应在vim中返回,但不是在当前文件中,而是作为工具提示或其他形式展示。
我已经在TextMate中实现了这一点,并且现在希望开始使用Vim。我尝试过像
我已经在TextMate中实现了这一点,并且现在希望开始使用Vim。我尝试过像
:map w:w |!rsync
这样的东西,但似乎不起作用。您可以使用 BufWritePost 钩子函数。我不记得具体的语法是什么,但 ":he BufWritePost
" 和 ":he autocommand
" 可以帮助您。
您可以像这样设置一个基本的钩子函数(模式匹配文件,所以您可以使用 *.your_extension):
:au BufWritePost * !rsync
此外,应该有某种方法可以使其成为缓冲区局部的。
如果你想保留本地副本,那么viraptor建议的BufWritePost autocmd是最好的选择,但是假设你已经安装了netrw插件(默认Vim运行时文件的一部分),你也可以这样启动vim:
vim rsync://myrsync_server.com/path
只需像编辑本地文件一样编辑文件:保存后会更新远程服务器。
:help rsync
au BufWritePost,FileWritePost <buffer> silent !rsync -a /path/to/somedir/ user@host:/remote/dir/ --exclude=*.sw?
&
以将rsync发送到后台。可能会有所不同。