Как лучше всего интегрировать Emacs и Cygwin?
Существует множество способов интеграции Cygwin с Emacs в Windows. EmacsWiki показывает несколько идей. Вот варианты, которые я нашел:
- Используйте Emacs, который поставляется с Cygwin. (Тогда найдите способ добраться до cmd.exe, если хотите.)
- Используйте NTEmacs и Cygwin как "иногда" оболочку. (Специальная команда для запуска Cygwin)
- Используйте NTEmacs и Cygwin как "всегда" оболочку. (Оболочка M-x запускает cygwin)
Чтобы дать некоторую ясность относительно "почему". Вот несколько примеров, где я бы хотел, чтобы Cygwin с Emacs:
- M-x whois не работает на NTEmacs.
- Пакеты, такие как Wanderlust, включают Makefile, который не поддерживает Windows.
- Иногда мне просто нужна оболочка bash для чего-то.
Итак, какой вариант Emacs/Cygwin хорошо работает для других? Кроме того, успешно ли кто-нибудь попытался интегрировать MSYS?
Ответы
Ответ 1
Используйте Emacs в Cygwin. Не XEmacs..Emacs. Я просто устанавливаю все из Cygwin и набираю следующее для запуска Emacs:
XWin -multiwindow
export DISPLAY=:0.0
emacs&
Это может также помочь создать ссылку на ваш диск C (или любой другой диск), например:
ln -s /cygdrive/c /c
Я использую это несколько месяцев, и он всегда работает хорошо. Я постоянно использую расширенные функции, такие как TRAMP и subversion, без каких-либо проблем. Все расширенные пакеты, такие как cedet, просто работают.
Если вы не заметили, я являюсь оригинальным плакатом. После всех моих исследований и попыток эта работа работала, и я ОЧЕНЬ ПРИНИМАЮ. Хорошая работа Cygwin!
Кроме того, я рекомендую не использовать оболочку внутри Emacs. Утилиты вроде top
просто не работают. Вместо этого используйте MinTTY и экран. Cygwin дает вам ssh непосредственно в MinTTY (вам не нужна замазка). Лучше всего то, что многие мои знания в Linux отлично работают в Windows.
Ответ 2
Четвертый выбор - запустить emacs в одном из альтернативных терминалов Cygwin: (u) rxvt, mintty, xterm. Все они предлагают гораздо лучшую эмуляцию терминала, чем консоль, что означает значительно улучшенный опыт emacs.
Ответ 3
Лучшим решением должно быть cygwin emacs-w32. Он использует win32 native gui и использует систему POSIX cygswin. Это означает, что у вас есть родная GUI-программа windows и весь путь cygwin, работающая оболочка.
Установка очень проста: setup.exe → emacs-w32.
Теперь номер версии: 24.2.93.1
Так хорошо.
Ответ 4
Я обычно использую собственную версию emacs в окнах в сочетании с (также родными) портами gnu utils, которые намного быстрее, хотя и менее полны, чем Cygwin.
Затем я просто использую окно cygwin для оболочки bash и вещи, которые отсутствуют.
Ответ 5
Я установил cygwin в корневой каталог. Он явно предупреждает вас об этом, но я не видел никаких побочных эффектов. (Я нашел этот совет от Стива Егге).
Я также установил cygwin-mount, что помогает связке. Кроме того, мне пришлось переключиться с ispell на aspell. В конце концов, немного настройки .emacs, и мне было хорошо:
;;;;;;;;;;;;;;;;;;;;;;
;;CygForTheWin
;;*cygwin
(when (equal system-type 'windows-nt)
(message "Setting up Cygwin...")
(let* ((cygwin-root "c:")
(cygwin-bin (concat cygwin-root "/bin"))
(gambit-bin "/usr/local/Gambit-C/4.0b22/bin/")
(snow-bin "/usr/local/snow/current/bin")
(mysql-bin "/wamp/bin/mysql/mysql5.0.51a/bin/"))
(setenv "PATH" (concat cygwin-bin ";" ;
snow-bin ";"
gambit-bin ";"
mysql-bin ";"
"c:/usr/local/jdk1.60_03/bin/"
".;")
(getenv "PATH"))
(setq exec-path (cons cygwin-bin exec-path)))
(require 'cygwin-mount)
(cygwin-mount-activate)
(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")
(defun jonnay-cygwin-shell ()
"Wrapper around cygwin-shell so that it doesn't throw an error"
(interactive)
(condition-case e
(cygwin-shell)
(message "There was an error trying to launch the shell: %s" e)))
(message "Setting up Cygwin...Done")
;; found from the manual, check, use and make go?
(defun my-shell-setup ()
"For Cygwin bash under Emacs 20"
(setq comint-scroll-show-maximum-output 'this)
(setq comint-completion-addsuffix t)
(setq comint-eol-on-send t)
(setq w32-quote-process-args ?\")
(make-variable-buffer-local 'comint-completion-addsuffix))
(setq shell-mode-hook 'my-shell-setup)
(add-hook 'emacs-startup-hook 'jonnay-cygwin-shell)
)
Ответ 6
Мне нравится версия xemacs
, которую вы получаете из программы установки Cygwin. Выполняется из коробки, ключ Alt сопоставляется с Meta просто отлично, а буфер оболочки bash существует там, где вам это нужно.
Ответ 7
Третий вариант. Я использую NTEmacs + EmacsW32 + Cygwin. Таким образом, у меня есть собственное приложение Windows с утилитами Unix и оболочкой bash. В make файлах я никогда не использовал M-x whois
. Я не могу думать о каких-либо непосредственных недостатках этой установки.
Вот интересные фрагменты моей установки, в основном очень похожие на http://www.emacswiki.org/emacs/NTEmacsWithCygwin:
(setq cygwin-root "c:/cygwin/")
(setq private-bin (concat home-dir "/usr/bin"))
(setq exec-path (cons private-bin exec-path))
(setenv "PATH" (concat private-bin ";" (getenv "PATH")))
; Add Cygwin Emacs stuff
(add-to-load-path "/usr/share/emacs/site-lisp")
; Add Cygwin Info pages
(add-to-list 'Info-default-directory-list
(concat cygwin-root "usr/share/info/"))
(setq shell-file-name "bash")
(setenv "SHELL" shell-file-name)
(setq explicit-shell-file-name shell-file-name)
(setq w32shell-cygwin-bin "c:\\cygwin\\bin")
(require 'w32shell)
(w32shell-add-emacs)
(w32shell-set-shell "cygwin")
Ответ 8
Как и @justinhj, я использую собственную версию emacs для окон в сочетании с (также родными) портами gnu utils (например, binutils для "строк" и т.д.).
И я всегда использует cygwin в качестве оболочки в Emacs или независимо от Emacs. Таким образом, я сохраняю внешний вид рабочей среды, когда я переключаюсь с Windows на/из Linux/AIX/Solaris.
К сожалению, однако, когда я обновил Emacs с 21.2 до 23.2, Emacs потерял способность распознавать '/cygwin/c' по умолчанию. Я должен исследовать это сейчас, чтобы понять, почему он больше не работает и что я могу сделать, чтобы исправить это. Я только что нашел следующую информацию, и я проверю ее, чтобы узнать, полезно ли это. Кажется странным, что теперь, когда мне нужен внешний пакет для чего-то, что всегда было там по умолчанию:
Я предпочитаю, однако, минимизировать использование дополнительных пакетов. Итак, я только что проверил поведение моего "нового" Emacs + Cygwin, и кажется, что я могу получить доступ к диску C: просто набрав '/'.
Это круто - только один символ (косая черта) вместо /cygdrive/c. Однако оболочка внутри Emacs запрашивает "/cygdrive/c", несколько путающую разницу.
Ответ 9
Я исследовал три варианта: все с оконными (но не X11) версиями Emacs. (Терминал слишком хардкор для меня.) Вот так:
- XEmacs, который поставляется с Cygwin
- EmacsW32
- Стандартные Emacs для Windows
Люди Cygwin хотят направить вас к своим Emacs/XEmacs. В http://cygwin.com/faq/faq-nochunks.html#faq.using.ntemacs они пишут "Обратите внимание, что все это" просто работает ", если вы используете порт Cygwin Emacs или XEmacs из Cygwin Настроить".
Обязательно установите пакет xemacs-sumo в дополнение к xemacs; иначе оболочка M-x не будет работать. Вы можете запускать xemacs без использования X11 как
DISPLAY= xemacs &
Недостатки: 1) Мальчик, это старый Emacs. Я действительно не хотел, чтобы солдат был с этим, когда все остальные используют Emacs 23. 2) Мне было слегка досадно, что для установки требуется целая куча X11 libs, даже если вы не используете X11. 3) Отсутствует cua-mode из коробки.
В EmacsW32 (http://ourcomments.org/Emacs/EmacsW32.html) установлен установщик с одним щелчком мыши, команда M-x cygwin-shell и режим CUA. Но завершение вкладки в оболочке Cygwin использует пути Windows, что сводило меня с ума. С 2008 года порт W32, похоже, активно не улучшается, но они предоставляют установщикам более свежие версии Emacs.
Стандартный Emacs для Windows, по-видимому, лучший выбор. Загрузите из http://ftp.gnu.org/pub/gnu/emacs/windows/, распакуйте и запустите изнутри Cygwin. Затем он забирает домашний каталог и т.д. Вставьте mumbo-jumbo из http://cygwin.com/faq/faq-nochunks.html#faq.using.ntemacs в ~/.emacs. Перезапустите Emacs и запустите оболочку M-x. Все работает так, как ожидалось.
Ответ 10
FWIW, я использую обычные версии GNU Emacs Windows, и я использую Cygwin. У меня никогда не было никаких проблем, но я не много делаю с Cygwin вне Emacs. О, и я использую старую версию Cygwin (со всеми версиями Emacs).
Для настройки я загружаю эти два файла, чтобы:
Ответ 11
Создайте emacs из источника:
- Загрузить последнюю стабильную версию (24.5 на момент написания этой статьи).
-Unzip и cd в папку emacs
- Запустите следующие шаги:
$ ./autogen.sh
$ ./configure --with-w32
$ make
$ make install
-Copy emacs.exe, вручную, из "папки emacs" /src в cygwin/bin
-Run emacs:
$ emacs&