2008-11-03 12 views
46

Gibt es in Emacs einen Ersatz für den Befehl vi "gf"? Bedeutung versuchen, die Datei zu öffnen, die sich gerade unter dem Cursor befindet , wenn ein echter Dateiname tatsächlich da ist.goto-Datei in Emacs

Dank

Antwort

69

Sie wollen die find-file-at-point Funktion (die auch ffap aliased ist). Es ist nicht auf einen Schlüssel standardmäßig gebunden, aber Sie können

M-x ffap 

verwenden Alternativ können Sie in Ihrer .emacs Datei setzen:

(ffap-bindings) 

Dies viele der normalen find-file Tastenbelegungen ersetzen wird (wie C-x C-f) mit ffap -basierten Versionen. Siehe den Kommentar in ffap.el für Details.

+0

dank CJM nutzen! schöne Emacs Howto des Tages! Ich kann eine andere Batch-Datei öffnen, die von meiner Haupt-Batch-Datei aufgerufen wird. Ich Gast es muss leicht für C/C++ arbeiten. Obwohl ich glaube nicht, dass es die richtige Java-Klasse öffnen kann :) – swdev

+0

Ich habe es nicht getestet, und ich weiß, dass diese Diskussion ziemlich alt ist, aber ich habe gerade gefunden: 'Sie können eine Java-Quelldatei öffnen oder Verzeichnis aus der Import-Anweisung in Java. Es muss bekannt sein, dass der Speicherort der Quelle über ffap-java/source-directories funktioniert. Die Quelle sollte entweder ein Verzeichnisname sein, der die Quellen enthält, oder ein Jar-Archivname, der die Quellen enthält. Laden Sie die Quelle hier herunter. - cinsk' (Quelle: https://www.emacswiki.org/emacs/FindFileAtPoint) – linluk

5

Danke, es funktioniert ganz gut, aber irgendwie ist die vi (gf) Version immer noch etwas schlauer. Ich denke, es sieht eine Pfadvariable für Suchpfade aus.

Ich habe etwas gemacht, das unnötig kompliziert ist, aber funktioniert für mich (nur in Linux). Mit dem Befehl "locate" wird nach dem Pfad unter dem Cursor gesucht. Ich denke, es könnte klüger gemacht werden, indem man zuerst den relativen Pfad zur aktuellen Datei durchsucht. Entschuldigung für meine schlechte elisp Fähigkeiten ... Es kann wahrscheinlich auf eine viel schönere Weise erreicht werden.

gesetzt in Ihre .emacs, dann mit M-x goto-Datei

(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

Mein Emacs hat bereits Shell-Befehl-zu-String in simple.el definiert – cjm