You are here

Поиск и замена

Как в любом текстовом редакторе, в Sublime Text 2 есть поиск. Он может осуществляется в различных режимах и с учетом различных параметров. Например, только внутри одного файла или по всем файлам проекта, по выделенной области, с учетом регистра или с использованием регулярных выражений.

Обычный поиск

Все доступные варианты поиска можно увидеть в меню  Find .... Вызвав любую из панелей поиска, например,  Find Find..., вы можете сразу же набрать строку для поиска. В том случае, если совпадения будут найдены, редактор переместит вас к первому вхождению заданной строки, а также подсветит все остальные совпадения.

Наряду с обычным поиском, существует еще дополнительный  Find Incremental Find, который вызывается сочетанием клавиш ctrli. Его единственное отличие состоит в том, что после нажатия на Enter, поиск остановится на первом найденном совпадении. Какой из вариантов использовать, дело исключительно личных предпочтений.

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

altr Поиск с использованием регулярных выражений.
altc Чувствительность к регистру.
altw Поиск запроса целиком.
Поиск в обратном направлении.
Бесконечный поиск.
Поиск внутри выделенного фрагмента.
Подсвечивать совпадения.
Замена с сохранением регистра символов.
Выводить результат поиска вместе с контекстом.
Использовать буфер.
altenter Найти все.
ctrlaltenter Заменить все.

Так же, вы можете воспользоваться рядом стандартных сочетаний клавиш как для вызова панели поиска, так и для получения результата.

Поиск и замена

Поиск с заменой мало чем отличается от обычного поиска, кроме самого процесса замены. На чем стоило бы остановится, так это использование регулярных выражений. Если вы используете сложные выражения и вам необходимо подставить результат поиска в замену, то следует использовать следующие сочетания символов \1, \2, \3 и так далее в зависимости от подстановки необходимого подвыражения.

Например: выражение <p>(.+?)</p> со строкой замены \1 удалит все теги <p> и оставит текст внтури них нетронутым.

Поиск по файлам

Поиск по всем файлам, которые добавлены в проект. Вызывается нехитрым хоткеем ctrlshiftf или из меню  Find Find in Files.... К сожалению, отображения процесса поиска, то есть переход от результата к результату, происходит только внутри открытого файла. Для того, чтобы увидеть результат полностью, нужно нажать кнопку Find справа от строки запроса или Enter. Откроется отдельная вкладка с результатами поиска, со строками, в которых найдены совпадения с вашим запросом.

Режим имеет неплохой фильтр. Это поле «Where». Здесь вы можете указать, где именно вы хотите призвести поиск. Например, зпрос *.* будет искать везде, а *.*,-*.txt везде, кроме файлов с расширением txt. Также необязательно искать только внутри файлов проекта. Вы можете добавить полный путь к папке, в которой желаете произвести поиск и указать маски для типов файлов. Правда, в этом случае, поиск внутри проекта происходить не будет.

Быстрый поиск

Не всегда нужно вызывать панель поиска и вручную набирать то, что мы хотим найти. Если вам нужно найти что-то, что уже есть в тексте, например, переменную, то установите на нее курсор и нажмите ctrle. Эта переменная, будет скопирована в буфер поиска и для того, чтобы найти ее следующее вхождение, достаточно просто продолжить, нажав f3. Если вы хотите найти и выделить сразу все упоминания переменной, нажмите altf3.

Отдельно стоит сказать о последовательном поиске и выделении. Если установить курсор на переменную или выделить часть текста и затем нажать ctrld, то автоматически произойдет несколько действий: копирование строки в буфер поиска, поиск и выделение найденного текста. При повтором нажатии ctrld будет найдено и выделено следующее вхождение искомого текста, при этом, предыдущее выделение не пропадет. Таким образом, можно параллельно редактировать текст в нескольких местах.

Комментарии

Дима's picture

Исправьте, пожалуйста, орфографию слова Incremental. Глаза режет.

loac's picture

Спасибо.

Макс's picture

Скажите, есть ли настройка, чтобы при изменении наименования открывающего тега, автоматически изменялся и закрывающий (например нужно заменить <div> на <span>) ?

loac's picture

Изначально такой возможности нет. Самый простой вариант, использовать селектор по ctrld. Но это не всегда подойдет, так как он выбирает все совпадения подряд.

Второй вариант, установить Emmet. В нем есть возможность изменить пару тегов shiftctrl'.

Макс's picture

Можно ли в sublime кодировать e-mail адреса, как здесь http://www.wbwip.com/wbw/emailencoder.html
Может быть есть плагин какой-нибудь

loac's picture

К сожалению, ничего подобного не встречал.

aabcd's picture

Как удалить лишние переводы строк совершенно не очевидно.

loac's picture

Смотря что считать лишними переводами строк.

aabcd's picture

Текст, в котором все строки разделены пустыми строками, нужно избавить от пустых строк. Получилось так:
1) Ставим курсор в конец строки
2)Опускаем его мышкой на 2 позиции вниз,
поставив его на начало следующей строки с текстом (перед текстом)
3) Жмем Ctrl+H
4) Мышкой отжимаем кнопку In Selection и нажимаем Regular expression
5) В поле Replace With печатаем \n
6) Жмем Replace All

loac's picture

 Find Replace...

Find What: ^\n не подходит?

aabcd's picture

Неточная инструкция, точнее:Текст, в котором все строки разделены пустыми строками, нужно избавить от пустых строк. Получилось так:
1) Ставим курсор в конец строки
2)Опускаем его мышкой на 2 позиции вниз,
поставив его на начало следующей строки с текстом (перед текстом), жмем Ctrl+C
3) Жмем Ctrl+H, жмем Ctrl+V
4) Мышкой отжимаем кнопку In Selection и нажимаем Regular expression
5) В поле Replace With печатаем \n
6) Жмем Replace All