2008-11-03 14 views
46

Esiste un sostituto in emacs per il comando vi "gf"? significa provare ad aprire il file che si trova sotto il cursore in questo momento se un nome file reale è effettivamente lì.goto-file in Emacs

Grazie

risposta

69

Si desidera che la funzione find-file-at-point (che è anche alias per ffap). Non è legato a una chiave di default, ma è possibile utilizzare

M-x ffap 

Oppure, si può mettere in .emacs del file:

(ffap-bindings) 

Questo sostituirà molti dei normali find-file combinazioni di tasti (come C-x C-f) con versioni basate su ffap. Vedi il commento in ffap.el per i dettagli.

+0

grazie CJM! bella emacs howto del giorno! Posso aprire un altro file batch chiamato dal mio file batch principale. I guest deve funzionare facilmente per C/C++ include. Anche se non penso che possa aprire la giusta classe Java :) – swdev

+0

non l'ho provato, e so che questa discussione è piuttosto vecchia, ma ho appena trovato questo: 'Puoi aprire un file sorgente Java o directory dall'istruzione import in Java. La posizione della sorgente deve essere nota per funzionare tramite ffap-java/source-directories. L'origine dovrebbe essere un nome di directory che contiene i sorgenti o un nome di archivio jar che contiene i sorgenti. Scarica la fonte qui. - cinsk' (Fonte: https://www.emacswiki.org/emacs/FindFileAtPoint) – linluk

5

Grazie, funziona abbastanza bene ma in qualche modo la versione vi (gf) è ancora un po 'più intelligente. Penso che guardi qualche variabile di percorso per i percorsi di ricerca.

Ho realizzato qualcosa che è inutilmente complicato ma funziona per me (solo in linux). Usa il comando "locate" per cercare il percorso sotto il cursore. Suppongo che potrebbe essere reso più intelligente cercando prima il percorso relativo al file corrente. scusa per le mie cattive capacità elis ... Probabilmente si può ottenere in un modo molto più carino.

mettere nel vostro .emacs, quindi utilizzare con M-x goto-file di

(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

My Emacs ha già shell-comando-stringa definito in simple.el – cjm