【问题标题】:Is it possible to use arrow keys alone to expand tree node in package explorer in Eclipse on Linux?是否可以单独使用箭头键在 Linux 上的 Eclipse 中的包资源管理器中展开树节点?
【发布时间】:2011-06-12 10:44:14
【问题描述】:

在使用 Eclipse 时,我经常使用键盘箭头浏览包资源管理器树。

在 Windows 中,我可以通过按 键来展开折叠的节点。在 Linux 中,我需要按 Shift + 。有没有办法重新配置它以便不需要 Shift

【问题讨论】:

  • 这真的不是 Eclipse 问题。 Eclipse 使用本机操作系统小部件,如您所描述的树控件和键绑定行为来自窗口。我正在为您的问题添加 windows 标签。
  • @Konstantin 公平点,但是 linux 甚至 ubuntu(具体来说)不是一个更好的标签,因为那是我遇到问题的地方,而不是在 windows 中。
  • 好点。为 linux 交换 windows 标签。
  • 如果能更接近地模仿 Windows 的行为就好了:已经展开的节点上的Right 应该跳转到第一个子节点,已经折叠的节点上的Left 应该跳转到它的父节点。

标签: linux eclipse ubuntu ide keyboard-shortcuts


【解决方案1】:

把它放到你的~/.gtkrc-2.0 中,你就可以开始了。左行和右行进行了请求的更改,其余的只是我个人添加的,以使树视图的行为更像 vim。希望对您有所帮助!

binding "gtk-binding-tree-view" {
    bind "j"        { "move-cursor" (display-lines, 1) }
    bind "k"        { "move-cursor" (display-lines, -1) }
    bind "h"        { "expand-collapse-cursor-row" (1,0,0) }
    bind "l"        { "expand-collapse-cursor-row" (1,1,0) }
    bind "o"        { "move-cursor" (pages, 1) }
    bind "u"        { "move-cursor" (pages, -1) }
    bind "g"        { "move-cursor" (buffer-ends, -1) }
    bind "y"        { "move-cursor" (buffer-ends, 1) }
    bind "p"        { "select-cursor-parent" () }
    bind "Left"     { "expand-collapse-cursor-row" (0,0,0) }
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) }
    bind "semicolon" { "expand-collapse-cursor-row" (0,1,1) }
    bind "slash"    { "start-interactive-search" () }
}
class "GtkTreeView" binding "gtk-binding-tree-view"

然后重新启动 Eclipse 以应用新的绑定

【讨论】:

  • 好想拥抱你。这困扰了我好几个月!
  • 当当前选择在一个文件夹上时,它确实很好用。但是左箭头的行为仍然与 Windows 上的不完全相同。在已经折叠的文件夹上,它会将您带到父文件夹。此外,当当前选择是一个文件时,它会将您带到父文件夹。但是在 Mint 上,它仍然停留在当前选择中。但这仍然是一个巨大的改进,谢谢!
  • 这在 Eclipse Luna 之前运行良好,有什么想法为什么停止工作?
  • Luna:使用“大数据书呆子”的答案(见下文)
  • 添加 bind "<Alt>Up" { "select-cursor-parent" () } 将使您能够使用 Alt-Up 跳转到父节点。然后您可以轻松地折叠树,即使您当前的子节点选择在列表中很远。
【解决方案2】:

如果有人想知道如何使用 GTK3 执行此操作 - 只需打开 ~/.config/gtk-3.0/gtk.css 并添加以下内容:

@binding-set MyTreeViewBinding
{
    bind "Left"     { "expand-collapse-cursor-row" (0,0,0) };
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

GtkTreeView
{
  gtk-key-bindings: MyTreeViewBinding;
}

【讨论】:

  • 这与 Eclipse 最近迁移到 GTK 3 非常相关 - 虽然所有 4.x 版本都可以通过设置环境变量来使用 GTK 3,但 Mars 已默认迁移到 GTK 3。
  • 看看stackoverflow.com/a/32529393/306047,恕我直言,将“左”键绑定到“select-cursor-parent”也很有用。
  • 在 Ubuntu 16.04 上测试并且运行顺利。谢谢:)
  • 刚刚在 ~/.config/gtk-3.0/ 下创建了这个 gtk.css,它在 CentOS Linux 版本 7.3.1611 上就像一个魅力现在可以在 Eclipse 上使用键盘箭头导航!
  • 这对我来说工作了一段时间,但现在在带有 GTK+ 3.22 的 Ubuntu 17.04 上它停止工作了。任何其他提示将不胜感激。
