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, но она довольно быстро и полезна, когда вы не можете вспомнить точное имя.