标签: tramp

Emacs:在Tramp模式下禁用Ido完成

我经常使用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)

并且它工作 - …

emacs elisp tramp ido

9
推荐指数
1
解决办法
2775
查看次数

Bizzarre Emacs Tramp Fix

我正在编辑远程主机上的文件并点击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-buffernil.

任何人都有任何想法为什么会这样?真正让我停下来的是Emacs经过几个月的无故障编辑后突然停止工作.

emacs tramp

9
推荐指数
1
解决办法
1512
查看次数

如何使用Powershell作为我的tramp-encoding-shell?

首先我启动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)

我得到了不同的结果,但结果似乎是乱糟糟的(第三行看起来可能是一个提示,\而且>字符在正确的位置......).

emacs错误

我设法挖掘了一个很好的描述是什么tramp-encoding-shell,还有一个相关的SO问题,这里是github上的tramp-encoding-shell 源/文档.

更新

这是我的屏幕在尝试以PowerShell设置为tramp-encoding-shell的plink连接失败后的样子.

全屏截图

windows emacs powershell plink tramp

9
推荐指数
1
解决办法
627
查看次数

使用tramp与EmacsW32和cygwin,可能吗?

我在使用EmacsW32和cygwin设置Tramp时遇到了一些麻烦.我已经使用w32shell将emacs配置为使用cygwin作为shell.我还将HOME环境变量设置为c:/ cygwin/home/myusername

问题是tramp似乎挂起并且没有建立任何连接:

"Tramp等待新shell的提示".

我试图打开调试,但仍然只看到此消息.期待获得一些关于此的提示.谢谢.

emacs cygwin elisp tramp

8
推荐指数
2
解决办法
4407
查看次数

如何在ESS中重命名R会话?

我之前曾问过如何在ESS中切换R会话,并且使用C-x C-s大大加快了我的工作流程.

但是,如果我有多个R会话(即使只有3个),也很难记住哪个是R哪个,哪个是R:2哪个,哪个是哪个R:3.有没有办法让ESS,Emacs或tramp根据运行R的服务器/目录自动命名不同的r会话?

emacs r tramp ess

8
推荐指数
1
解决办法
577
查看次数

TRAMP忽略了tramp-remote-path

我的.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

emacs tramp

8
推荐指数
2
解决办法
1358
查看次数

在Emacs中,我如何确定哪个包正在加载tramp?

我与tramp和cygwin-mount有一个奇怪的交互(我认为:Emacs:Tab文件名的完成附加了一个额外的i:\ cygwin).因此,我想禁用tramp.我无法在明确加载tramp的.emacs中找到任何内容.当我点击查找文件迷你缓冲区中的选项卡时,我可以看到"正在加载tramp ...".我想弄清楚什么包导致了tramp的加载并禁用它.我该怎么做呢?我试着寻找(需要'tramp)但找不到任何有趣的东西.我能想到的唯一另一个选择是逐一评论我的.emacs中的一些,看看哪一个有效 - 但这是如此蛮力,我想要一个更聪明(更容易)的方式.

emacs elisp tramp

7
推荐指数
1
解决办法
924
查看次数

在Emacs中,如何将目录本地变量用于远程项目?

我正在使用TRAMP连接到远程服务器,我想使用一些目录本地变量.我有什么选择?我应该使用emacs-server并以这种方式执行,还是应该将目录本地变量添加到我的.emacs文件中?有没有办法强制TRAMP查找.dir-locals.el文件?

emacs project tramp

7
推荐指数
2
解决办法
763
查看次数

使用ssh的Tramp不会提供.bash_profile/.profile

我正在使用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连接按预期工作(一切来源正确).

有任何想法吗?

emacs bash aquamacs tramp

7
推荐指数
1
解决办法
1244
查看次数

Emacs tramp挂起"Tramp:发现远程shell提示"

我第一次尝试通过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.

emacs tramp

7
推荐指数
1
解决办法
2012
查看次数

标签 统计

emacs ×10

tramp ×10

elisp ×3

aquamacs ×1

bash ×1

cygwin ×1

ess ×1

ido ×1

plink ×1

powershell ×1

project ×1

r ×1

windows ×1