6

使用 eshell 或 ansi-term 和 bash 时,emacs 会根据您所在的目录更改默认目录变量。

因此,如果我移动到/home/user/code/project然后使用 ido-find-file 打开一个文件,它会以 CWD 启动 ido。如果我使用 ksh(我的普通 shell)或 zsh(尝试测试)它不起作用。是否有设置或仅在 bash 下支持?

谢谢

4

2 回答 2

10

把它放在你的 .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-11-04T22:27:01.260 回答
0

这个问题有很多解决方案。我碰巧更喜欢我的实现,它将提示更改为包含当前路径,Emacs 识别并使用它来获得您想要的行为。此外,我的解决方案隐藏了包含路径的提示部分,因为我觉得它很难看。

我的解决方案可以在博客文章中找到:Emacs Tip #25 Shell Dirtrack By Prompt

但是,在 Emacs Wiki 或其他地方可以找到许多其他解决方案:

于 2010-08-18T05:02:45.617 回答