我经常使用ido进行自动完成,并通过ssh访问远程服务器.我.emacs包括以下几行:
(require 'tramp)
(setq tramp-default-method "ssh")
(ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
Run Code Online (Sandbox Code Playgroud)
当我浏览远程服务器的内容时,我想禁用Ido完成.请注意,变量ido-enable-tramp-completion与我的问题无关.考虑一下/root@site.com#1234:/var/www/file.txt.我需要Ido 不要在冒号(远程文件路径)之后扣除部分,我不关心冒号之前的部分.我使用ssh,每次运行ido-find-file时Ido使Emacs滞后几秒钟,当ssh超时结束时,Tramp尝试重新连接,请求我输入密码等等.这种行为是不可取的.
Emacs版本 - 24.0.94.1
编辑(20.03.12):与Ido作者联系后,我尝试将其更改ido-file-name-all-completions-1为以下内容:
(defun ido-file-name-all-completions-1 (dir)
(cond
((ido-nonreadable-directory-p dir) '())
;; do not check (ido-directory-too-big-p dir) here.
;; Caller must have done that if necessary.
((and ido-enable-tramp-completion
(or (fboundp 'tramp-completion-mode-p)
(require 'tramp nil t))
(string-match "\\`/[^/]+[:@]\\'" dir))
;; TRAMP RELATED CODE DELETED
nil)
(t
(file-name-all-completions "" dir))))
Run Code Online (Sandbox Code Playgroud)
没有成功.然后我改变了正则表达式
"\\`/[^/]+[:@]"
Run Code Online (Sandbox Code Playgroud)
并且它工作 - …
我正在编辑远程主机上的文件并点击C-x C-s,突然Emacs冻结了.那天早些时候工作; 我在十分钟之前就在同一个会话中从另一个缓冲区保存了.击中C-g它使其脱离悬挂状态,但它不会再保存.本地机器是OS X Leopard,远程是FreeBSD 7.4,Emacs是OS X的预编译下载24.1(9.0).
我做了M-x tramp-cleanup-all-connections,再试一次.没运气.我尝试了很多东西,包括关闭我的工作站并重新启动emacs.
跳到最后,我在.emacs中更改了以下行:
(setq tramp-verbose 10); had been 3
Run Code Online (Sandbox Code Playgroud)
我想我会以这种方式得到一些好的调试信息.所以我重新启动,并尝试编辑远程文件,想象我会在*debug tramp/ssh ...*缓冲区中看到一些东西.
瞧,我能够再次编辑远程文件.
我重置tramp-verbose为3,重新启动,并再次陷入困境.我把它切换回10,一切正常.它工作即使我设置tramp-debug-buffer为nil.
任何人都有任何想法为什么会这样?真正让我停下来的是Emacs经过几个月的无故障编辑后突然停止工作.
首先我启动eshell,然后输入命令 cd /plink:<user>@<host>:/home/
然后我收到此错误消息
Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation.版权所有.
管理员已禁用命令提示符.
按任意键继续 ...
我正在尝试连接plink(在我的路径中),也是在通过*Messages*缓冲区后我找到了这个.
找不到本地shell提示符(C:\ Windows\system32\cmd.exe)
我90%肯定这是因为我的机器上已禁用cmd,因为当我在另一台计算机上尝试相同的设置时,我知道cmd已启用,一切正常.
我修改了我的.emacs文件
(require 'tramp)
(set 'tramp-encoding-shell "C:/Windows/System32/WindowsPowershell/v1.0/powershell.exe")
(set 'tramp-encoding-command-switch "-Command")
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果,但结果似乎是乱糟糟的(第三行看起来可能是一个提示,\而且>字符在正确的位置......).

我设法挖掘了一个很好的描述是什么tramp-encoding-shell,还有一个相关的SO问题,这里是github上的tramp-encoding-shell 源/文档.
更新
这是我的屏幕在尝试以PowerShell设置为tramp-encoding-shell的plink连接失败后的样子.

我在使用EmacsW32和cygwin设置Tramp时遇到了一些麻烦.我已经使用w32shell将emacs配置为使用cygwin作为shell.我还将HOME环境变量设置为c:/ cygwin/home/myusername
问题是tramp似乎挂起并且没有建立任何连接:
"Tramp等待新shell的提示".
我试图打开调试,但仍然只看到此消息.期待获得一些关于此的提示.谢谢.
我之前曾问过如何在ESS中切换R会话,并且使用C-x C-s大大加快了我的工作流程.
但是,如果我有多个R会话(即使只有3个),也很难记住哪个是R哪个,哪个是R:2哪个,哪个是哪个R:3.有没有办法让ESS,Emacs或tramp根据运行R的服务器/目录自动命名不同的r会话?
我的.emacs中有以下内容:
(require 'tramp)
(add-to-list 'tramp-remote-path "/some/path")
(add-to-list 'tramp-remote-path 'tramp-default-remote-path)
Run Code Online (Sandbox Code Playgroud)
所以当我使用tramp over ssh打开文件时,我希望我PATH能包含/some/path.相反,运行M-! echo $PATH返回
/bin:/usr/bin:/usr/sbin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
即使我设置export PATH=/hwdisks/data/modules/pkg/git/1.8.4.1/bin/git:$PATH的.bashrc或.profile,PATH设置不正确.
在tramp日志中*debug tramp/ssh remotehost*,我可以看到tramp明确设置PATH:
12:28:34.202135 tramp-send-command (6) # PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin; export PATH
Run Code Online (Sandbox Code Playgroud)
如果我包括echo "in .bashrc"在我的.bashrc,它出现在tramp日志中,所以我知道tramp正在阅读它.
如何让流浪汉使用正确PATH?
Emacs版本:24.2.1
Tramp版本:2.2.3-24.1
我与tramp和cygwin-mount有一个奇怪的交互(我认为:Emacs:Tab文件名的完成附加了一个额外的i:\ cygwin).因此,我想禁用tramp.我无法在明确加载tramp的.emacs中找到任何内容.当我点击查找文件迷你缓冲区中的选项卡时,我可以看到"正在加载tramp ...".我想弄清楚什么包导致了tramp的加载并禁用它.我该怎么做呢?我试着寻找(需要'tramp)但找不到任何有趣的东西.我能想到的唯一另一个选择是逐一评论我的.emacs中的一些,看看哪一个有效 - 但这是如此蛮力,我想要一个更聪明(更容易)的方式.
我正在使用TRAMP连接到远程服务器,我想使用一些目录本地变量.我有什么选择?我应该使用emacs-server并以这种方式执行,还是应该将目录本地变量添加到我的.emacs文件中?有没有办法强制TRAMP查找.dir-locals.el文件?
我正在使用Aquamacs(使用emacs 24和tramp 2.2.3版的OSX图形化emacs)来编辑远程服务器上的一些文件.Tramp设置为使用ssh并在编辑文件方面工作正常.
它在编译时失败,因为编译器不在路径中.似乎tramp不会提供任何配置文件,如.profile或.bash_profile./ bin/sh是/ bin/bash的链接,所以bash应该是tramp使用的shell.在远程服务器上的emacs内启动的shell也不会提供任何内容.来自常规终端仿真器(在OS X上尝试过的终端和X11)的ssh连接按预期工作(一切来源正确).
有任何想法吗?
我第一次尝试通过Windows上Emacs的tramp访问远程文件.我正在尝试通过打开远程目录C-x C-f /plink:user@host:/.但是,当Emacs在迷你缓冲区中进入"Tramp:found remote shell prompt"时,它会挂起.迷你缓冲器不仅会挂起,而且所有Emacs都会挂起,因此我必须通过任务管理器将其杀死.遗憾的是,我无法看到tramp的任何调试信息,因为它输出到Emacs缓冲区.我该如何调试呢?
我正在运行Windows 8.1,Emacs 24.3和plink 0.63.