首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ansi-term在当前目录下找不到文件?

ansi-term在当前目录下找不到文件?
EN

Stack Overflow用户
提问于 2013-12-22 13:21:19
回答 2查看 486关注 0票数 2

这是个很奇怪的问题。我认为这一定是导致我的ansi-term配置错误的原因,但我仍然找不出它在哪里。

问题是:当我在ansi-term中按M-x find-file时,提示符不是当前目录,而是我在前一个查找文件操作中输入的路径。因此,当我改变目录时,它仍然显示相同的目录。所以每次我都要输入当前目录。但是它在M-x shellM-x eshell中运行得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-22 15:41:51

如果没有init文件启动Emacs,也就是emacs -Q,会发生同样的情况吗?如果是这样的话,那就是设计的行为,或者(特别是如果您使用开发快照)可能是Emacs错误。

如果没有,那么递归地对init文件进行分割,找出它的哪一部分会导致这种行为。要做到这一点,可以使用命令comment-region (请参阅文档中的前缀arg )来注释和取消注释一个文本块。注释掉init文件的1/2,然后是3/4,然后是7/8,.,每次测试未注释部分是否导致或消除了问题行为。您将非常迅速地确定是什么导致了这种行为。

票数 1
EN

Stack Overflow用户

发布于 2014-02-07 03:04:05

由于emacs的路径与术语的路径不同,所以只能使用emacs命令"cd“来更改。

因此,为了解决这个问题,我将以下代码添加到emacs配置文件中。方法是

  1. 找出当前期限的pid
  2. 查找此pid的当前工作目录(Cwd)。

我使用多项,我认为方法将类似于ansi项.

代码语言:javascript
复制
(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)

然后您可以将术语发送输入的键绑定到<enter>。当按下术语中的<enter>时,emacs将更改为与当前术语路径相同的路径。

顺便说一句,我用的是Mac Os。如果您在Linux上,可以使用以下代码查找cwd。

代码语言:javascript
复制
(cwd (file-truename (format "/proc/%d/cwd" pid)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20729884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档