插入Vim函数参数和shell命令

Mat*_* H. 3 vim shell

我写了一个可以重新加载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
Run Code Online (Sandbox Code Playgroud)

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

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

我的语法有什么问题?

seh*_*ehe 5

您可以使用 :exec

exec '!osascript ~/MySrc/applescript/reloadSafari.APPLESCRIPT ' . a:delay
Run Code Online (Sandbox Code Playgroud)