gpt4 book ai didi

windows - 将 dos shell 目录与 emacs 对齐 'working directory'

转载 作者:可可西里 更新时间:2023-11-01 14:49:55 35 4
gpt4 key购买 nike

在 Windows Emacs 中,我经常使用 dos 提示符。 (M-x shell )大多数时候,我的 emacs 工作目录与提示目录是最新的。例如,当我的提示目录是 c:\TEMP\project 并且我执行 C-x f 时,它提示从 c:\temp\project 获取文件,这是期望的行为。

有时,emacs 的工作目录和 shell 的工作目录之间的对齐会丢失,尤其是在使用/D 标志时 (cd/D E:\TEMP\other-project)。有没有办法恢复这种对齐方式?

我在 emacs i386-mingw-nt6.1.7601 上

最佳答案

M-x shell-resync-dirs RET

或者简单地(默认):M-RET

Resync the buffer's idea of the current directory stack.
This command queries the shell with the command bound to
`shell-dirstack-query' (default "dirs"), reads the next
line output and parses it to form the new directory stack.
DON'T issue this command unless the buffer is at a shell prompt.
Also, note that if some other subprocess decides to do output
immediately after the query, its output will be taken as the
new directory stack -- you lose. If this happens, just do the
command again.

然而,YMMV 在 dos 中。

在我看来你需要 (setq shell-dirstack-query "cd"),因为默认的 dirs 命令在 dos 中不存在.没有参数的 cd 似乎是需要的。

在我的 win32 机器上,我看到我的所有命令都被回显,这会干扰 shell-resync-dirs 尝试读取正确的目录,因此您可能需要引用 http://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Shell-echo.html

然而,尽管如此,它仍然不可靠。我相信路径中的空间正在抛弃它。如果您没有空格,则可能没问题。

编辑: 是的,其中有一个不太理想的正则表达式试图解析目录:

;; regexp = optional whitespace, (non-whitespace), optional whitespace
(string-match "\\s *\\(\\S +\\)\\s *" dl i) ; pick off next dir

我不确定这里有哪些潜在的可移植性问题,但您可以根据自己的目的将其更改为以下内容:

;; regexp = optional whitespace, everything up until the last non-whitespace, optional whitespace
(string-match "\\s *\\(.+\\S +\\)\\s *" dl i) ; pick off next dir

该代码在 M-x find-function RET shell-resync-dirs RET

我看到有一些相关的 Emacs 错误报告(1160711608)。您可能想要跟进这些内容。

关于windows - 将 dos shell 目录与 emacs 对齐 'working directory',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883150/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com