2

在尝试回答这个问题时,我正在尝试gvim --echo-wid我认为可以使用的xdotool.

也许这只是脑痛,但我有一段地狱般的时间将 bash 的输出输入到一个没有阻塞gvim --echo-wid的变量中。

X=`gvim --echo-wid`

不起作用,反引号捕获似乎阻止 gvim 分叉和分离。X仅在 gvim 终止后设置。

X=`gvim --echo-wid &`; echo "got: $X"

相同的故事。

mkfifo $F
(gvim --echo-wid > $F) &
X=`cat $F`

或者

mkfifo $F
(gvim --echo-wid & > $F) &
X=`cat $F`

相同的故事。

我想

  • gvim 在后台
  • 它在 bash 变量中的标准输出,同步

或任何其他方式我可以获得 gvim 的 wmctrl 或 xdotool 或等效的窗口 ID(不查询某些列表,我想直接转到此实例的窗口而不进行字符串黑客攻击)。

虽然在这一点上,我真的很好奇为什么捕获不起作用。是什么赋予了?

4

2 回答 2

0

如果输出到stderr,需要重定向

X=`gvim --echo-wid 2>&1`
于 2013-05-08T02:03:46.737 回答
0

当 gvim 启动时,它会为 gui 分叉一个新进程,这可以在后台运行,但在整个程序关闭之前 stdout 不会关闭。

如果将 gvim 导入 head,stdout 将关闭,反引号将停止阻塞。

X=`gvim --echo-wid | head -n 1`
echo "got $X"
于 2013-05-08T10:38:29.773 回答