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.


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.


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" }
]

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.


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.