在使用eshell或ansi-term和bash时,emacs会根据您所在的目录更改default-directory变量。
因此,如果我移动到/home/user/code/project,然后使用ido-find-file打开一个文件,它将使用CWD启动ido。如果我使用ksh (我正常的shell)或zsh (尝试测试),它不能工作。是否有一个设置,或者这只是bash支持的?
谢谢
发布于 2010-11-05 06:27:01
把这个放到你的.zshrc里:
chpwd() { print -P "\033AnSiTc %d" }
print -P "\033AnSiTu %n"
print -P "\033AnSiTc %d"每次pwd更改时,都会运行chpwd()函数。以%d结尾的那一行允许您跟踪当前目录--我在函数外部重复它,以确保它在zsh第一次初始化时运行。但是Emacs要求我们首先告诉它当前用户是谁(这一行以%n结尾)。
这实际上是在term.el中解释的,如果你使用的是Ubuntu,它应该在/usr/share/emacs//lisp中。
希望这能有所帮助。
发布于 2010-08-18 13:02:46
对于这个问题,有许多解决方案。我碰巧更喜欢我的实现,它将提示符更改为包含当前路径,Emacs可以识别并使用该路径来获取您想要的行为。此外,我的解决方案隐藏了提示符中包含路径的部分,因为我觉得它很难看。
我的解决方案可以在博客文章中找到:Emacs Tip #25 Shell Dirtrack By Prompt。
然而,在Emacs Wiki或其他地方可以找到许多其他的解决方案:
https://stackoverflow.com/questions/3508387
复制相似问题