tramp /sudo::/path 本地打开文件,enter后emacs卡住

不给我输入密码的机会,卡顿结束timeout 设置了tramp-verbose 10 原因似乎是连接连不上,但不清楚为什么。不停的重试8万行。。。。然后timeout error

https://ws28.cn/f/83feg29n9d9 复制链接到浏览器打开 有一点也很奇怪,我locale设置都是en_US.UTF-8为什么这里会有中文

新用户只能发一张图。。,补充的

用的 zsh?

或者这里有些 hang 的排查可以先看看 EmacsWiki: Tramp Mode

我这里没有这个问题,但我以前遇到过这个问题。通常与网络方面的设置有关,比如hosts。

[[ TERM == "dumb" ]] && unsetopt zle && PS1=' ’ && return已经加上了,wiki也都看过了,也没有在网络上查到类似的问题,单一个sudo似乎只是一个subshell很难出问题,我虚拟机上也正常,我怀疑是这个显示中文密码的问题。。但是不知道为什么这里会是中文,我加上了ssh正常能用,这里也是password for 。。。:

host都设置了,我也感觉很奇怪

可能和manjaro有关,systemd那个东西搞了个新service接管了hosts,导致很多东西翻车

应该不是这个问题,我从虚拟机/ssh|sudo 连主机完全没问题,我怀疑是这个中文密码的问题,但是不懂哪里导致的这里中文

不知道,我用的是arch,有中文是因为编码是utf-8,同时系统上又有对应的字体。我估计卡住的原因是 “Looking for regexp”

好像 27 版本时, 原来都是好的, 现在用了下, 也是这个情况, 跳出个 「密码」 不知道是那里的问题, 用另一台机, 就可以, 反而本机不行了!

底层库的问题吧,因为现在是native compile了。

那怎么解决了, 难道只能 在终端, 或从另一台 机子 「tramp」过来

我最近也出现这个问题了,bash改shell prompt一点用都没,最终解决办法是把自己配置文件里面locale的设置都去掉,只在/etc/locale.conf 保留LANG=en_US.UTF-8,等于是全局英文才能用。。。

破案了,就是上面提到的那段密码提示的 regexp 的问题。tramp 使用 tramp-password-prompt-regexp 来处理密码提示,默认值为

^.*\(\(?:adgangskode\|contrase\(?:\(?:ny\|ñ\)a\)\|decryption key\|encryption key\|geslo\|h\(?:\(?:asł\|esl\)o\)\|iphasiwedi\|jelszó\|l\(?:ozinka\|ösenord\)\|m\(?:ot de passe\|ật khẩu\)\|p\(?:a\(?:rola\|s\(?:ahitza\|s\(?: phrase\|code\|ord\|phrase\|wor[dt]\)\|vorto\)\)\|in\)\|s\(?:alasana\|enha\|laptažodis\)\|wachtwoord\|лозинка\|пароль\|ססמה\|كلمة السر\|गुप्तशब्द\|शब्दकूट\|গুপ্তশব্দ\|পাসওয়ার্ড\|ਪਾਸਵਰਡ\|પાસવર્ડ\|ପ୍ରବେଶ ସଙ୍କେତ\|கடவுச்சொல்\|సంకేతపదము\|ಗುಪ್ತಪದ\|അടയാളവാക്ക്\|රහස්පදය\|ពាក្យសម្ងាត់\|パスワード\|密[码碼]\|암호\)\).*:\0? *

注意末尾这一小段里的冒号 \).*:^@? * 这里只考虑到了英文的冒号(即半角:),而中文环境下密码提示 “密码:” 用的是半角冒号。

解决方法有两个:

  1. 改用英文的密码提示,即设定环境变量 LANGUAGE=en_US.utf-8。注意设定 LANG 并不管用。
  2. 修改这个正则表达式,把冒号 : 替换成 [::]
(setq tramp-password-prompt-regexp "^.*\\(\\(?:adgangskode\\|contrase\\(?:\\(?:ny\\|ñ\\)a\\)\\|decryption key\\|encryption key\\|geslo\\|h\\(?:\\(?:asł\\|esl\\)o\\)\\|iphasiwedi\\|jelszó\\|l\\(?:ozinka\\|ösenord\\)\\|m\\(?:ot de passe\\|ật khẩu\\)\\|p\\(?:a\\(?:rola\\|s\\(?:ahitza\\|s\\(?: phrase\\|code\\|ord\\|phrase\\|wor[dt]\\)\\|vorto\\)\\)\\|in\\)\\|s\\(?:alasana\\|enha\\|laptažodis\\)\\|wachtwoord\\|лозинка\\|пароль\\|ססמה\\|كلمة السر\\|गुप्तशब्द\\|शब्दकूट\\|গুপ্তশব্দ\\|পাসওয়ার্ড\\|ਪਾਸਵਰਡ\\|પાસવર્ડ\\|ପ୍ରବେଶ ସଙ୍କେତ\\|கடவுச்சொல்\\|సంకేతపదము\\|ಗುಪ್ತಪದ\\|അടയാളവാക്ക്\\|රහස්පදය\\|ពាក្យសម្ងាត់\\|パスワード\\|密[码碼]\\|암호\\)\\).*[::]\0? *")

也可以用 customize 来改,但一定要注意你的 init 文件保存时的文件编码问题。

6 个赞

可以M-x report-emacs-bug给开发者提个issue,应该很快就能修复