背景
工作原因,需要使用某个只有 Windows 版本的 IDE。本机是 macOS 系统,目前在使用 Microsoft Remote Desktop 进行远程操作。由于被 Emacs 宠坏,十分不习惯 IDE 的编辑环境,因此想从本地通过 TRAMP 远程编辑代码,只用 IDE 进行编译和调试。
当前状态
已经可以通过 ssh
远程连接到 Windows 电脑,并在命令行中用 cmd.exe
的命令进行类似下面的操作:
ssh user@server
password: ******
dir
cd my/path
但如果我尝试用 TRAMP 连接,例如:C-x C-f
,输入 /ssh:user@server
,输入密码,Emacs 就会卡死,只能 C-g
取消。在网上搜索了很久,尝试了 /sftp:
,/sshx:
,/plink:
,有些仍然卡死,有些不会卡死,会出现类似下面的错误,但最终都不能使用 dired
或者直接编辑文件。
'env' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Windows\system32\conhost.exe
想请教大家,如何才能利用 TRAMP 像连接 *nix 电脑一样,顺畅连接 Windows 10 电脑?
rua
2024 年3 月 20 日 02:02
2
可能是卡在了匹配 shell 的 prompt
可以看看 emacs wiki 有相关的解决方法不过是针对 Linux 的
也可以调整 tramp-verbose 看下 日志
第一个 stackexchange 的回复中说使用 /sftp:
,我尝试过失败了。不过这次留意看了一下,其实是我的 Emacs (30.0.50) 不支持 sftp。我也不清楚如何才能支持。
第二个本站的问题,似乎是讨论如何在 Windows 上用 TRAMP,和我的情况不同。我也在我的 remote Windows 上安装并配置了 PuTTY,没有解决问题。
不过仍然感谢回复。
Emacs wiki 上只提到如何在 Windows 上使用 TRAMP,没有说如何通过 TRAMP 访问 Windows。另外,我也试了上面说的方法,没有解决问题。
我把 tramp-verbose
从默认 3 改到了 10,尝试用 /plink:
访问,得到下面的日志:
12:35:01.829957 tramp-process-actions (3) # Waiting for prompts from remote shell...failed
12:35:01.829988 tramp-maybe-open-connection (3) # Opening connection nil for [email protected] using plink...failed
12:35:01.830913 tramp-flush-connection-properties (7) # *tramp/plink [email protected] * nil
12:35:01.830949 tramp-get-connection-property (7) # process-buffer nil; cache used: t
12:35:01.831004 tramp-get-file-property (8) # / file-truename nil; inhibit: 10; cache used: nil; cached at: nil
12:35:01.831035 tramp-flush-directory-properties (8) # /
12:35:01.831076 tramp-flush-connection-properties (7) # (tramp-file-name plink user nil 192.168.x.xxx nil nil nil) (first-password-request process-buffer null-device)
修改 shell prompt 的说法我印象中见到过,也尝试了,错误信息确实发生了变化,但最终还没能成功。
Anyway,感谢回复~
记得 putty 版本也有讲究,忘记要大于哪个版本了。现用得0.75
翻了下org文件,找到了:
bash, ssh, unix, putty
貌似这个也是说如何在 Windows 上使用 TRAMP 访问远程的 *nix。我现在想要的是反过来,从 macOS 通过 TRAMP 访问 Windows 10 上的文件。
LdBeth
2024 年3 月 21 日 01:34
11
Tramp 手册里推荐用 smb
3.6 Using ‘smbclient’
=====================
In order to access a remote MS Windows host or Samba server, the
‘smbclient’ client is used. The remote file name syntax is
‘/smb:user%domain@host:/path/to/file’. The first part of the local file
name is the share exported by the remote host, ‘path’ in this example.
smbclient
需要另外安装 samba
,macOS 自带的 SMB 是 FreeBSD 的实现不是 Samba,没有这个命令。
当然在 Windows 上也要设定 SMB 文件共享。
如需要在 Windows 上运行 shell,需要在 Samba 同时另外装 winexe
Windows 电脑上是安装了 WSL 的,但似乎并不能自动解决问题,我也没有搜到需要如何配置。