2013-05-07 39 views
2

我有一個腳本啓動多個gvim窗口。我想以某種方式定位它們。 wmctrl可以做到這一點,但由於有多個實例,窗口名稱是不明確的。我想:使用pid。

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。

+2

您需要以前景模式('-f')啓動gvim。再看看'--echo-wid'選項。 – 2013-05-07 09:41:53

+0

第一種情況是'GVIM',第二種是'GVIM1'等等。 – romainl 2013-05-07 19:59:54

+0

可能有實例已在運行。我不想依賴這樣的字符串,它總能起作用的證據在哪裏? – spraff 2013-05-08 01:10:29

回答

0

我只是碰到了同樣的問題,並通過運行

gvim -f & 
pid=$! 

就像N.M.解決它在上面的評論中提出。

gvim的最高審計機關的手冊頁:

-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. 

這可以解釋爲什麼它的工作原理。

我不知道,如果你想這一點,或者如果答案甚至事宜了,但我不喜歡留下一個很好的問題沒有答案:)

歸功於N.M.指出-f開關

+0

是的,謝謝@n.m。對不起,我之前忽略了你的評論: - / – spraff 2013-08-18 02:02:00