Sublime 3 - Ustaw mapę klawiszy dla funkcji Goto Definition

143

Chcę utworzyć skrót w stylu Eclipse Ctrl+, MouseClickaby otworzyć funkcję / metodę. Sublime Text 3 ma już wywołaną tę funkcję, goto_definitionale jest z nią związana F12.

Ale nie jestem pewien, jak utworzyć to wiązanie. Szukałem tutaj dokumentacji, ale była zbyt skomplikowana. Czy możesz mi pomóc z tym prostym wiązaniem klawiszy?

Edycja: Po tym artykule kazano mi to zrobić: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["super", "shift"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

To nie wydaje się działać, ctrl+ shift+ clicknic nie wykonuje.

Kivylius
źródło
3
superto klawisz Windows dla Windows i Linux oraz klawisz polecenia dla OS X, a nie control. Spróbuj tego i zobacz, czy uzyskasz pożądane zachowanie.
skuroda

Odpowiedzi:

244

Dla każdego, kto chce ustawić definicję goto w stylu Eclipse, musisz utworzyć .sublime-mousemapplik w Userfolderze Sublime .

Windows - utwórz Default (Windows).sublime-mousemapw%appdata%\Sublime Text 3\Packages\User

Linux - twórz Default (Linux).sublime-mousemapw~/.config/sublime-text-3/Packages/User

Mac - twórz Default (OSX).sublime-mousemapw~/Library/Application Support/Sublime Text 3/Packages/User

Teraz otwórz ten plik i umieść w nim następującą konfigurację

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["ctrl"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

Możesz zmienić modifiersklucz, jak chcesz.


Ponieważ Ctrl- button1w systemie Windows i Linux jest używany do wielu wyborów, dodanie drugiego klawisza modyfikującego, takiego jak, Altmoże być dobrym pomysłem, jeśli chcesz używać obu funkcji:

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["ctrl", "alt"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

Alternatywnie, możesz użyć samego prawego przycisku myszy ( button2) Ctrli nie kolidować z żadnymi wbudowanymi funkcjami.

Boris Brdarić
źródło
4
Wydaje się, że to poprawna odpowiedź, ale zrobiłem wszystko, co powiedziałeś, i nadal nie działa, jestem ctrl+ clicki nic nie robi, Unable to parse binding
pojawia
czy sprawdziłeś nazwę pliku konfiguracyjnego? czy możesz gdzieś zamieścić zrzut ekranu błędu?
Boris Brdarić,
Czy ktoś wie, jak można to kliknąć prawym przyciskiem myszy? Udało mi się dodać do pliku Context.sublime-menu polecenie, ale nie mogłem wymyślić, jak przekazać argumenty dla aktualnie wybranego tekstu ... Lub wiersz ... Szukałem dobrze, próbując znaleźć dokumentację (i spróbowałem "args": "drag_select"), ale nie mogłem tego rozgryźć. Wolałbym kliknąć prawym przyciskiem myszy i przejść do definicji, chociaż to działa świetnie! Dzięki.
Tom
Czy mogę również przypisać do tego klawisz Enter, aby nie musieć go ręcznie wciskać za każdym razem, gdy kliknę ctrl +?
user3388884
@ BorisSamardžija, jak również sprawić, by powyższy skrypt szukał definicji funkcji w moim bieżącym pliku, zamiast przeskakiwać do innych plików zewnętrznych.
Alexander Solonik
90

Aby ustawić, przejdź do definicji do alt + d. Z menu Preferencje> Powiązania klawiszy - użytkownik. A następnie dodaj następujący kod JSON.

[
    { "keys": ["alt+d"], "command": "goto_definition" }
]
mbokil
źródło
1
Nie jestem pewien, dlaczego
padłem
9
Prawdopodobnie zostałeś odrzucony, ponieważ pierwotne pytanie brzmiało „Chcę utworzyć skrót w stylu Eclipse Ctrl + MouseClick, aby otworzyć funkcję / metodę”. Twoja odpowiedź okazała się przydatna, ponieważ nie interesuje mnie wersja ze skrótem myszy, więc zagłosowałem za. :)
Charles Roper
1
wydaje się lepszą opcją niż cmd + opt + down
uday
Można użyć button1zamiast d... więc mamy coś podobnego"alt" + "button"
IROEGBU
22

Jeśli chcesz zobaczyć, jak zrobić właściwą definicję, przejdź do Sublime Text-> Preferences-> Key Bindings - Default i wyszukaj polecenie, które chcesz przesłonić.

{ "keys": ["f12"], "command": "goto_definition" },
{ "keys": ["super+alt+down"], "command": "goto_definition" }

To są dwa, które pojawiają się w mojej domyślnej.

Na komputerze Mac skopiowałem drugą, aby zastąpić.

w Sublime Text -> Preferences -> Key Bindings - Użytkownik Dodałem to

/* Beginning of File */

[
    {
        "keys": ["super+shift+i"], "command": "goto_definition" 
    }
]

/* End of File */

Powoduje to powiązanie go z kombinacją Command + Shift + 1 na komputerze Mac.

philcollin_us
źródło
6

Na komputerze Mac musisz samodzielnie ustawić przypisanie klawiszy. Po prostu przejdź do

Sublime --> Preference --> Key Binding - User  

i wprowadź następujące informacje:

{ "keys": ["shift+command+m"], "command": "goto_definition" }

Umożliwi to przypisywanie klawiszy, Shift + Command + Maby włączyć definicję goto. Możesz oczywiście ustawić dowolne przypisanie klawiszy.

Abhishek Nick Ganguly
źródło
4

ctrl! = super na komputerach z systemem Windows i Linux.

Jeśli wersja F12 polecenia „Goto Definition” daje wyniki kilku plików, wersja „ctrl + shift + click” może nie działać dobrze. Znalazłem ten błąd podczas przeglądania projektu golang z pakietem GoSublime.

kittykitty
źródło
1
CMD + SHIFT + MOUSE1 nie działa! jaki jest właściwy sintax, aby kliknąć con GoTo Definition?
Magico,
@Magico Wymagana instalacja GoSublime i może działać tylko z projektem Golang. GoSublime: Godoc / Goto Definition ctrl+dot,ctrl+g lub ctrl+shift+left-clickw systemie Windows. Zastąp ctrl jako polecenie na komputerze Mac.
Ivan Chau
0

Używam przenośnej wersji Sublime (dla Windows) i to (umieszczenie mapy myszy w SublimeText\Packages\Userfolderze) nie działa dla mnie.

Musiałem umieścić plik mapy myszy w SublimeText\Data\Packages\Userfolderze, aby działał, gdzie SublimeTextjest katalog instalacyjny mojej wersji przenośnej. Data\Packages\Usertam również znalazłem plik mapy klawiszy.

Ravi
źródło