Как мне заполнить пути к файлам в emacs?

14

Например, я редактирую конфигурационный файл и хочу ввести путь. Есть ли плагин для Emacs, который позволяет вам завершить путь к файлу в этом буфере? Я искал это, и есть как плагин для завершения миллиарда там.

Джейсон Бейкер
источник
1
Я не понимаю, о чем вы спрашиваете здесь. Современные emacen имеют завершение пути в мини-буфере (например, при использовании find-file). Хотите подобное поведение в буфере контента?
dmckee --- котенок экс-модератора
1
@dmckee - Да, это именно то, что я ищу.
Джейсон Бейкер
@dmckee Это специфическая ОС? У меня было завершение имени файла в Find File в Ubuntu, но в OSX нет завершения. Например, у меня есть файл с именем «reference» в корне, и я в мини-буфере: «Find file: ~ /», и я ввожу «ref», и я ожидаю завершения, но ничего не происходит. Нужно ли что-то устанавливать?
Зейнел
@Zeynel У меня тоже хорошо работает в Mac OS. Либо с установленной версией Apple, либо с версией homebrew. Также работал с версией fink на моей старой машине.
dmckee --- котенок экс-модератора
@dmckee Странно. Может быть, я задам новый вопрос. Благодарю.
Зейнел

Ответы:

10

Попробуйте Hippie Expand , который, как одна из его возможностей, имеет ' try-complete-file-name. Вы можете изменить порядок и список функций расширения, которые hippie expand будет использовать для расширения имени файла.

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

(global-set-key (kbd "C-M-/") 'my-expand-file-name-at-point)
(defun my-expand-file-name-at-point ()
  "Use hippie-expand to expand the filename"
  (interactive)
  (let ((hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name)))
    (call-interactively 'hippie-expand)))
Трей Джексон
источник
14

Я обычно набираю Ctrl- X Ctrl- Fкак я хотел бы открыть файл, но вместо нажатия клавиши RETввода нажмите Ctrl- A Ctrl- K Ctrl- Gскопировать путь , а затем вставьте его в буфер я редактировал с Ctrl- Y.

Мне это не нужно достаточно часто, но если бы я действительно хотел лучшего решения, я бы определенно использовал решение Трея Джексона hippie-expand. Я подумал о том , как hippie-expandможет быть лучший способ сделать это , когда первый с ответом, но я не знал , и был слишком ленив , чтобы посмотреть его, так что я просто написал то , что я делаю.

Тедди
источник
Неуклюжий и не элегантный, но работающий. Я должен признаться, что делал это время от времени сам. Я все еще интересуюсь более аккуратным решением, хотя ...
dmckee --- котенок экс-модератора
В самом деле. Хотя на самом деле это не намного сложнее, чем печатать вручную.
Джейсон Бейкер
1
@ Джейсон Бейкер: Это зависит от того, знаете ли вы точное имя файла или вам нужно немного изучить его.
Тедди
6

Ваниль, из коробки

M-x comint-dynamic-complete-filename

работает вне режима коминтов. Конечно, вы можете использовать динамическое расширение Минибуфер на использование меньше нажатий клавиш , чтобы получить к нему (например, Mx ЦОИ NT- ду namic- с omplete -f ilename). Или, если вы будете использовать его часто, вы можете привязать его к последовательности клавиш по вашему выбору, используя global-set-key.

Рон Каминский
источник
2

Это также возможно сделать с помощью автозаполнения компании, если они company-filesесть в списке company-backends(по умолчанию в моей установке) или явно, позвонив company-files.

fikovnik
источник
0

Недавно я обнаружил работы Томохиро Мацуямы (@ m2ym), и я был очень впечатлен качеством его пакетов emacs.

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

Посмотрите на автозаполнение Tomo ( http://auto-complete.org/doc/manual.html ), его легко установить (я нахожусь в Linux) и покрывает многие потребности автозаполнения в современном стиле.

Конечно, ваш запрос на завершение имен файлов в буфере полностью покрыт.

Наконец, если вам случится сделать Ruby, не пропустите его расширение RSense ; опять же, лучший в своем роде.

Арно Море
источник
Ссылка битая
xuhdev
И вот новая ссылка: github.com/auto-complete/auto-complete/blob/master/doc/…
Краб