2008-11-03 11 views
46

¿Hay un sustituto en emacs para el comando vi "gf"? lo que significa que intenta abrir el archivo que está bajo el cursor ahora si realmente hay un nombre de archivo real allí.goto-file en Emacs

Gracias

Respuesta

69

desea que la función find-file-at-point (que también es un alias para ffap). No está obligado a una clave por defecto, pero se puede utilizar

M-x ffap 

O, usted puede poner en su .emacs archivo:

(ffap-bindings) 

Esto reemplazará muchos de los find-file asociaciones de teclas normales (como C-x C-f) con ffap-versiones basadas. Vea el comentario en ffap.el para más detalles.

+0

gracias CJM! buen emacs howto del día! Puedo abrir otro archivo por lotes llamado desde mi archivo principal por lotes. I guest debe ser fácil trabajar para C/C++ include. Altough, no creo que pueda abrir la clase Java correcta :) – swdev

+0

no lo he probado, y sé que esta discusión es bastante antigua, pero acabo de encontrar esto: 'Puedes abrir un archivo fuente Java o directorio de la declaración de importación en Java. Se debe saber que la ubicación de la fuente funciona a través de ffap-java/source-directories. La fuente debe ser un nombre de directorio que contenga las fuentes, o un nombre de archivo jar que contenga las fuentes. Descargue la fuente aquí. - cinsk' (Fuente: https://www.emacswiki.org/emacs/FindFileAtPoint) – linluk

5

Gracias, funciona bastante bien, pero de alguna manera la versión vi (gf) es todavía algo más inteligente. Creo que se ve una variable de ruta para las rutas de búsqueda.

Hice algo innecesariamente complicado pero que funciona para mí (solo en linux). Utiliza el comando "localizar" para buscar la ruta debajo del cursor. Supongo que podría hacerse más inteligente buscando primero la ruta relativa al archivo actual. disculpa por mis malas habilidades de elisp ... Probablemente se puede lograr de una manera mucho más agradable.

poner en su .emacs, a continuación, utilizar con M-x goto-archivo

(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")))) 
+2

Mi Emacs ya tiene shell-command-to-string definido en simple.el – cjm