这是一个非常奇怪的问题。我认为它必然导致我ansi-term
的错误配置,但我仍然无法找到它的位置。
问题是:当我在ansi-term
并按M-x find-file
时,提示不是当前目录,而是我在之前的查找文件操作中输入的路径。因此,当我更改目录时,它仍然显示相同的目录。所以我每次都必须进入当前目录。但它在M-x shell
和M-x eshell
答案 0 :(得分:1)
在没有init文件的情况下启动Emacs时会发生同样的事情吗,即emacs -Q
?如果是这样,那就是设计的行为或(特别是如果你使用开发快照)可能是一个Emacs错误。
如果没有,则递归地对您的init文件进行二等分,以找出它的哪一部分导致此行为。为此,请使用命令comment-region
(请参阅doc中的前缀arg)来注释和取消注释文本块。注释掉你的初始文件的1/2,然后是3/4,然后是7/8,...,
每次测试未注释部分是否导致或消除有问题的行为。您将很快确定导致该行为的原因。
答案 1 :(得分:0)
由于emacs的路径与术语的路径不同,因此只能使用emacs命令“cd”进行更改。
因此,要解决此问题,我将以下代码添加到我的emacs配置文件中。方法是
我使用多项,我认为该方法在ansi-term上类似。
(defadvice term-send-input (after update-cwd)
(let* ((pid (process-id (get-buffer-process (current-buffer))))
(cwd (shell-command-to-string
(format "lsof -p %d -Fn | awk 'NR==2{print}' | sed \"s/n\\//\\//\" | tr -d '\n'" pid))))
(cd cwd)
(message (concat "change emacs path to: " cwd))))
(ad-activate 'term-send-input)
然后你可以将term-send-input的键绑定到<enter>
。当您在学期中按<enter>
时,emacs将更改为与当前学期路径相同的路径。
(cwd (file-truename (format "/proc/%d/cwd" pid)))