所以我不知道 TRAMP,但你得到的解释是 Windows PowerShell 向你发送回 unicode (UTF16),每个字符都是 16 位,在本例中是字母和零,加上行尾是回车符 /换行(0xa、Oxd)。
Now for “emacs 找不到 PowerShell 的本地 shell 提示符”错误根据TRAMP 文档 http://www.gnu.org/software/tramp/ @迈克尔·阿尔比努斯建议似乎很有希望。
6.4.2 在远程主机上运行shell
在与远程主机相关的缓冲区中调用 M-x shell 会运行本地 shell,如shell-file-name
。这也可能是要在远程主机上应用的 shell 的有效文件名,但至少当本地和远程主机属于不同的系统类型(例如“windows-nt”和“gnu/linux”)时,它会失败。
您必须设置变量explicit-shell-file-name
添加到远程主机上的 shell 文件名,以便在远程主机上启动该 shell。
6.4.6 在 Windows 主机上运行远程进程在 winexe 的帮助下,可以在远程 Windows 主机上运行进程。 TRAMP 已为进程文件和启动文件进程实现了此功能。
变量tramp-smb-winexe-program必须包含本地winexe命令的文件名。远程主机上必须安装Powershell V2.0;它用于运行远程进程。
为了通过 M-x shell 在 Windows 主机上打开远程 shell,您必须设置变量explicit-shell-file-name 和explicit-*-args。例如,如果您想运行 cmd,则必须设置:
(setq explicit-shell-file-name "cmd"
explicit-cmd-args '("/q"))
如果将 powershell 作为远程 shell 运行,则设置为
(setq explicit-shell-file-name "powershell"
explicit-powershell-args '("-file" "-"))