插入Vim函数参数和shell命令

时间:2012-04-05 21:55:19

标签: shell vim

我写了一个可以重新加载Safari的.applescript文件。我试图将它的执行挂钩到vim的BufWritePost事件中,(因此Safari会自动重新加载文件保存)。

我把它放在我的.vimrc中:

function! SaveAndReloadSafari(delay) 
   " THIS IS WHERE MY PROBLEM IS>>>>>>>>>>>>>>> 
   !osascript ~/MySrc/applescript/reloadSafari.APPLESCRIPT a:delay
endfunction

if !exists("b:my_autocommands_loaded")
  let b:matts_autocommands_loaded = 1 

  au BufWritePost *.html,*\.css,*.js call SaveAndReloadSafari(0)
  au BufWritePost *.scss call SaveAndReloadSafari(2)
endif

如您所见,我想在保存.scss文件后添加2秒延迟(以允许我的SCSS文件自动编译为CSS)

我已经确认缺少的唯一一个难题是我使用shell命令插入a:delay的语法。 (执行没有delay参数的命令可以正常工作。

我的语法有什么问题?

1 个答案:

答案 0 :(得分:5)

您可以使用:exec

exec '!osascript ~/MySrc/applescript/reloadSafari.APPLESCRIPT ' . a:delay