如何查找文件';s提示符匹配Emacs外壳';s$PWD?

如何查找文件';s提示符匹配Emacs外壳';s$PWD?,emacs,Emacs,对于Emacs,如果当前缓冲区正在“访问”一个普通文件(例如,其完整路径名为/path/to/somefile),并且运行查找文件(C-x C-f),则小缓冲区中出现的提示类似于 Find file: /path/to/▮ …光标的位置如上所示▮. 默认情况下,建议的路径总是指向包含当前缓冲区正在访问的文件的目录 但是,如果当前缓冲区是一个Emacs外壳进程,并且运行了find file,那么,AFAICT,当外壳进程启动时,提示中显示的路径保持固定在$PWD的值,而与$PWD的当前值无关:

对于Emacs,如果当前缓冲区正在“访问”一个普通文件(例如,其完整路径名为
/path/to/somefile
),并且运行
查找文件(
C-x C-f
),则小缓冲区中出现的提示类似于

Find file: /path/to/▮
…光标的位置如上所示▮. 默认情况下,建议的路径总是指向包含当前缓冲区正在访问的文件的目录

但是,如果当前缓冲区是一个Emacs外壳进程,并且运行了
find file
,那么,AFAICT,当外壳进程启动时,提示中显示的路径保持固定在
$PWD
的值,而与
$PWD
的当前值无关:

Find file: /pwd/at/startup/▮
这种行为没有那么有用,因为启动时的
$PWD
通常在以后变得无关紧要。如果
find file
提示符中显示的目录是shell进程当前的
$PWD
,那就太好了

当当前缓冲区是一个shell进程时,是否有一种简单的方法来修改
查找文件
,使其以这种方式运行?

您想要“shell目录跟踪”。例如,检查
dirtrack模式
shell dirtrack模式

shell dirtrack模式
尝试解析“cd”命令(event_jr:在我的经验中,这并不一致)
dirtrack模式
使用提示符regexp,它工作得很好。

您想要“shell目录跟踪”。例如,检查
dirtrack模式
shell dirtrack模式


shell dirtrack模式
尝试解析“cd”命令(event_jr:在我的经验中,这并不一致)
dirtrack模式
使用提示符regexp,这非常有效。

有多种方法可以管理此模式。如前所述,有两个内置的包来管理它

我更喜欢的方法是改变提示符(在Emacs中时),将
$PWD
嵌入其中,然后Emacs将其去掉并使用它。这样做的好处是始终保持最新。我发现,
dirtrack模式
有时会不同步


查看我的解决方案,它是对Emacs Wiki上的a的修改。

有很多方法可以管理它。如前所述,有两个内置的包来管理它

我更喜欢的方法是改变提示符(在Emacs中时),将
$PWD
嵌入其中,然后Emacs将其去掉并使用它。这样做的好处是始终保持最新。我发现,
dirtrack模式
有时会不同步


查看我的解决方案,它是对Emacs Wiki上的a的修改。

Emacs实际上不知道shell当前的工作目录是什么,但也请参见Emacs实际上不知道shell当前的工作目录是什么,但请参见Emacs现在提供的
dirtrack模式**这不同于
shell dirtrack模式
。Emacs现在带有
dirtrack模式
**这与
shell dirtrack模式不同。