Ist es möglich, nur die Pfeiltasten zu verwenden, um den Baumknoten im Paket-Explorer in Eclipse unter Linux zu erweitern?

69

Wenn ich Eclipse benutze, durchsuche ich den Paket-Explorer-Baum häufig mit den Tastaturpfeilen.

In Windows kann ich einen reduzierten Knoten durch Drücken der Taste erweitern. Unter Linux muss ich Shift+ drücken . Gibt es eine Möglichkeit, dies so zu konfigurieren, dass Shiftes nicht erforderlich ist?

Alb
quelle
Dies ist wirklich keine Eclipse-Frage. Eclipse verwendet native Betriebssystem-Widgets wie Baumsteuerelemente und das von Ihnen beschriebene Schlüsselbindungsverhalten aus Windows. Ich füge Ihrer Frage ein Windows-Tag hinzu.
Konstantin Komissarchik
1
@Konstantin fair point, aber wäre Linux oder sogar Ubuntu (um genau zu sein) kein besseres Tag, da ich dort das Problem habe, nicht in Windows.
Alb
guter Punkt. Windows-Tag gegen Linux tauschen.
Konstantin Komissarchik
12
Es wäre schön, das Windows-Verhalten noch genauer nachzuahmen: RightAuf einem bereits erweiterten Knoten sollte zum ersten untergeordneten Knoten gesprungen werden, Leftauf einem bereits reduzierten Knoten sollte zum übergeordneten Knoten gesprungen werden.
Adrian H.

Antworten:

18

Meine Version für GTK3, die sich natürlicher verhält. Fügen Sie ~ / .config / gtk-3.0 / gtk.css Folgendes hinzu:

@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;
}
Andrew Lazarev
quelle
Vorschlag, die Antwort wäre hilfreicher, wenn Sie explizit beschreiben würden, wie sich dies anders verhält.
Studgeek
Ausgezeichnet. Ich habe das CSS so angepasst, dass stattdessen Shift + Left verwendet wird. Schau es dir an .
mppfiles
Die akzeptierte Antwort auf diese wurde geändert, da ich denke, dass die meisten inzwischen GTK3 verwenden
Alb
112

Setzen Sie dies in Ihre ~/.gtkrc-2.0und Sie sollten gut zu gehen sein. Die linken und rechten Linien bewirken die gewünschte Änderung, der Rest sind nur meine persönlichen Ergänzungen, damit die Baumansicht vim-ähnlicher wirkt. Hoffentlich hilft das!

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"

Starten Sie dann Ihre Eclipse neu, um neue Bindungen anzuwenden

Andrew
quelle
5
Ich möchte dich so fest umarmen. Das nervt mich seit Monaten!
Oschrenk
3
Es funktioniert in der Tat hervorragend, wenn sich die aktuelle Auswahl in einem Ordner befindet. Das Verhalten des linken Pfeils ist jedoch immer noch nicht genau das gleiche wie unter Windows. In einem bereits reduzierten Ordner werden Sie zum übergeordneten Ordner weitergeleitet. Wenn es sich bei der aktuellen Auswahl um eine Datei handelt, werden Sie zum übergeordneten Ordner weitergeleitet. Bei Mint bleibt es jedoch weiterhin in der aktuellen Auswahl. Aber das ist immer noch eine enorme Verbesserung, danke!
BalusC
2
Dies funktionierte großartig, bis Eclipse Luna, irgendwelche Ideen, warum aufgehört hat zu arbeiten?
Jonathan Naguin
1
Luna: Verwenden Sie die Antwort von "Big Data Nerd" (siehe unten)
Philipp
1
Durch Hinzufügen bind "<Alt>Up" { "select-cursor-parent" () }können Sie mit Alt-Up zum übergeordneten Knoten springen. Dann können Sie den Baum leicht reduzieren, selbst wenn Ihre aktuelle Auswahl an untergeordneten Knoten weit unten in der Liste steht.
Mads Nielsen
31

Wenn sich jemand fragt, wie das mit GTK3 geht, öffnen Sie einfach ~/.config/gtk-3.0/gtk.cssFolgendes und fügen Sie Folgendes hinzu:

