注:解决方案为Ubuntu(14.04)所提供的作品+崇高文字2/3
我已经结束了一个非常棘手的伎俩,但我对此非常高兴。在两种情况下(如果设置中启用)IntelliJ IDEA的更新资源:
- 当IDE窗口失去焦点
- 当运行部分按下按钮或使用快捷键为它按Ctrl + F10
所以我已经开始与第一种情况下寻找适合我的操作系统(Ubuntu的14.04)的工具,它可以集中的IntelliJ IDEA窗口不重点,使其更新资源。我偶然发现了xdotool,它允许通过它的标题获得窗口的ID,并通过它的ID来关注窗口。我创建了一个简单的.SH脚本:
current_id="$(xdotool getactivewindow)" # get id of current window
idea_id="$(xdotool search --name 'IntelliJ IDEA')"
xdotool windowfocus "${idea_id}" # switch to idea
xdotool windowfocus "${current_id}" # switch to current window
windowfocus
只是聚焦窗口,这意味着如果窗口的背景或另一个工作区,你不会切换到它,你”我会留在你身边,但窗口只是获得焦点。但它没有与IntelliJ Idea,资源没有更新,似乎它要全力关注。
所以我试图用windowactivate
代替windowfocus
--它在切换到窗口时(即使它在另一个工作区),因此它变得聚焦,活动和可见。但与切换回原始过程相结合,它产生了像两个窗口之间的可见切换(例如,当您在窗口之间使用Alt + Tab时),这非常明显,但它确实是它的工作 - 资源得到更新。
还有第二个选项 - 使用快捷方式。xdotool有一个选项可以发送击键到窗口通过它的id以及:
xdotool key --window "{$idea_id}" --clearmodifiers CTRL+F10
,但它没有工作,即使在结合聚焦窗口,也留下了压的后效应Ctrl键。在xdotool文档中有一段Sendevent Notes文档,告诉xdotool生成的按键事件会设置一个特殊标志,因此接收该事件的应用程序可能会分析它是否存在标志并忽略该事件,可能是IntelliJ Idea的情况。
经过一番研究,我发现另一个关键发送工具 - xvkdb - 和它的工作就像一个魅力,因为我猜它采用发送/生成的关键事件的另一种方式:
xvkbd -window "*IntelliJ IDEA*" -text "\C\[F10]"
运行时单独这个命令将焦点集中在一个Intellij Idea窗口中,我用xdotool将焦点带回当前进程。下面是该脚本的最终版本:
current_id="$(xdotool getactivewindow)"
xvkbd -window "*IntelliJ IDEA*" -text "\C\[F10]"
xdotool windowfocus "${current_id}"
将其与崇高的文本3,这是我作为代码编辑器中使用整合,我已经安装了一个插件SublimeOnSaveBuild,它可以运行一个自定义生成(终端命令或当一个人将文件保存在崇高文本中时。下面是一个简单的构建设置:
{
"shell_cmd": "/path/to/script/idea_update_resources.sh"
}
所以现在我有一个IntelliJ IDEA的另一个工作区中打开,当我保存在崇高的文本文件,资源得到通过发送快捷方式的IntelliJ IDEA更新窗口。我可以说,使用这种实现来聚焦窗口的时间并不明显。因此,它是远远来得更快,然后咕噜或咕嘟咕嘟任务,我要说的瞬间,因为IntelliJ IDEA的确实本身的更新,而且它是安全的,如果的IntelliJ IDEA做一些,以防使用更新资源时的额外操作。 感谢@BenJamin的问题,希望它能帮助别人。
更新:
使用此设置了一段时间就无法按预期工作后:如果IntelliJ IDEA的是另一个工作区,或者它的界面完全覆盖另一个窗口,与xvkdb解决方案将不幸失败,不会执行资源更新。我转回到使用windowactivate
。
独立运行服务器。 – Stefan 2014-10-04 18:21:56
这将如何帮助? – BenJamin 2014-11-03 20:06:00
@BenJamin,你有没有找到它的解决方案? – 2015-09-17 11:36:07