2008-11-03 28 views
46

vi“gf”命令在emacs中有替代吗? 意思是如果实际上有一个真实的文件名,尝试打开目前光标下的文件 。Emacs转到文件

感谢

回答

69

你想要find-file-at-point功能(也化名为ffap)。这不是绑定到默认的关键,但你可以使用

M-x ffap 

或者,你可以把你的.emacs文件:

(ffap-bindings) 

这将替换正常find-file键绑定的许多(如C-x C-f )与ffap的版本。详情请参阅ffap.el中的注释。

+0

感谢CJM使用!不错的emacs howto的一天! 我可以打开从我的主批处理文件调用另一个批处理文件。 我来宾,它必须很容易为C/C++包括工作。 Altough,我不认为它可以打开正确的Java类:) – swdev 2011-01-20 15:42:57

+0

我还没有测试过它,我知道,这个讨论很旧,但我刚刚发现:`你可以打开一个Java源文件或者来自Java中的import语句的目录。必须知道源的位置是通过ffap-java/source-directories工作的。源应该是包含源的目录名称,或者是包含源的jar归档文件名称。在这里下载源代码。 - cinsk`(来源:https://www.emacswiki.org/emacs/FindFileAtPoint) – linluk 2016-05-04 18:20:52

5

谢谢,它工作得很好,但不知何故,vi(gf)版本是 仍然有点更聪明。我认为它会查找搜索路径的一些路径变量。

我做了一些不必要的复杂但为我工作(只在Linux中)。 它使用“locate”命令来搜索光标下的路径。 我想它可以通过首先搜索当前文件的相对路径变得更聪明。 对我的不良elisp技能感到抱歉......它可能以更好的方式实现。

把你的.emacs,然后用M-X转到文件

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