@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;
}
Big Data Nerd
quelle
1
Dies ist sehr wichtig, da Eclipse kürzlich auf GTK 3 umgestellt wurde. Während alle 4.x-Versionen GTK 3 durch Festlegen von Umgebungsvariablen verwenden können, ist Mars standardmäßig auf GTK 3 umgestiegen.
Guss
1
Werfen Sie einen Blick auf stackoverflow.com/a/32529393/306047 , IMHO ist es nützlich, die "Links" -Taste auch an "Select-Cursor-Parent" zu binden.
Snorbi
1
Getestet auf Ubuntu 16.04 und funktionierte reibungslos. Danke :)
Ad Infinitum
1
Habe gerade diese gtk.css unter ~ / .config / gtk-3.0 / erstellt und sie funktioniert wie ein Zauber unter CentOS Linux Release 7.3.1611. Jetzt kann ich mit Tastaturpfeilen auf Eclipse navigieren !!
Shoaib Khan
1
Das hat für mich eine Weile gut funktioniert, aber jetzt unter Ubuntu 17.04 mit GTK + 3.22 hat es aufgehört zu funktionieren. Alle zusätzlichen Hinweise werden geschätzt.
Guss
12

Die Antwort von Andrew ist richtig. Bitte beachten Sie, dass in neueren Versionen von Ubuntu keine ~ / .gtkrc-2.0-Datei vorhanden ist. Sie können diese also entweder erstellen oder das gtkrc Ihres aktuellen Themas bearbeiten, das in gespeichert ist

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

Sebastiano
quelle
4
Seit ich kürzlich zu Linux Mint (Cinnamon) gewechselt bin, habe ich versucht herauszufinden, wie dieser nützliche Trick wiederhergestellt werden kann, da der Ordner your_theme keine gtk * -Datei enthält. Die Antwort ist diese Datei: /usr/share/themes/Default/gtk-2.0-key/gtkrc
Sebastiano
4

Ich habe versucht, die Antwort von @Andrew Lazarev zu verwenden . Aufgrund einer nicht abwärtskompatiblen Änderung in GTK3.20 ( https://bugzilla.gnome.org/show_bug.cgi?id=766166 ) müssen die Bindungen jedoch leicht angepasst werden:

@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;
}

Beachten Sie das -Vorher gtk-key-bindingsund das GtkTreeViewUmbenannte in treeview.

YMomb
quelle
Gibt es eine Möglichkeit, Flusskontrolle oder Bedingungen hinzuzufügen? Wie Sie sehen, navigiert der Pfeil nach links zum übergeordneten Pfeil und wendet das Reduzieren an. Was ein Benutzer normalerweise möchte, ist: Wenn das aktuelle Element reduzierbar und erweitert ist: Reduzieren, andernfalls, wenn das aktuelle Element nicht reduzierbar oder reduziert ist: Navigieren Sie zum übergeordneten Element. Wie würden Sie das machen?
Joker
2

Die Navigation des Baum-Widgets wird durch das unterlegte Widget-Toolkit GTK gesteuert. SWT / Eclipse hat keine Kontrolle darüber. Wenn eine solche Konfiguration zum Ändern der Verknüpfung erforderlich ist, muss sie von der GTK-Seite selbst vorgenommen werden.

PinnamuR
quelle
Danke Das macht Sinn. In Nautilus kann ich jedoch Knoten mit den Pfeiltasten ohne Verschiebung erweitern. Ich habe unter System -> Einstellungen -> Tastaturkürzel nachgesehen, sehe dort jedoch nichts über diese Verknüpfung.
Alb
1
Der Grund scheint zu sein, dass eine Baumansicht in GTK mehrere Spalten haben kann und sich zwischen Spalten nach links / rechts bewegen kann, sodass sie nicht zum Erweitern / Reduzieren des Knotens verwendet werden können: mail.gnome.org/archives/gtk-devel-list/2004- March / msg00223.html (und ja, das ist eine sehr alte Mail)
Thomas Broyer