Как получить контурное изображение в Sublime Texteditor?


117

Как мне получить контурный вид в превосходном текстовом редакторе для Windows?

Миникарта полезна, но мне не хватает традиционной схемы (удобный список всех функций в моем коде в том порядке, в котором они появляются для быстрой навигации и ориентации)

Может есть плагин, аддон или подобное? Также было бы неплохо, если бы вы могли вкратце назвать, какие шаги необходимы, чтобы заставить его работать.

На форумах возвышенного текста есть дубликат этого вопроса .


Я добавил запрос функции для SublimeText 3. Не стесняйтесь голосовать за него.
Имя Карл 09

Ответы:


266

Нажмите CTRL+ Rили CMD+ Rдля Mac, чтобы открыть список функций. Это работает в Sublime Text 1.3 или выше.


Звучит хорошо. Но при нажатии ctrl-r ничего не происходит. У меня открыт файл php. Могу ли я найти команду в меню? Это работает без плагина? karlthorwald
user89021 06

6
Ctrl + r существует в текущей бета-версии ( sublimetext.com/beta ), но отсутствует в 1.2
jskinner

1
Это потрясающе, и мне действительно не хватало общего вида из Eclipse. Честно говоря, это намного лучше, хотя я бы хотел, чтобы был способ, чтобы он вытягивал только основные функции, а не функции обратного вызова / успеха.
Michael BW

1
К сожалению, список не отсортирован. Мне не хватает схемы Eclipse с отсортированным списком функций.
scorpiodawg

1
Есть ли какой-либо дополнительный прогресс в реальном обзоре структуры, например, в редакторах Eclipse и Oxygen? Чего не хватает ctrl + r, так это того, что нет указания на то, что было обрисовано в общих чертах, является ли это переменной или подобной функцией.
kstubs

17

Я использую складывание всех действий. Это сведет к минимуму все до объявления, я могу увидеть все методы / функции, а затем развернуть тот, который мне интересен.


10
В меню ST 3: Edit-Code Folding-Fold All. Сочетание клавиш Ctrl + k, 1. Ctrl-k, j для отмены
wolfstevent 07

16

Плагин Outline доступен в управлении пакетами, попробуйте! https://packagecontrol.io/packages/Outline

Примечание: он не работает в режиме нескольких строк / столбцов. Для работы с несколькими строками / столбцами используйте эту вилку: https://github.com/vlad-wonderkidstudio/SublimeOutline


2
Примечание. Чтобы выйти из режима Outline, нажмите небольшую кнопку закрытия на вкладке Outline, затем нажмите Shift+ Alt+ 1или перейдите в View -> Layout -> Single. Чтобы открыть резервную копию, используйте Ctrl+ Shift+, Pзатем введитеBrowse Mode: Outline
Gabriel Staples

8

Я кратко смотрю на SublimeText 3 api и, view.find_by_selector(selector)кажется, могу вернуть список регионов.

Итак, я думаю, что возможен плагин, который отображал бы схему / структуру вашего файла.

Плагин, который будет отображать что-то вроде этого:

схема кода

Примечание: плагин отображаемого имени функции может быть использован в качестве вдохновения для извлечения / имен методов класса или ClassHierarchy для извлечения структуры контура


0

Если вы хотите иметь возможность распечатать или сохранить схему, ctr / command + r не очень полезен. Можно просто найти все в следующем grep ^[^\n]*function[^{]+{ или его варианте в зависимости от языка и ситуации, в которой вы работаете.

Как только вы найдете все, вы можете скопировать и вставить результат в новый документ, и, в зависимости от количества функций, наведение порядка не займет много времени.

Ответ далек от совершенства, особенно для случаев, когда в комментариях есть слово функция (или его эквивалент), но я думаю, что это полезный ответ.

С очень быстрым редактированием это результат того, над чем я работаю сейчас.

    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){};
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.