Sublime 3 - Đặt bản đồ chính cho chức năng Định nghĩa Goto


143

Tôi muốn tạo một lối tắt kiểu Eclipse Ctrl+ MouseClickđể mở hàm / phương thức. Sublime Text 3 đã có chức năng này được gọi goto_definitionnhưng nó bị ràng buộc F12.

Nhưng tôi không chắc làm thế nào để tạo ràng buộc này. Tôi đã xem tài liệu ở đây nhưng nó quá phức tạp. Bạn có thể giúp tôi với ràng buộc khóa đơn giản này?

Chỉnh sửa: Sau bài viết này, tôi được yêu cầu làm điều này: http://webtempest.com/better-def định-navlation-in-sublime-text-3/

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

Điều này dường như không hoạt động, ctrl+ shift+ clickthực thi không có gì.


3
superlà khóa cửa sổ cho Windows và Linux và là phím lệnh cho OS X, không phải điều khiển. Hãy thử điều đó và xem nếu bạn có được hành vi bạn muốn.
skuroda

Câu trả lời:


244

Đối với bất kỳ ai khác muốn đặt định nghĩa goto kiểu Eclipse, bạn cần tạo .sublime-mousemaptệp trong Userthư mục Sublime .

Windows - tạo Default (Windows).sublime-mousemaptrong%appdata%\Sublime Text 3\Packages\User

Linux - tạo Default (Linux).sublime-mousemaptrong~/.config/sublime-text-3/Packages/User

Mac - tạo Default (OSX).sublime-mousemaptrong~/Library/Application Support/Sublime Text 3/Packages/User

Bây giờ hãy mở tập tin đó và đặt cấu hình sau vào bên trong

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

Bạn có thể thay đổi modifiers phím theo ý muốn.


Ctrl- button1trên Windows và Linux được sử dụng cho nhiều lựa chọn, nên thêm khóa bổ trợ thứ hai như thế Altcó thể là một ý tưởng hay nếu bạn muốn sử dụng cả hai tính năng:

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

Ngoài ra, bạn có thể sử dụng nút chuột phải ( button2) Ctrlmột mình và không can thiệp vào bất kỳ chức năng tích hợp nào.


4
Điều này có vẻ như câu trả lời đúng, nhưng tôi đã làm mọi thứ bạn nói và vẫn Nó không làm việc tôi ctrl+ clickvà nó bất cứ điều gì không làm, tôi nhận được một lỗiUnable to parse binding
Kivylius

Bạn đã kiểm tra tên tập tin cấu hình? bạn có thể gửi ảnh chụp màn hình lỗi ở đâu đó không?
Boris Brdarić

Có ai biết làm thế nào bạn nhấp chuột phải cho điều này? Tôi đã có thể thêm vào tệp menu Context.sublime lệnh nhưng không thể tìm ra cách chuyển trong các đối số cho văn bản hiện được chọn ... Hoặc dòng ... Tôi đã tìm kiếm tốt trong khi cố gắng tìm tài liệu (và đã thử "args": "drag_select") nhưng không thể tìm ra. Tôi muốn nhấp chuột phải và nhảy đến định nghĩa mặc dù điều này làm việc rất tốt! Cảm ơn.
Tom

Tôi cũng có thể liên kết phím enter với điều này để tôi không phải bấm thủ công mỗi lần tôi bấm + nhấp?
dùng3388884

@ BorisSamardžija, cũng là cách tôi tạo tập lệnh trên tìm định nghĩa hàm trong tệp hiện tại của tôi thay vì chuyển sang các tệp bên ngoài khác.
Alexander Solonik

90

Để đặt đi đến định nghĩa cho alt + d. Từ Tùy chọn Menu> Ràng buộc chính - Người dùng. Và sau đó thêm JSON sau đây.

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

1
Không chắc chắn lý do tại sao tôi đã bỏ phiếu nhưng giải pháp này hoạt động hoàn hảo với tôi trên Sublime 3.
mbokil

9
Có lẽ bạn đã bị từ chối vì câu hỏi ban đầu đã hỏi "Tôi muốn tạo một shorcut kiểu Eclipse Ctrl + MouseClick để mở hàm / phương thức". Tôi thấy câu trả lời của bạn rất hữu ích vì tôi không quan tâm đến phiên bản phím tắt chuột, vì vậy tôi đã nâng cấp. :)
Charles Roper

1
có vẻ như tùy chọn tốt hơn so với cmd + opt + down
vào

Có thể sử dụng button1thay vì d... vì vậy, chúng tôi đã thích"alt" + "button"
IROEGBU

22

Nếu bạn muốn xem cách thực hiện một định nghĩa phù hợp, hãy vào Sublime Text-> Preferences-> Key Bindings - Mặc định và tìm kiếm lệnh bạn muốn ghi đè.

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

Đó là hai cái hiển thị trong Mặc định của tôi.

Trên Mac tôi đã sao chép thứ hai để ghi đè.

trong văn bản cao siêu -> Tùy chọn -> Ràng buộc chính - Người dùng tôi đã thêm cái này

/* Beginning of File */

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

/* End of File */

Điều này liên kết nó với tổ hợp Command + Shift + 1 trên mac.


6

Trên máy mac, bạn phải tự đặt keybinding. Đơn giản chỉ cần đi đến

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

và nhập như sau:

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

Điều này sẽ cho phép keybinding của Shift + Command + Mđể kích hoạt định nghĩa goto. Tất nhiên, bạn có thể thiết lập liên kết phím với bất cứ điều gì bạn muốn.


4

ctrl! = super trên windows và máy linux.

Nếu phiên bản F12 của "Định nghĩa Goto" tạo ra kết quả của một số tệp, phiên bản "ctrl + shift + nhấp" có thể không hoạt động tốt. Tôi thấy lỗi đó khi xem dự án golang với gói GoSublime.


1
CMD + SHIFT + MOUSE1 không hoạt động! Điều gì đúng sintax để nhấp vào con GoTo Định nghĩa?
Magico

@Magico Yêu cầu cài đặt GoSublime và nó chỉ có thể hoạt động cho dự án Golang. GoSublime: Định nghĩa Godoc / Goto ctrl+dot,ctrl+g hoặc ctrl+shift+left-clicktrên Windows. Thay thế ctrl như lệnh trên Mac.
Ivan Châu

0

Tôi đang sử dụng phiên bản di động tuyệt vời (dành cho Windows) và phiên bản này (đặt mousemap vào SublimeText\Packages\User thư mục) không hoạt động với tôi.

Tôi đã phải đặt tệp mousemap vào SublimeText\Data\Packages\Userthư mục để làm cho nó hoạt động trong đó thư mục SublimeTextcài đặt cho phiên bản di động của tôi. Data\Packages\Userlà nơi tôi tìm thấy tập tin keymap.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.