Làm thế nào để có được một khung nhìn phác thảo trong texteditor sublime?


117

Làm cách nào để nhận dạng xem phác thảo trong trình soạn thảo văn bản siêu phàm dành cho Windows?

Bản đồ nhỏ rất hữu ích nhưng tôi bỏ lỡ một phác thảo truyền thống (một danh sách có thể kéo được tất cả các chức năng trong mã của tôi theo thứ tự chúng xuất hiện để điều hướng và định hướng nhanh chóng)

Có thể có một plugin, addon hoặc tương tự? Sẽ rất tuyệt nếu bạn có thể nhanh chóng nêu tên các bước cần thiết để làm cho nó hoạt động.

Có một bản sao của câu hỏi này trên các diễn đàn văn bản siêu phàm.


Tôi đã thêm một yêu cầu tính năng cho SublimeText 3. Hãy bình chọn cho nó.
Tên là carl

Câu trả lời:


266

Nhấn CTRL+ Rhoặc CMD+ Rđối với Mac để xem danh sách chức năng. Điều này hoạt động trong Sublime Text 1.3 trở lên.


Nghe hay đấy. Nhưng không có gì xảy ra khi tôi nhấn ctrl-r. Tôi có một tệp php đang mở. Tôi có thể tìm lệnh trong menu không? Điều này có hoạt động mà không cần plugin không? karlthorwald
user89021

6
Ctrl + r tồn tại trong phiên bản beta hiện tại ( sublimetext.com/beta ), nhưng không tồn tại trong phiên bản 1.2
jskinner

1
Điều này thật tuyệt vời và tôi thực sự thiếu chế độ xem phác thảo từ Eclipse. Điều này thực sự tốt hơn nhiều mặc dù tôi ước có một cách để nó chỉ kéo lên các chức năng chính chứ không phải các chức năng gọi lại / thành công.
Michael BW

1
Rất tiếc, danh sách không được sắp xếp. Tôi bỏ lỡ việc xem phác thảo của Eclipse với danh sách các chức năng đã được sắp xếp.
scorpiodawg

1
Bất kỳ tiến bộ bổ sung nào về chế độ xem phác thảo thực như những gì có sẵn trong các trình chỉnh sửa Eclipse và Oxygen? Không có gì với ctrl + r là không có dấu hiệu nào đã được phác thảo cho dù đó là một biến hay một hàm giống nhau.
kstubs

17

Tôi sử dụng tất cả các hành động gấp. Nó sẽ thu nhỏ mọi thứ vào phần khai báo, tôi có thể xem tất cả các phương thức / chức năng và sau đó mở rộng phương thức tôi quan tâm.


10
Từ menu ST 3: Chỉnh sửa-Mã Gấp-Gấp Tất cả. Phím tắt Ctrl + k, 1. Ctrl-k, j để hoàn tác
wolfstevent Ngày

16

Một plugin tên là Outline có sẵn trong kiểm soát gói, hãy thử nó! https://packagecontrol.io/packages/Outline

Lưu ý: nó không hoạt động ở chế độ nhiều hàng / cột. Đối với nhiều hàng / cột hoạt động, hãy sử dụng fork này: https://github.com/vlad-wonderkidstudio/SublimeOutline


2
Lưu ý: Để thoát chế độ xem Dàn bài , hãy nhấp vào nút đóng nhỏ trong tab Dàn bài , sau đó nhấn Shift+ Alt+ 1hoặc đi tới Chế độ xem -> Bố cục -> Đơn. Để mở nó sao lưu sử dụng Ctrl+ Shift+ Psau đó tìm kiếmBrowse Mode: Outline
Gabriel Staples

8

Tôi xem sơ qua api SublimeText 3view.find_by_selector(selector)dường như có thể trả về danh sách các vùng.

Vì vậy, tôi đoán rằng một plugin có thể hiển thị đường viền / cấu trúc tệp của bạn.

Một plugin sẽ hiển thị một cái gì đó như thế này:

phác thảo mã

Lưu ý: các plugin của tên hàm hiển thị có thể được sử dụng như một nguồn cảm hứng để trích xuất các lớp / phương pháp tên hoặc ClassHierarchy để trích xuất các cấu trúc đề cương


0

Nếu bạn muốn có thể in ra hoặc lưu bản phác thảo, ctr / command + r không hữu ích lắm. Người ta có thể tìm đơn giản tất cả trên grep sau đây ^[^\n]*function[^{]+{ hoặc một số biến thể của nó để phù hợp với ngôn ngữ và hoàn cảnh bạn đang làm việc.

Sau khi tìm thấy tất cả, bạn có thể sao chép và dán kết quả vào một tài liệu mới và tùy thuộc vào số lượng chức năng sẽ không mất nhiều thời gian để sắp xếp.

Câu trả lời còn lâu mới hoàn hảo, đặc biệt là đối với các trường hợp khi các nhận xét có chức năng từ (hoặc nó tương đương) trong chúng, nhưng tôi nghĩ đó là một câu trả lời hữu ích.

Với một chỉnh sửa rất nhanh, đây là kết quả tôi nhận được về những gì tôi đang làm.

    PathMaker.prototype.start = PathMaker.prototype.initiate = function(point){};
    PathMaker.prototype.path = function(thePath){};
    PathMaker.prototype.add = function(point){};
    PathMaker.prototype.addPath = function(path){};
    PathMaker.prototype.go = function(distance, angle){};
    PathMaker.prototype.goE = function(distance, angle){};
    PathMaker.prototype.turn = function(angle, distance){};
    PathMaker.prototype.continue = function(distance, a){};
    PathMaker.prototype.curve = function(angle, radiusX, radiusY){};
    PathMaker.prototype.up = PathMaker.prototype.north = function(distance){};
    PathMaker.prototype.down = PathMaker.prototype.south = function(distance){};
    PathMaker.prototype.east = function(distance){};
    PathMaker.prototype.west = function(distance){};
    PathMaker.prototype.getAngle = function(point){};
    PathMaker.prototype.toBezierPoints = function(PathMakerPoints, toSource){};
    PathMaker.prototype.extremities = function(points){};
    PathMaker.prototype.bounds = function(path){};
    PathMaker.prototype.tangent = function(t, points){};
    PathMaker.prototype.roundErrors = function(n, acurracy){};
    PathMaker.prototype.bezierTangent = function(path, t){};
    PathMaker.prototype.splitBezier = function(points, t){};
    PathMaker.prototype.arc = function(start, end){};
    PathMaker.prototype.getKappa = function(angle, start){};
    PathMaker.prototype.circle = function(radius, start, end, x, y, reverse){};
    PathMaker.prototype.ellipse = function(radiusX, radiusY, start, end, x, y , reverse/*, anchorPoint, reverse*/ ){};
    PathMaker.prototype.rotateArc = function(path /*array*/ , angle){};
    PathMaker.prototype.rotatePoint = function(point, origin, r){};
    PathMaker.prototype.roundErrors = function(n, acurracy){};
    PathMaker.prototype.rotate = function(path /*object or array*/ , R){};
    PathMaker.prototype.moveTo = function(path /*object or array*/ , x, y){};
    PathMaker.prototype.scale = function(path, x, y /* number X scale i.e. 1.2 for 120% */ ){};
    PathMaker.prototype.reverse = function(path){};
    PathMaker.prototype.pathItemPath = function(pathItem, toSource){};
    PathMaker.prototype.merge = function(path){};
    PathMaker.prototype.draw = function(item, properties){};
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.