Sublime 3 - Establecer mapa de teclas para la función Ir a definición


143

Quiero crear un acceso directo de estilo Eclipse Ctrl+ MouseClickpara abrir la función / método. Sublime Text 3 ya tiene esta función llamada goto_definitionpero está vinculada a F12.

Pero no estoy seguro de cómo crear este enlace. Busqué documentación aquí pero era demasiado compleja. ¿Me pueden ayudar con esta simple combinación de teclas?

Editar: Después de este artículo, me dijeron que hiciera esto: http://webtempest.com/better-definition-navigation-in-sublime-text-3/

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

Esto no parece funcionar, ctrl+ shift+ clickno ejecuta nada.


3
superes la tecla de Windows para Windows y Linux y la tecla de comando para OS X, no control. Pruebe eso y vea si obtiene el comportamiento que desea.
skuroda

Respuestas:


244

Para cualquier otra persona que desee establecer la definición de goto de estilo Eclipse, debe crear el .sublime-mousemaparchivo en la Usercarpeta Sublime .

Windows: crear Default (Windows).sublime-mousemapen%appdata%\Sublime Text 3\Packages\User

Linux: crear Default (Linux).sublime-mousemapen~/.config/sublime-text-3/Packages/User

Mac: crear Default (OSX).sublime-mousemapen~/Library/Application Support/Sublime Text 3/Packages/User

Ahora abra ese archivo y coloque la siguiente configuración dentro

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

Puedes cambiar la modifiersclave como quieras.


Dado que Ctrl, button1en Windows y Linux se usa para múltiples selecciones, agregar una segunda tecla modificadora como Altpodría ser una buena idea si desea usar ambas funciones:

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

Alternativamente, puede usar el botón derecho del mouse ( button2) Ctrlsolo, y no interferir con ninguna función incorporada.


44
Esta parece ser la respuesta correcta, pero lo hice todo lo que dijo y todavía no estoy trabajando i ctrl+ clicky su no hacer nada, me sale un errorUnable to parse binding
Kivylius

¿ha verificado el nombre del archivo de configuración? ¿Puedes publicar una captura de pantalla de error en alguna parte?
Boris Brdarić

¿Alguien sabe cómo hacer clic derecho para esto? Pude agregar a un archivo Context.sublime-menu el comando pero no pude encontrar la manera de pasar los argumentos para el texto seleccionado actualmente ... O la línea ... Busqué algo bueno mientras intentaba encontrar documentación (e intenté "args": "drag_select") pero no pude resolverlo. ¡Prefiero hacer clic derecho y saltar a la definición, aunque esto funciona muy bien! Gracias.
Tom

¿También podría vincular la tecla Intro para que no tenga que presionarla manualmente cada vez que presione Ctrl + clic?
user3388884

@ BorisSamardžija, también cómo hago que el script anterior busque la definición de la función en mi archivo actual en lugar de saltar a otros archivos externos.
Alexander Solonik

90

Para establecer ir a definición a alt + d. Desde el menú Preferencias> Asignaciones de teclas-Usuario. Y luego agregue el siguiente JSON.

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

1
No estoy seguro de por qué me votaron, pero esta solución me funciona perfectamente en Sublime 3.
mbokil

9
Probablemente te rechazaron porque la pregunta original era "Quiero crear un shorcut de estilo Eclipse Ctrl + MouseClick para abrir la función / método". Su respuesta me pareció útil ya que no estoy interesado en la versión de acceso directo del mouse, así que he votado. :)
Charles Roper

1
parece una mejor opción que cmd + opt + down
uday

Posible de usar en button1lugar de d... entonces, tenemos como"alt" + "button"
IROEGBU

22

Si desea ver cómo hacer una definición adecuada, vaya a Sublime Text-> Preferences-> Key Bindings - Default y busque el comando que desea anular.

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

Esos son dos que se muestran en mi Predeterminado.

En Mac copié el segundo para anular.

en Sublime Text -> Preferences -> Key Bindings - User Agregué esto

/* Beginning of File */

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

/* End of File */

Esto lo vincula a la combinación Comando + Mayús + 1 en mac.


6

En una Mac, debe configurar la combinación de teclas usted mismo. Simplemente ve a

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

e ingrese lo siguiente:

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

Esto habilitará la combinación de teclas Shift + Command + Mpara habilitar la definición de ir a. Por supuesto, puede configurar la combinación de teclas para cualquier cosa que desee.


4

ctrl! = super en Windows y máquinas Linux.

Si la versión F12 de "Goto Definition" produce resultados de varios archivos, la versión "ctrl + shift + click" podría no funcionar bien. Encontré ese error al ver el proyecto Golang con el paquete GoSublime.


1
¡CMD + SHIFT + MOUSE1 no funciona! ¿Cuál es la sintaxis correcta para hacer clic en con GoTo Definition?
Magico

@Magico Requiere instalación de GoSublime y solo puede funcionar para el proyecto Golang. GoSublime: Godoc / Goto Definition ctrl+dot,ctrl+g o ctrl+shift+left-clicken Windows. Reemplace ctrl como comando en Mac.
Ivan Chau

0

Estoy usando la versión portátil Sublime (para Windows) y esto (colocar el mapa del mouse en la SublimeText\Packages\Usercarpeta) no funcionó para mí.

Tuve que colocar el archivo de mapa del mouse en la SublimeText\Data\Packages\Usercarpeta para que funcione donde SublimeTextestá el directorio de instalación de mi versión portátil. Data\Packages\Useres donde encontré el archivo de mapa de teclas también.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.