【解决方案3】:

我的 GTK3 版本表现得更自然。 将以下内容添加到 ~/.config/gtk-3.0/gtk.css:

@binding-set MyTreeViewBinding
{
    bind "Left"     { "select-cursor-parent" ()
                      "expand-collapse-cursor-row" (0,0,0) };
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

GtkTreeView
{
    gtk-key-bindings: MyTreeViewBinding;
}

【讨论】:

  • 建议,如果您明确描述其行为方式有何不同,答案会更有帮助。
  • 优秀。我将 css 调整为使用 shift+left 代替。 Check it out.
  • 将接受的答案更改为这个答案,因为我猜现在大多数人都在使用 GTK3
【解决方案4】:

安德鲁提供的答案是正确的。请注意,在较新版本的 Ubuntu 中没有 ~/.gtkrc-2.0 文件,因此您可以创建它,也可以编辑当前主题的 gtkrc,该主题存储在

/usr/share/themes/your_theme/gtk-2.0/gtkrc

【讨论】:

  • 自从我最近切换到 Linux Mint (Cinnamon) 后,我试图弄清楚如何恢复这个有用的技巧,因为 your_theme 文件夹不包含任何 gtk* 文件。答案是这个文件:/usr/share/themes/Default/gtk-2.0-key/gtkrc
【解决方案5】:

我尝试使用the answer from @Andrew Lazarev。然而,由于 GTK3.20 (https://bugzilla.gnome.org/show_bug.cgi?id=766166) 上的非向后兼容更改,必须稍微调整绑定:

@binding-set MyTreeViewBinding
{
   bind "Left"     { "select-cursor-parent" ()
                  "expand-collapse-cursor-row" (0,0,0) };
   bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

treeview
{
   -gtk-key-bindings: MyTreeViewBinding;
}

注意- 之前的gtk-key-bindingsGtkTreeView 重命名为treeview

【讨论】:

  • 有没有办法添加流量控制或条件?如您所见,当您点击左箭头时,它会导航到父级并应用折叠。用户通常想要的是:如果当前元素是可折叠且已展开:折叠,否则如果当前元素不可折叠或已折叠:导航到父元素。你会怎么做?
  • 是的。谢谢你。这终于在 Eclipse 2021-09 上对我有用,但映射略有不同:{ bind "<Alt>Up" { "select-cursor-parent" ()}; bind "Left" { "expand-collapse-cursor-row" (0,0,0) }; bind "Right" { "expand-collapse-cursor-row" (0,1,0) }; }
【解决方案6】:

Tree 小部件的导航由底层小部件工具包 - GTK 控制。 SWT/Eclipse 无法控制它。 如果需要任何此类配置来更改快捷方式,则必须从 GTK 端自己进行。

【讨论】:

  • 谢谢 有道理。然而,在 Nautilus 中,我可以使用箭头键展开节点而无需换档。我查看了 System -> Preferences -> Keyboard Shortcuts 但没有看到任何关于此快捷方式的信息。
  • 原因似乎是在 GTK 中 TreeView 可以有多个列,并且在列之间左/右移动,因此它们不能用于展开/折叠节点:mail.gnome.org/archives/gtk-devel-list/2004-March/msg00223.html(是的,那是一封非常古老的邮件)
【解决方案7】:

基于YMomb 的答案,我最终得到了下面的配置(~/.config/gtk-3.0/gtk.css)。适用于 Eclipse 2021-09。

@binding-set MyTreeViewBinding
{
    bind "<Ctrl>Left" { "select-cursor-parent" ()
                   "expand-collapse-cursor-row" (0,0,0) };
    bind "Left"     { "expand-collapse-cursor-row" (0,0,0) };
    bind "Right"    { "expand-collapse-cursor-row" (0,1,0) };
}

treeview
{
  -gtk-key-bindings: MyTreeViewBinding;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多