Документация KDevelop 5.x для поиска и замены в файлах

Для Ubuntu distros, install command-not-found:

apt install command-not-found

После установки и включения, он запускается в текущей bash оболочке, (точнее, в любой bash оболочке, запущенной после установки). Вот вывод, если пользователь набирает одинокий "chlmod":

No command 'chlmod' found, did you mean:
 Command 'chmod' from package 'coreutils' (main)
chlmod: command not found

2
31.07.2017, 00:25
1 ответ

%s относится к двум разным полям в полях «Шаблон» и «Шаблон замены». %s в поле «Шаблон» относится к строке, которую вы вводите в поле «Шаблон». Для поля «Шаблон замены» это относится к строке, которую вы вводите в поле «Текст замены :», которая появится в доке «Найти/Заменить в файлах», которая появляется в нижней части IDE, когда вы нажимаете кнопку кнопка поиска.

В этих полях можно создавать всевозможные шаблоны. Предположим, вы хотите заменить вектор ()на «foobar» в своих документах. Вы можете ввести :«вектор» без кавычек в поле «Шаблон», ввести «(%s )» без кавычек в поле «Шаблон» и «[%s]» без кавычек в поле «Шаблон замены». После нажатия на поиск введите «foobar» без кавычек в текстовом поле «Замена» в доке и нажмите кнопку «Заменить».

Редактировать:

Вот еще примеры/пояснения. Обратите внимание, однако, что я не являюсь разработчиком Kdevelop и не просматривал исходный код, я просто сообщаю о том, что я узнал методом проб и ошибок, и, к сожалению, у меня нет полного понимания Find -Replace In Функциональность файлов.

enter image description here

В диалоговом окне «Найти» -«Заменить» (выше )у нас есть эти поля:

  • Pattern:Эта строка — то, что вам нужно. Он может поддерживать регулярные выражения, но только при установленном флажке Regular expression.
  • Template:Регулярное выражение для украшения строки поиска. «%s» — это ссылка на строку, которую вы ввели в Pattern. Вы можете использовать %sнесколько раз. Если ваш Patternустановлен на «foo»,затем шаблон Template'%s%s' расширится до 'foofoo'. Затем KDevelop будет искать текст, соответствующий 'foofoo', с левой ассоциативностью. Я не знаю, есть ли другие специальные ссылки '%', которые можно использовать, а '%s' использовать не обязательно. Справа от этого поля находится раскрывающееся меню для различных предопределенных шаблонов, которые вы можете использовать. Я не знаю, можете ли вы определить свой собственный.
  • Replacement template:Шаблон (без использования регулярного выражения )для украшения строки замены. Сомнительно, что команда KDevelop решила поместить поле Replacement textв другой док (см. следующее изображение ниже ). То, что вы поместите в это поле Replacement text, и есть то, во что расширится '%s'. Опять же, вы можете использовать '%s' несколько раз. Я не знаю, есть ли другие специальные ссылки '%', которые можно использовать, а '%s' использовать не обязательно.
  • Regular expression:Определяет, может ли Patternиспользовать регулярные выражения.
  • Case sensitive:Переключает поиск с учетом регистра.
  • Location(s):Уточняет, где выполнять поиск -Заменить. Справа вы можете перейти к определенному каталогу, в котором вы хотите запустить, или выбрать из раскрывающегося меню предопределенных параметров. Я не уверен, можете ли вы предопределить свои собственные.
  • Depth:Не совсем уверен, что это делает, я предполагаю, что это ограничивает, насколько глубоко в каталоге проекта должен идти ваш Find -Replace.
  • Limit to project files:Этот параметр кажется постоянно неактивным при доступе к функции «Найти/Заменить в файлах» из строки меню или контекстного меню. Похоже, это позволяет фильтровать файлы для поиска по шаблонам, перечисленным в Filesниже. Я думаю, что это может быть ошибка, вы должны иметь возможность включить / отключить ее. Чтобы переключить его, вам нужно открыть «Найти/Заменить в файлах» с помощью увеличительного стекла в доке «Найти/Заменить в файлах», см. рис.:enter image description here.
  • Files:Разделенный запятыми список типов файлов, которые вы хотите найти -Заменить для запуска.
  • Exclude:Разделенный запятыми список каталогов (относительно корневого каталога проекта )и файлов, которые следует игнорировать при выполнении команды «Найти» -Заменить.

