以编程方式确定MacVim何时完成编辑文件

时间:2013-12-29 04:48:48

标签: macos bash shell vim applescript

我想编写一个用MacVim打开指定文件的脚本,然后等待文件关闭再继续。我最初的想法是:

#!/bin/sh
file="some-file.txt"
mvim $file
cat $file | pbcopy

这将使用MacVim打开指定的文件并立即执行下一个命令。我一直在想lsof令人难以置信的hackish,但我希望有更好的方法。

如果使用普通的shell脚本无法做到这一点,我会接受任何其他想法。 (AppleScript等)

2 个答案:

答案 0 :(得分:4)

设置自动命令以在vim(或mvim)退出时执行命令。我用

进行了测试
$ mvim -c 'au VimLeave * !cat % | pbcopy' /tmp/bar.txt

使用pbcopy < %时要短一些。

小心你所要求的。您可以更改缓冲区,指的是vim退出时的文件。也许这会更安全:

$ mvim -c 'execute "au VimLeave * !pbcopy < " . expand("%")' /tmp/bar.txt

答案 1 :(得分:2)

MacVim可以选择不在启动时分叉:

-f  or  --nofork     Foreground: Don't fork when starting GUI

通过mvim --help

对于上面的脚本,以下工作:

#!/bin/sh
file="some-file.txt"
mvim --nofork $file
cat $file | pbcopy

GVim也有相同的选择:

--nofork     Foreground. For the GUI version, Vim will not fork and
             detach from the shell it was started in.

通过man gvim