2016-08-30 3 views
1

В PhpStorm 2016.2 У меня есть новый проект, который был унаследован и [плохо] нуждается в обновлении.PhpStorm 2016.2 найти и заменить многострочный текст

Есть много страниц, каждая с вводной линией, как так (пример):

<? 
include ("/inc/db.php"); 

Мне нужно заменить эту строку с несколькими линиями, такими как:

<?php 
include "siteheader.php"; 
require "class.myclass.inc.php"; 
$dataBase = new DbObj(); 

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

  • В этом случае я ищу конкретно на «заменить в пути» функции, как мне нужно, чтобы применить эти изменения ко многим страницам.

У меня есть Read the manual, но для этого нет возможности. Я думаю, что я мог бы использовать регулярное выражение, но это не было бы идеальным (побеги и т. Д.).

Я также посмотрел, но не нашел подходящий плагин от PhpStorm Plugin Repository.

Есть ли способ поиска и/или замена многострочного текста на пути в PhpStorm 2016.2?

Приветствия

ответ

1

Существует нет простой в использовании поиска нескольких строк или заменить на несколько файлов (Find/Replace in Path функциональные), к сожалению, ,

Теперь вы должны использовать опцию Regex для этого - это единственный вариант, который работает.

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


вручную делает регулярок-совместимый текст может быть весьма проблематично .. поэтому вы можете использовать это несколько шагов-трик:

  1. Введите новый текст в одном файле, чтобы начать с
  2. Выберите такой текст и вызвать Replace in Path... диалог - с опцией Regex предварительно выбрана она должна автоматически избежать выбора, чтобы быть регулярное выражение-совместимый
  3. Copy уже маскирование текст где-то (только буфер должен быть достаточно)
  4. Закрыть диалоговое окно и вернуться к исходному файлу
  5. Выберите текст, который вы хотите заменить, и вызовите диалог Replace in Path... - он будет иметь свой первоначальный текст уже заполнена и регулярное выражение, совместимое
  6. Вставить ранее скопированный экранированный текст i Nto Заменить поле
  7. Выполнить поиск/замена

На соответствующую записку: https://stackoverflow.com/a/38672886/783119

+0

Спасибо за информацию, LazyOne. Я буду следовать этим темам и надеюсь, что это произойдет в будущем обновлении :) – Martin

+0

Ваш путеводитель по регулярному выражению текстовых полей работает хорошо. Приветствия. – Martin

4

Вы можете сделать многострочный Найти & Заменить вариант Regex включен

поиск:

<\?\ninclude \("/inc/db\.php"\); 

Заменить:

<?php\ninclude "siteheader.php"; \nrequire "class.myclass.inc.php"; \n\$dataBase = new DbObj(); 

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

P.S. Действительно, в предыдущих версиях можно было просто вставить многострочный текст, но это невозможно. ;-(

+0

Да, регулярное выражение было единственным способом до сих пор, что я мог видеть эту работу, но я хотел бы спросить и посмотреть, есть ли способ, что я пропустил. Спасибо за отзыв – Martin

+1

Существует также «Редактировать/Найти/заменить структурно ...', который может быть интересным, но, похоже, он не обрабатывает какой-либо текст, а только действующий код. Мне не удалось использовать его для изменения PHP-тега (от '

+0

Я могу делать теги PHP отдельно для кода внутри. Я расскажу о том, что может предложить Структурный поиск/замена. Спасибо за информацию, dragoste. – Martin

-2

При нажатии Ctrl + F и появится строка поиска. Есть свой запрос в строке поиска, а затем нажмите на маленькую кнопку справа, который имеет маленький зеленый болен и похоже, что II.

значок в конце этого изображения:

Он будет выбирать все, что в документе, который соответствует вашему запросу, и вы можете начать печатать

Чтобы найти Que. во всем проекте.

См: https://www.jetbrains.com/help/phpstorm/2016.2/finding-and-replacing-text-in-project.html#replace1

TL; DR Нажмите Ctrl + Shift + R

+0

Я прочитал справочные страницы, на которые вы ссылаетесь, и я не вижу, где я могу найти или заменить многострочный текст по ссылке, которую вы указали. Вы можете уточнить? cheers – Martin

+0

Обновлен мой ответ. Нажмите ctrl + shift + r. Затем вы можете указать запрос, что заменить его и область действия. – Tom

+0

К сожалению, Ctrl + Shift + r ничего не делает для меня, я не помню переназначения ключей, мне интересно, возможно, вы используете старую версию PHPstorm? многострочный поиск возможен в предыдущей версии. Cheers – Martin

1

Тип Alt + Enter, чтобы добавить новую строку в любом «поиск» или «заменить» поле.

search multiline in PhpStorm

+0

Простой. Kewl. Благодарю. – gramgram

-1

На Mac: открыть инструмент «Найти» или «Заменить», нажмите в область ввода текста и нажмите следующие клавиши один раз для каждой новой линии, которую вы хотите создать:

⌘ + «Сдвиг» + «Enter»

screen grab of the multi-line search goodness

Смежные вопросы