如何让find-file的提示符匹配Emacs shell的$ PWD?

时间:2013-03-16 17:19:34

标签: emacs

使用Emacs,如果当前缓冲区是“访问”正常文件(例如),其完整路径名为/path/to/somefile,并且其中一个运行find-fileC-x C-f),迷你缓冲区中出现的提示类似于

Find file: /path/to/▮

...光标如上所示放置▮。 IOW,默认显示的建议路径始终是包含当前缓冲区正在访问的文件的目录。

但是,如果当前缓冲区是Emacs shell进程,并且运行find-file,那么,AFAICT,提示中显示的路径仍然是已修复在shell进程启动时,$PWD 的值为,与$PWD当前值无关:

Find file: /pwd/at/startup/▮

此行为不太有用,因为启动时$PWD通常在以后变得无关紧要。如果find-file提示中显示的目录是shell进程的当前 $PWD,那么真的很好。

当前缓冲区是shell进程时,是否有一种简单的方法可以修改find-file以此方式运行?

2 个答案:

答案 0 :(得分:1)

您想要“shell目录跟踪”。例如。检查dirtrack-modeshell-dirtrack-mode

shell-dirtrack-mode尝试解析“cd”命令,(event_jr:根据我的经验,它不能始终如一地工作)。 dirtrack-mode使用提示正则表达式,它运行良好。

答案 1 :(得分:0)

有很多方法可以解决这个问题。正如Stefan所述,有几个内置的软件包可以管理它。

我首选的方法是更改​​您的提示(在Emacs中时)以嵌入$PWD,然后Emacs将其删除并使用它。这样做的好处是始终保持最新状态。我发现dirtrack-mode有时会失去同步。

查看我的解决方案here,这是对Emacs Wiki上similar implementation的修改。