Подтвердить что ты не робот

Goto файл в Emacs

Есть ли замена emacs для команды vi "gf"? то есть попытаться открыть файл, находящийся под курсором прямо сейчас если на самом деле существует реальное имя файла.

Спасибо

4b9b3361

Ответ 1

Вам нужна функция find-file-at-point (которая также сглаживается до ffap). Он не привязан к ключу по умолчанию, но вы можете использовать

M-x ffap

Или вы можете добавить файл .emacs:

(ffap-bindings)

Это заменит многие обычные привязки клавиш find-file (например, C-x C-f) с версиями на основе ffap. Подробнее см. Комментарий в ffap.el.

Ответ 2

Спасибо, это работает очень хорошо, но каким-то образом версия vi (gf) все же несколько умнее. Я думаю, что он смотрит на переменную пути для путей поиска.

Я сделал что-то, что бесполезно сложно, но работает для меня (только в Linux). Он использует команду "locate" для поиска пути под курсором. Я думаю, это можно сделать умнее, сначала просмотрев относительный путь к текущему файлу. извините за мои плохие навыки elisp... Это, вероятно, может быть достигнуто гораздо приятнее.

введите ваши .emacs, затем используйте с M-x goto-file

(defun shell-command-to-string (command)
  "Execute shell command COMMAND and return its output as a string."
  (with-output-to-string
    (with-current-buffer standard-output
      (call-process shell-file-name nil t nil shell-command-switch command))))

(defun goto-file ()
  "open file under cursor"
  (interactive)
  (find-file (shell-command-to-string (concat "locate " (current-word) "|head -c -1" )) ))