【问题标题】:Programmatically determine when MacVim finishes editing a file以编程方式确定 MacVim 何时完成文件编辑
【发布时间】:2014-01-16 07:38:39
【问题描述】:

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

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

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

如果使用纯 shell 脚本无法做到这一点,我愿意接受任何其他方面的想法。 (AppleScript 等)

【问题讨论】:

  • 想知道mvim 是否有-f 开关。如果我需要使用 gvim 完成相同的任务,我将在您的脚本中将 gvim $file 替换为 gvim -f $file。但是不知道macvim是否支持这个功能。
  • 确实如此。这是太棒了。我将把它添加为一个额外的答案,因为它更简单。谢谢!

标签: macos bash shell vim applescript


【解决方案1】:

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

$ mvim -c 'au VimLeave * !cat % | pbcopy' /tmp/bar.txt

使用pbcopy < %会短一点。

小心你的要求。您可能会更改缓冲区,并且 % 在 vi​​m 退出时引用该文件。也许这样会更安全:

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

【讨论】:

  • 完美,这正是我想要的。我不知道你可以用 VimScript 做到这一点! ^_^
【解决方案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

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多