Лучший способ редактировать удаленные файлы Linux на Emacs из Windows

Лучший способ редактировать удаленные файлы Linux на Emacs из Windows

Какой самый быстрый и надежный способ работы с файлами через 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)

Основные шаги:

  1. Запустите свой X-сервер на Windows
  2. Запустите Emacs удаленно и отобразите его на локальном X-сервере. Я обычно делаю это с помощью ssh, выполнив команду "ssh -X @ emacs". В качестве альтернативы вы можете войти в Linux-систему, установить переменную DISPLAY ("export DISPLAY=:0") и затем запустить emacs.

Связанный контент