Sublime 3 - Установить карту ключей для функции Goto Definition


143

Я хочу создать ярлык в стиле Eclipse Ctrl+, MouseClickчтобы открыть функцию / метод. В Sublime Text 3 эта функция уже вызывается, goto_definitionно она привязана к ней F12.

Но я не знаю, как создать эту привязку. Я искал здесь документацию, но она была слишком сложной. Вы можете мне помочь с этим простым связыванием клавиш?

Изменить: после этой статьи мне сказали сделать это: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

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

Кажется, это не работает, ctrl+ shift+ clickничего не выполняет.


3
super- это ключ Windows для Windows и Linux и командный ключ для OS X, а не control. Попробуйте это и посмотрите, получите ли вы желаемое поведение.
skuroda

Ответы:


245

Для всех, кто хочет установить определение goto в стиле Eclipse, вам необходимо создать .sublime-mousemapфайл в Userпапке Sublime .

Windows - создать Default (Windows).sublime-mousemapв%appdata%\Sublime Text 3\Packages\User

Linux - создать Default (Linux).sublime-mousemapв~/.config/sublime-text-3/Packages/User

Mac - создать Default (OSX).sublime-mousemapв~/Library/Application Support/Sublime Text 3/Packages/User

Теперь откройте этот файл и поместите в него следующую конфигурацию

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

Вы можете изменить modifiersключ по своему усмотрению.


Поскольку Ctrl- button1в Windows и Linux используется для множественного выбора, добавление второго ключа-модификатора, например, Altможет быть хорошей идеей, если вы хотите использовать обе функции:

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

В качестве альтернативы вы можете использовать одну правую кнопку мыши ( button2) Ctrlи не мешать работе каких-либо встроенных функций.


4
Кажется, это правильный ответ, но я сделал все, что вы сказали, и все равно он не работает, я ctrl+ clickи ничего не делает, я получаю сообщение об ошибкеUnable to parse binding
Кивилиус

вы проверили имя файла конфигурации? можно где-нибудь выложить скриншот ошибки?
Борис Брдарич

Кто-нибудь знает, как для этого щелкнуть правой кнопкой мыши? Мне удалось добавить в файл Context.sublime-menu команду, но я не мог понять, как передать аргументы для текущего выбранного текста ... Или строки ... Я долго искал, пытаясь найти документацию (и попробовал "args": "drag_select"), но не смог понять. Я бы предпочел щелкнуть правой кнопкой мыши и перейти к определению, хотя это отлично работает! Спасибо.
Том

Могу ли я также привязать к нему клавишу ввода, чтобы мне не приходилось вручную нажимать ее каждый раз, когда я нажимаю Ctrl + щелчок?
user3388884

@ BorisSamardžija, а также как заставить приведенный выше сценарий искать определение функции в моем текущем файле, а не переходить к другим внешним файлам.
Александр Солоник

90

Чтобы установить, перейдите к определению на alt + d. Из меню «Настройки»> «Привязки клавиш - Пользователь». А затем добавьте следующий JSON.

[
    { "keys": ["alt+d"], "command": "goto_definition" }
]

1
Не уверен, почему меня проголосовали, но это решение отлично работает для меня на Sublime 3.
mbokil

9
Вы, вероятно, получили отрицательное голосование, потому что в исходном вопросе говорилось: «Я хочу создать сочетание клавиш в стиле Eclipse Ctrl + MouseClick, чтобы открыть функцию / метод». Я нашел ваш ответ полезным, поскольку меня не интересует версия с ярлыком для мыши, поэтому я проголосовал за. :)
Чарльз Ропер

1
похоже, лучший вариант, чем cmd + opt + down
uday

Можно использовать button1вместо d... итак, у нас есть подобное"alt" + "button"
IROEGBU 02

22

Если вы хотите увидеть, как сделать правильное определение, перейдите в Sublime Text-> Preferences-> Key Bindings - Default и найдите команду, которую вы хотите переопределить.

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

Это два, которые показаны в моем Default.

На Mac я скопировал второй, чтобы переопределить.

в Sublime Text -> Preferences -> Key Bindings - Пользователь, я добавил это

/* Beginning of File */

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

/* End of File */

Это связывает его с комбинацией Command + Shift + 1 на Mac.


6

На Mac вы должны сами установить привязку клавиш. Просто зайдите в

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

и введите следующее:

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

Это включит привязку клавиш, Shift + Command + Mчтобы включить определение перехода. Вы, конечно, можете установить привязку клавиш к чему угодно.


4

ctrl! = super на машинах с Windows и Linux.

Если версия F12 «Goto Definition» дает результаты для нескольких файлов, версия «ctrl + shift + click» может работать некорректно. Я обнаружил эту ошибку при просмотре проекта golang с пакетом GoSublime.


1
CMD + SHIFT + MOUSE1 не работает! какой правильный синтаксис сделать клик на Con GoTo Definition?
Magico

@Magico Требуется установка GoSublime, и она может работать только для проекта Golang. GoSublime: Godoc / Goto Definition ctrl+dot,ctrl+g или ctrl+shift+left-clickв Windows. Замените ctrl как команду на Mac.
Иван Чау

0

Я использую портативную версию Sublime (для Windows), и это (размещение карты мыши в SublimeText\Packages\Userпапке) у меня не сработало.

Мне пришлось поместить файл карты мыши в SublimeText\Data\Packages\Userпапку, чтобы заставить его работать, где SublimeTextнаходится каталог установки для моей портативной версии. Data\Packages\Userздесь я также нашел файл раскладки клавиатуры.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.