gvim pid in $!与wmctrl列表不同

时间:2013-05-07 08:16:49

标签: linux vim desktop

我有一个启动多个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。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过运行

解决了这个问题
gvim -f &
pid=$!

就像n.m.在上面的评论中提出。

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.

解释了它的工作原理。

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

信用到了上午。指出-f开关