在 Windows 上编辑 emacs 上的远程 Linux 文件的最佳方法

在 Windows 上编辑 emacs 上的远程 Linux 文件的最佳方法

通过 Windows 主机使用 Linux 机器处理文件的最快、最可靠的方法是什么?我需要能够轻松地在 Emacs 框架之间复制和粘贴文本并使用所有键盘快捷键。因此,Putty 和 Cygwin 是不可能的。我尝试过 TRAMP 模式,但当我尝试连接时它就挂起了。

答案1

Tramp 绝对是正确的答案。如果您在使用 Tramp 时遇到问题,请修复它。在 Windows 下运行 Tramp 的最简单方法是使用plink,PuTTY 的 ssh 隧道和脚本组件。Cygwinssh是另一种可能。

我遇到的一个问题是plink强制TERM环境变量为xterm。这可能会导致您的.profile或其他登录脚本发出数据,认为它正在与终端对话,但这些数据会使您的脚本感到困惑。通常您会使用plink选项调用-T,告诉它不要模拟终端。在 Emacs 中,使用plinkxTramp 方法,它会在远程端强制TERM为:dumb

(if (eq system-type 'windows-nt)
    (setq tramp-default-method "plinkx"))

在远程端,确保您的登录文件不会发出任何输出,例如当$TERM是时提示dumb

答案2

我猜当您说“putty 和 cygwin 是不可能的”时,您的意思是不要直接从 Cygwin 控制台或 PuTTY shell 使用 emacs,而是使用 ntemacs(适用于 Windows 的 Emacs)和 tramp 访问您的 Linux 机器。

好消息是这是可行的!:) 我一直在使用 ntemacs 和 Cygwin(用于 ssh 访问)的组合,效果很好。

这是您需要做的。

  • 安装 Cygwin 和 openssh(如果你不确定,那就安装所有东西)并设置 ssh,这样你就可以无密码访问你的 linux 机器,请参阅这个简短而有趣的文章

  • 复制 Michael Cook 和 Klaus Berndl 编写的 cygwin-mountemacswiki 并将其放在 ~/.emacs.d/plugins/cygwin-mount 下(或第三方 emacs 包所在的任何位置)。

  • 在您的 .emacs 中,使用类似下面的命令来激活 cygwin-mount。

(add-to-list 'load-path "~/.emacs.d/plugins/cygwin-mount")

(defvar cygwin-bin-dir
  "c:/cygwin/bin/"
  "*Directory of Cygwin bin.")

(when (eq (window-system) 'w32)
  (progn
    (setenv "PATH" (concat cygwin-bin-dir ";" (getenv "PATH")))
    (setq exec-path (cons cygwin-bin-dir exec-path))
    (require 'cygwin-mount)
    (cygwin-mount-activate)))

  • 现在重新启动 emacs 和 Cx Cf,并在迷你缓冲区中输入“/sshx:your_host:”(注意末尾的冒号)。如果一切顺利,tramp/ssh 应该启动,您应该能够看到远程目录。

希望这可以帮助。

答案3

为什么不在 Linux 机器上远程运行 Emacs,而让它显示在本地 X 窗口上呢?

你需要准备:

  • Windows 的 X 服务器:一些可能的免费解决方案包括西明Cygwin/X (我知道,你说过不要 Cygwin。)
  • Linux 主机上的 Emacs
  • 启动远程命令的方法(类似 ssh)

基本步骤:

  1. 在 Windows 上启动 X 服务器
  2. 远程启动 Emacs 并使其显示在本地 X 服务器上。我通常使用 ssh 通过发出命令“ssh -X @ emacs”来执行此操作。或者,您可以登录 Linux 框,设置 DISPLAY 变量(“export DISPLAY=:0”),然后启动 emacs。

相关内容