3

我有一个启动多个 gvim 窗口的脚本。我想以某种方式定位它们。wmctrl可以这样做,但是因为有多个实例,所以窗口名称是模棱两可的。我想:使用pids。

gvim /tmp/xxx &

X=$!

wmctrl -lp | grep $X
echo $X
wmctrl -lp | grep GVIM
echo sleeping
sleep 3
wmctrl -lp | grep GVIM

输出是:

5211
sleeping
0x03400062  0 5218   localhost xxx (/tmp) - GVIM

似乎 gvim 以 pid 5211 开始,但为实际窗口启动了一个新进程。此外,该过程还不存在。

如何明确获取我刚启动的 gvim 实例的 wmctrl 窗口句柄?还是我应该使用其他东西?

--echo-wid选项看起来不错,但我使用的是 KDE。

4

1 回答 1

0

我刚刚遇到了同样的问题,并通过运行解决了它

gvim -f &
pid=$!

正如上面评论中建议的那样。

gvim sais 的联机帮助页:

-f          Foreground.   For  the  GUI  version, Vim will not fork and detach from the
            shell it was started in.  On the Amiga, Vim is not restarted to open a  new
            window.   This option should be used when Vim is executed by a program that
            will wait for the edit session to finish (e.g. mail).   On  the  Amiga  the
            ":sh" and ":!" commands will not work.

这解释了它为什么起作用。

我不知道你是否尝试过这个,或者答案是否更重要,但我讨厌留下一个没有答案的好问题:)

归功于 nm 指出了-f开关

于 2013-08-14T18:05:51.407 回答