Какой режим поиска лучше всего подходит для EMACS? - PullRequest
4 голосов
/ 21 мая 2010

Какой лучший пакет для поиска строки в нескольких файлах в EMACS.Я знаю про grep и тому подобное, но мне бы хотелось, чтобы с ним было что-то более плавное.

Ответы [ 5 ]

7 голосов
/ 21 мая 2010

В Emacs есть три встроенные функции grep: grep, find-grep (или grep-find) и rgrep.

Первые два работают, позволяя пользователю редактировать командную строку grep напрямую. Я обычно использую третий, rgrep, из "рекурсивного grep". Это немного удобнее, так как он запрашивает у пользователя параметры поиска (строку поиска, типы файлов и каталог) один за другим, предоставляет настраиваемые значения по умолчанию и автоматически игнорирует некоторые распространенные файлы и каталоги, которые вы обычно не хотите искать, например например, файлы .svn или .o.

Затем существует ack и его интерфейс для Emacs: ack.el , поведение по умолчанию которого аналогично rgrep, но его можно настроить для использования параметров, предоставляемых ack .

2 голосов
/ 21 мая 2010

На тот случай, если вы еще не прочитали его - на странице EmacsWiki GrepMode есть множество полезных советов.

0 голосов
/ 21 августа 2011

Зависит от того, что вы подразумеваете под поиском строки. Как уже упоминали другие, grep очень хорош в том, что он делает. Я использую это все время, каждый день.

Но если ваша "строка" - это, скажем, последовательность слов внутри предложения (которая может быть многострочной), то grep может оказаться не тем, что вы хотите.

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

Принимая во внимание, что grep всегда использует строки в качестве контекстов поиска, с Сосульками поиск вы не ограничены в том, как вы определяете контексты для поиска. Контексты не должны разделять (исчерпывать) файл; они могут охватывать столько текста файла, сколько вам нужно.

Помимо других возможностей, вы можете использовать Emacs вещь-в-точке определения для различных типов THING в качестве контекстов поиска. Например, вы можете использовать команду icicles-search-thing с sentence в качестве типа THING, чтобы использовать предложения в качестве контекстов поиска.

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

http://www.emacswiki.org/emacs/Icicles_-_Search_Commands%2c_Overview

0 голосов
/ 22 мая 2010

В качестве альтернативы я нахожу dired-mode полезным, особенно когда используется либо с dired-mark-files-regexp (% m ), либо с dired-mark-files-containing-regexp, чтобы выбрать, что нужно искать, а затем dired-do-search ( A ).

0 голосов
/ 22 мая 2010

Режим Dired также позволяет выполнять поиск по отмеченным файлам с помощью функции dired-do-search.

И ibuffer позволяет вам выполнять общий поиск в emacs через несколько буферов, используя неудобную последовательность клавиш M-s a C-s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...