使用 eshell 或 ansi-term 和 bash 时,emacs 会根据您所在的目录更改默认目录变量。
因此,如果我移动到/home/user/code/project
然后使用 ido-find-file 打开一个文件,它会以 CWD 启动 ido。如果我使用 ksh(我的普通 shell)或 zsh(尝试测试)它不起作用。是否有设置或仅在 bash 下支持?
谢谢
把它放在你的 .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 中。
希望这可以帮助。
这个问题有很多解决方案。我碰巧更喜欢我的实现,它将提示更改为包含当前路径,Emacs 识别并使用它来获得您想要的行为。此外,我的解决方案隐藏了包含路径的提示部分,因为我觉得它很难看。
我的解决方案可以在博客文章中找到:Emacs Tip #25 Shell Dirtrack By Prompt。
但是,在 Emacs Wiki 或其他地方可以找到许多其他解决方案: