Emacs: самый быстрый способ открыть файл, чье местоположение неизвестно

Каков самый простой способ открыть txt файл, путь которого должен быть найден с помощью команды find shell?

Например, скажем, я хочу открыть файл, который, как я знаю, уникален, с именем example.txt и который, как я знаю, "где-нибудь, я могу найти его, используя команду поиска оболочки".

В настоящее время я делаю следующее:

Я делаю C-u (универсальный аргумент), тогда M-! (команда оболочки)

Затем я вхожу в find, например:

find . -iname "example.txt"

Затем в буфере появился полный путь (который я не знал ранее), я разрезал его, затем я ударил C-x C-f, я удалю то, что написано по умолчанию, а затем вставьте то, что я разрезал раньше.

Это кажется немного длинным и требует довольно много нажатий клавиш, cut'n'pasting и т.д.

Есть ли простой способ сделать то же самое (без написания новой пользовательской команды Emacs)?

Ответ 1

Используя только встроенные функции, я бы:

  • Перейдите в буфер оболочки: M-x shell
  • Запустите команду find.
  • Переместите курсор вверх так, чтобы он находился поверх найденного пути к файлу.
  • Запустите команду find-file-at-point: M-x ffap.

Я использую find-file-at-point достаточно часто, чтобы привязать его к выделенному ключу, s-\ (супер-обратная косая черта).

Ответ 2

M-x find-name-dired

Введите директорию (по умолчанию - текущую) и имя файла (shell globs работают тоже), и вы получите виртуальный обработанный буфер с результатами. Перейдите к файлу, который вы хотите, и нажмите "a"

Ответ 3

Попробуйте ifind.el

M-x ifind /some/starting/point/example.txt

Будет искать example.txt в каталогах ниже /some/starting/point.

Ответ 4

M-x locate - это самый быстрый способ найти и открыть файл, особенно. если вы знаете точное имя файла, в emacs.

Ответ 5

Если ваша папка представляет собой "проект" - что-то под контролем версии или имеет маркер корневой папки, такой как project.el,.dir-locals.el и т.д., вы можете использовать find-file-in-project, что, на мой взгляд, является отличным решением этой проблемы.

Ответ 6

Также посмотрите LocateFilesAnywhere

Я использую M-x anything-locate

Ответ 7

В Icicles вы можете найти файлы, сопоставляя не только относительное имя файла, но и любые части пути. Вы можете использовать подстроку, регулярное выражение и нечеткое соответствие. Вы можете И вместе несколько шаблонов поиска (прогрессивное завершение). См. Команду multi-command icicle-locate-file.

http://www.emacswiki.org/emacs/Icicles_-_File-Name_Input

Ответ 8

M-x find-dired RET

тогда у вас есть загруженный буфер, показывающий ваши файлы, возвращаемые find. Вы можете использовать классическую командную команду для открытия/перемещения/переименования... файлов и каталогов.

Ответ 9

Я удивлен, что globalff не упоминается как один из жизнеспособных вариантов. Конечно, для этого требуется команда locate, но она довольно быстро и полезна, когда вы не можете вспомнить точное имя.