На изображении выше я ищу конкретные экземпляры iomanip. С шаблоном Templateон будет искать только экземпляры, которые окружены «<>» и имеют переменное количество цифр слева от символа «i» в «iomanip». В Replacement templateя ввел глупый шаблон скобок с двумя экземплярами ссылки '%s'. Каждый «%s» будет расширяться до того, что я ввожу в поле Replacement textв доке, которое появляется в нижней части IDE после нажатия кнопки Searchв диалоговом окне «Найти -Заменить в файлах». См. изображение ниже:

enter image description here

Как видите, в нижней части IDE появится панель «Найти/Заменить в файлах». Здесь я набрал «IamTheBest» в поле Replacement text. Эта строка представляет собой то, что «%s» расширяется в поле Replacement templateиз предыдущего диалогового окна.

В дереве находится список совпадений, соответствующих расширенному шаблону Template, представленному в предыдущем диалоговом окне. Обратите внимание, что были сбиты <29837489237482374iomanip>и <iomanip>, но не "iomanip". Из дерева мы можем выбрать, какие из них мы хотим включить в наш протокол поиска -замены. Пока я оставлю их все выбранными. В раскрывающемся меню можно выбрать одну из предыдущих процедур «Найти -Заменить». После нажатия кнопки Replaceу нас будет:

enter image description here

Еще больше примеров/вариантов использования:

  • Демонстрация того, как можно использовать несколько «%s» :enter image description hereВкратце, он искал двойные экземпляры «foo», левый ассоциированный, и заменял их четверными экземплярами «Bar», разделенными различными глупыми словами. Обратите внимание, что один «foo» в строке 12 и третий «foo» в строке 11 не изменились.
  • Демонстрация одного из предопределенных Templateшаблонов,"назначение" :enter image description hereЭто только изменило «thisNumber» на «ноль» в контексте присваивания, но не в контексте равенства.

Надеюсь, это было полезно!

Редактировать 2:

Увидев, как вы просили документацию или хотя бы ссылку на исходный код, я решил дать вам ссылку на исходный код. Вернее то, что команда KDevelop опубликовала на github:

Исходный код grepview

Функциональность поиска/замены в файлах инкапсулирована в подключаемом модуле grepview, ссылка на который приведена выше. В частности, посмотрите на greputil.h и greputil.cpp. Именно здесь вы найдете логику подстановки, используемую для расширения «%s» в полях Templateи Replacement template.

Редактировать 3:

Мои утверждения об опции Limit to Project Filesневерны, в настоящее время я изучаю исходный код, чтобы выяснить, что он должен делать....

Редактировать 4 :Я еще не выяснил предел для проекта, но я только что понял, что есть «Что это?» функция в этом меню поиска/замены (вопросительный знак в правом верхнем углу окна ). Если вы нажмете ? а затем нажмите на некоторые из полей, он отобразит гораздо больше полезной информации, особенно в поле шаблона поиска. Вот "что это?" отображаемый текст:

Если вы не отметите «Регулярное выражение» ниже, это будет считаться необработанной строкой. Это означает, что все метасимволы экранированы.

Возможные метасимволы::

. -Соответствует любому символу

^ -Соответствует началу строки

$ -Соответствует концу строки

\b -Соответствует границе слова

\s -Соответствует любому пробельному символу

Существуют следующие операторы повторения:

?-Предыдущий элемент соответствует не более одного раза

*-Предыдущий элемент соответствует ноль или более раз

+ -Предыдущий элемент совпадает один или несколько раз

{n} -Предыдущий элемент соответствует ровно n раз

{n,} -Предыдущий элемент соответствует n или более раз

{,n} -Предыдущий элемент соответствует не более n раз

{n,m} -Предыдущий элемент соответствует не менее n, но не более m раз.

Кроме того, обратные ссылки на подвыражения в квадратных скобках доступны через нотацию \n.

Для получения дополнительной информации см. www.pcre.org или man pcresyntax.

4
27.01.2020, 22:09

Теги

Похожие вопросы