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