如果使用除bash之外的任何其他内容,我如何才能拥有term.el(ansi-term)跟踪目录

Ada*_*dam 5 emacs bash ksh zsh ido-mode

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

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

谢谢

ior*_*r3k 9

把它放在你的.zshrc中:

chpwd() { print -P "\033AnSiTc %d" }

print -P "\033AnSiTu %n"
print -P "\033AnSiTc %d"
Run Code Online (Sandbox Code Playgroud)

每次pwd更改时都会运行chpwd()函数.以%d结尾的行是允许您跟踪当前目录的行 - 我在函数外部重复它以确保在zsh首次初始化时运行它.但是Emacs要求我们首先告诉它当前用户是谁(以%n结尾的行).

这实际上是在term.el中解释的,如果你使用的是Ubuntu,它应该在/ usr/share/emacs // lisp中.

希望这可以帮助.

  • 做出一个更改对我来说非常有用:测试您是否首先进入emacs。`if [-n“ $ INSIDE_EMACS”]; 然后chpwd(){打印-P“ \ 033AnSiTc%d”}打印-P“ \ 033AnSiTu%n”打印-P“ \ 033AnSiTc%d” fi (2认同)

Tre*_*son 0

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

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

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

  • 我不确定这个解决方案是否适用于该特定问题 - shell 模式和 term 模式是完全不同的野兽。 (2认同)