
Какой самый быстрый и надежный способ работы с файлами через Linux-машину с Emacs через хост-машину Windows? Мне нужно иметь возможность легко копировать и вставлять текст между фреймами Emacs и использовать все сочетания клавиш. Так что Putty и Cygwin не подходят. Я пробовал режим TRAMP, но он просто зависает при попытке подключения.
решение1
Tramp — это определенно правильный ответ. Если у вас есть проблема с Tramp, исправьте ее. Самый простой способ запустить Tramp под Windows — этоplink
, компонент ssh-туннелирования и скриптинга PuTTY. Cygwin ssh
— еще одна возможность.
Одна из проблем, с которой я столкнулся, заключается в том, что plink
заставляет TERM
переменную окружения принимать значение xterm
. Это может привести к тому, что ваш .profile
или другой скрипт входа будет выдавать данные, думая, что он обращается к терминалу, но эти данные запутают ваши скрипты. Обычно вы вызываете plink
с -T
опцией , чтобы сказать ему не эмулировать терминал. В Emacs используйте plinkx
метод Tramp, который заставляет TERM
на dumb
удаленной стороне:
(if (eq system-type 'windows-nt)
(setq tramp-default-method "plinkx"))
На удаленной стороне убедитесь, что ваши файлы входа не выдают никаких выходных данных, таких как приглашение $TERM
при dumb
.
решение2
Полагаю, когда вы сказали «putty и cygwin не обсуждаются», вы имели в виду не использование emacs напрямую из консоли Cygwin или оболочки PuTTY, а использование ntemacs (Emacs для Windows) с Tramp для доступа к вашим Linux-компьютерам.
Хорошая новость в том, что это осуществимо! :) Я использовал комбинацию ntemacs и Cygwin (для доступа по ssh) и получил хорошие результаты.
Вот что вам нужно сделать.
Установите Cygwin с установленным openssh (если вы не уверены, то просто установите все) и настройте ssh так, чтобы вы могли получить доступ к своим Linux-компьютерам без пароля, для чего, пожалуйста, обратитесь к этой короткой и понятной инструкции.статья.
Копия cygwin-mount Майкла Кука и Клауса Берндла изemacswiki и поместите его, скажем, в ~/.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
Вместо того чтобы запускать Emacs локально, почему бы не запустить его удаленно на компьютере с Linux и не отобразить его в локальном окне X?
Что тебе понадобится:
- X Server для Windows: некоторые возможные бесплатные решения включают в себяСинмин,Cygwin/X (Я знаю, ты сказал «нет Cygwin».)
- Emacs на хосте Linux
- Способ запуска удаленной команды (что-то вроде ssh)
Основные шаги:
- Запустите свой X-сервер на Windows
- Запустите Emacs удаленно и отобразите его на локальном X-сервере. Я обычно делаю это с помощью ssh, выполнив команду "ssh -X @ emacs". В качестве альтернативы вы можете войти в Linux-систему, установить переменную DISPLAY ("export DISPLAY=:0") и затем запустить emacs.