使用Emacs,如果当前缓冲区是“访问”正常文件(例如),其完整路径名为/path/to/somefile
,并且其中一个运行find-file
(C-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
以此方式运行?
答案 0 :(得分:1)
您想要“shell目录跟踪”。例如。检查dirtrack-mode
或shell-dirtrack-mode
。
shell-dirtrack-mode
尝试解析“cd”命令,(event_jr:根据我的经验,它不能始终如一地工作)。 dirtrack-mode
使用提示正则表达式,它运行良好。
答案 1 :(得分:0)
有很多方法可以解决这个问题。正如Stefan所述,有几个内置的软件包可以管理它。
我首选的方法是更改您的提示(在Emacs中时)以嵌入$PWD
,然后Emacs将其删除并使用它。这样做的好处是始终保持最新状态。我发现dirtrack-mode
有时会失去同步。
查看我的解决方案here,这是对Emacs Wiki上similar implementation的修改。