Как стать автором
Обновить

Комментарии 41

Мне для сложных случаев проще использовать командую строку с ack-grep или аналогом (silversearcher, да много их). Если поиска в Idea недостаточно, то в командной строке я могу быстро набросать любую возможную комбинацию из find, ack, xargs, grep.


Мне это как-то проще, чем целиться мышкой в десятки чекбоксов.

я это счастье с OpenServer познал ConEmu > Settings > Startup > Environment > set PATH = %openserver%PortableGit\usr\bin\
Несколько раз перечитал, пока не понял, что OpenServer — это не SCO OpenServer ;)

Из опыта более позднего, все эти тулзы приходят вместе с git'ом. Просто его поставить (речь итолько под win)

Total Commander'а обычно хватает. А для поиска по коду средствами различных IDE не хватает одной простой фичи — чекбоксов "искать в коде", "искать в строках" и "искать в комментариях". Довольно часто например хочется исключить комментарии из поиска.

В Idea (PyCharm, WebStorm и прочих на ее основе) такая возможность есть.

А ещё было бы удобно иметь дополненные/переопределённые классы символов для регулярок, ведь в разных языках (программирования/разметки) разные допущения каким может быть название функции, переменной и т.п.

Можете описать подробнее "и т.п."?

в SQL символ @ — часть имени переменной, в URL — отделяет пользователя от имени хоста

тоже самое с минусом/дефисом — в коде это один символ, но где-то математический оператор, а где-то — имя хоста
Total Commander'а обычно хватает.

Все средства хороши. Я тоже не упускаю возможности искать в ТС и/или из командной строки.


"искать в коде", "искать в строках" и "искать в комментариях"

Подумаю над этим. Потребуется более глубокое взаимодействие с лексером. Интересная тема.

Вот еще, возможно вам тоже будет интересно: поиск без учета разделителей. Наверное это на регулярках делается, но сама задача слишком часто требуется чтобы решать ее универсальным способом и городить регулярки после каждого токена:)
Допустим нужно найти код
if(x>0) foo(1,2,3);

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

Да, можно завести свои спецподстановки в регулярки. Теперь голова начнет переваривать эту идею.


Но ваш пример мне не понятен. Что можно упростить, в какой регулярке?


Нигде в основном тексте явно не было указано — имейте ввиду, что мой плагин ищет только внутри отдельных строк.

А зачем вы запускаете поиск по текстовым файлам каждый день уже больше 25 лет? Интересен юзкейс. 5 лет пишу программу организации файлов при помощи иерархических тегов и мне интересно является ли ваш кейс потенциально тегируемым.
Если бы задача сводилась к ограниченному числу *типичных кейсов*, я бы и сам написал для нее автомат для решения. Все упирается в бесконечное разнообразие форматов, на которых люди пишут свои документы. Например, одно из применений моего плагина связано с анализом нормативных документов для составления строительных смет (ГЭСН/ФЕР/ТЕР/...), и тут новые форматы появляются *каждый месяц* в течение десятилетий.
на самом деле *каждый месяц* это редко. это всего 300 за 25 лет. не помогло бы мое решение? www.youtube.com/watch?v=MYBnceFUxYg
не рекламирую свое не отрицаю ваше просто интересно подходит ли мое решение для вашего кейса в теории.
  1. Мне понравилось ваше демо. Тегированная FS — это интересно.
  2. Только это пока видна лишь заготовка полезной программы.
    • В демо не раскрыт способ, которым теги ставятся. ИМХО, это тяжелая GUI задача.
    • В демо вы несколько раз показываете наложение разных условий (несколько тегов, типы и теги). Видно, что работает зашитая логика И/ИЛИ, которая не очевидна, и, более того, не полностью совпадает с ожидаемой или требуемой.
    • Автономная программа, видимо, будет маловостребованной. Нужна интеграция с чем-то привычным.
  3. Для моего кейса это никак не подходит.
    • Теги хороши, когда есть устойчивый набор файлов (библиотека статей/видео/ссылок), пополняемый не слишком часто, и из-за этого есть возможность его ручного тегирования.
    • У меня документы появляются в огромных количествах и расстановка тегов для них — это само по себе не просто.
    • А главное те запросы, которые я запускаю плагином, плохо тегируются.
  4. В самом плагине нет преград к использованию при поиске доп.информации о файлах в виде иерархических тегов. Уже есть (в другом плагине) проверенное GUI решение для поиска с учетом древовидных параметров.
— это intro видео. оно должно показать потенциальную красоту использования вложенных тегов. видео про тегирование: youtu.be/nXbCy_7fRfs
— увы возможности интеграции с традиционными программами крайне ограничена. в силу того что они не понимают вложенные теги. есть плагин для браузеров. см. видео выше.
— насколько в «огромных» количествах появляются документы?
— «В самом плагине нет преград к использованию при поиске доп.информации о файлах в виде иерархических тегов». что значит «в виде иерархических тегов»?
в виде иерархических тегов?

Это когда, как у вас, теги связаны в дерево. Например, в плагине "Настройки" есть дерево секций, по которым разложены опции. При поиске можно использовать фильтр, внутри которого указать из какой(их) секции(й) нужны опции
opt-menu
Секция добавляется в фильтр при выборе из меню.

дерево произвольной глубины (высоты)?

Да, произвольной

