从Applescript打开MacVim
我试图创建一个简单的Applescript,每次单击Finder工具栏上的按钮时都会激活它。此脚本打开MacVim,工作目录设置为查找器所在的目录。这是我得到的最接近的从Applescript打开MacVim,applescript,macvim,Applescript,Macvim,我试图创建一个简单的Applescript,每次单击Finder工具栏上的按钮时都会激活它。此脚本打开MacVim,工作目录设置为查找器所在的目录。这是我得到的最接近的 on run tell application "Finder" to get folder of the front window as string set workingDir to POSIX path of result do shell script "cd \"" & working
on run
tell application "Finder" to get folder of the front window as string
set workingDir to POSIX path of result
do shell script "cd \"" & workingDir & "\"; /usr/local/bin/mvim"
end run
这非常有效(mvim自动将MacVim的工作目录设置为cwd)。然而,由于某些原因,这只起作用一次。它会在沙滩上玩一会儿,如果我再按一下按钮,什么也不会发生。我本来希望得到另一个空白的MacVim窗口——就像我在终端中再次键入mvim一样
如何使用脚本执行此操作?下一个调用beachball,因为第一个尚未完成 为了能够对applescript进程进行后台处理,它必须没有悬空输出,因此,请将
do shell脚本
行更改为:
do shell script "cd \"" & workingDir & "\"; /usr/local/bin/mvim > /dev/null 2>&1"
它应该可以做到这一点。这将在MacVim中打开选定的文件/文件夹。
仅当在Finder中选择单个项目时有效。使用Finder中选择的多个项目 如前所述,我使用“open-a”来克服mvim脚本在选项卡中打开多个文件的限制
只是简单的澄清一下。如果您只想打开从to Finder到MacVim的目录,您可以右键单击该文件夹,然后单击此处的New MacVim buffer。只需点击两下。啊,这是值得知道的。这适用于当前文件夹下的文件夹,但对于当前文件夹本身,这适用于哪些链接/引用并不明显(它适用于底部的面包屑痕迹,但不适用于我放置在左侧面板中的快捷方式,例如),它适用,但我不确定原因。据我所知,这会将SDTERR和STDIN重定向到bitbucket,但
mvim
脚本不会生成任何输出。最后,我还尝试使用&
将过程背景化,但这不起作用-原因是什么?好吧,即使mvim已经将自身背景化,并且不生成任何输出,但它获取2个文件描述符的事实足以让Applescript猜不出它将永远不会生成任何输出。因此,您需要显式地释放文件描述符……我改进了答案,现在它可以一起打开多个文件。
on run
tell application "Finder" to set selectedFiles to selection
if selectedFiles is {} then return
set filePathPosix to ""
repeat with filePath in selectedFiles
set filePathPosix to filePathPosix & "'" & POSIX path of (filePath as alias) & "' "
end repeat
do shell script "open -a MacVim " & filePathPosix & " > /dev/null 2>&1"
end run