Интересное демо! А вы не думали о возможностях автоматического тегирования?
Например, если у пользователя есть папка «фильмы» — автоматически помечать ее содержимое этим тегом, если файл в формате видео, имеет вес от нескольких сотен мегабайт и продолжительность больше нескольких минут…
Понятно, что такой поиск будет не всегда отрабатывать на 100%. Но это, в тоже время, поле для экспериментов в области машинного обучения, облачной системы обмена «правилами тегирования» и множества других техник. Я к тому, что если подумать, как мы будем работать с компьютером лет через 5-10 — приходит в голову что-то сильно отличное от «проводника»…

У меня есть наработки по этому направлению. Если интересно можем обсудить.
спасибо. конечно думал. у меня автоматически назначаются типы. и по сути они являются автоматически назначаемыми тегами. типы у меня можно кастомизировать. что правда пока не отражено в документации.
потенциально да. можно добавить автотегирование. сейчас этого нет. и например вот почему. я по статистике добавляю в среднем 2 объекта в день. что занимает 2 минуты. есть возможность группового тегирования и редактирования тегов. взял все фотки из малайзии добавил тег «фото: место: малайзия». потом все фотки за 2015 год и добавил тег «фото: год:2015». потратил 10 мин на тегирование фоток за последние несколько лет и планирую получать удовольствие от использования все оставшиюся жизнь) к сож версию с более продвинутой поддержкой фотографий еще не выложена в загрузки — не закончил.
написал в личку
Возможно, я чего-то не понял, но чем это отличается от иерархии каталогов и файлов?
тем что файл может лежать в нескольких «папках»

ovsale Правильно я понял, что у вас теги имеют не более одного родителя? (смотрите мой пост "Обычная иерархия файлов — это...")

да
Но есть же ссылки.

Мягкие и жесткие ссылки в Файловой Системе дают для некоторых файлов альтернативные пути хранения. Дерево превращается в Сеть. Но, насколько я знаю, у пользователя нет простого способа увидеть и использовать все эти альтернативы, если он видит конкретный файл. Если в пути к файлу одна из промежуточных папок (в том числе и последняя) станет результатом новой ссылки, описание файла никак не изменится.
То есть ссылки — это исключительно про папки.
А теги — это про свойства файлов.

и вы ими повседневно пользуетесь?

Обычная иерархия файлов — это один из способов для их структурирования.
Поскольку файлов часто очень много (например, у меня на С-диске 640К/83К файлов/папок), полезной будет почти любая дополнительная система доступа. Предлагаемые ovsale теги — это как раз про это. То что его теги образуют дерево, особенность реализации. Это полезно для манипуляций, но имеет обычные проблемы всех "каталогов": единственность родителя входит в противоречие с интуитивными связями между тегами.
В идеале, хотелось бы иметь СУБД, в которой у файлов кроме атрибутов "имя", "тип", "папка" были наборы произвольных свойств и поиск по ним. Теги стали бы одним из таких свойств.

В файловой системе NTFS у файлов и катологов есть альтернативные потоки. Туда можно записывать теги. Только соответственно нужна программа которая будет это делать.

Да, замечательная вещь — доп.потоки у файлов. Давно на них облизываюсь. Например, удобно хранить в них всю историю изменений файла, то есть данные для undo/redo. Но теги — нет, так как к ним имхо нужен ручной простой независимый доступ.


(Учтите, что я тут про теги пишу как диванный аналитик. Это не у меня, а у ovsale есть программа для работы с тегами)

А зачем вы запускаете поиск по текстовым файлам каждый день уже больше 25 лет?

А вы что никогда не программировали? O_O
Такой поиск нужен, чтобы найти искомый кусок кода в сотнях файлов с кодом.
Такой поиск нужен, чтобы найти искомый кусок кода в сотнях файлов с кодом.

Это, конечно, нужно любому программисту.


Но бывает (как у меня) совмещение ролей: сам создаешь программу и сам ей пользуешься. И вот при использовании, то есть при работе оператором, нужно искать не куски кода, а куски входящих/выходящих данных, и их уже не сотни файлов, а на порядок больше.

я пишу в эклипсе и там есть удобный поиск по воркспейсу. а вот куски кода не попавшие в проект у меня лежат в tags4info и я их при необходимости нахожу без поиска. у меня есть тег «программирование: код» которым протегированы все что является кодом. иногда несколько фалов кода лежат в папке а папка протегирована.
я пытаюсь уйти от поиска к вложенным тегам. но поиск по коду конечно тегами не заменишь
НЛО прилетело и опубликовало эту надпись здесь

Я вот мечтаю о ссылках в исходниках. Чтоб кликнул на import и открылся этот файл или на вызов функции и открылся её исходник.

Это уже есть в IDEA для многих языков. Поэтому я давно перешел на нее, хотя до этого был яростным противником IDE. Просто с какого-то момента стало понятно, что я значительную часть своего времени трачу на рутину, которая уже реализована в идее.

Это реализовано во всех нормальных IDE

Это две разные по трудности задачи


  1. "Клик по import". Любой редактор с плагинами может дать команду "выделить из строки и открыть файл ". Например, в CudaText я себе это реализовал в одном из первых плагинов: нажимаю Ctrl+Shift+O и файл открывается.
  2. "Открыть исходник фукции". Это очень тяжелая задача, так как требует глубокого анализа "кто-где". Решено в серьезных IDE.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории