Как получить GreeP, работающий в Emacs на Windows (Emacsw32)
Вопрос
MX GREP, MX LGREP, MX RGREP не работает в Emacsw32 для меня.
Я делаю MX LGREP, и он говорит, что GREP не является командой:
grep -i -n "hello" * NUL
'grep' is not recognized as an internal or external command,
operable program or batch file.
Grep finished with no matches found at Sun Jan 31 05:59:06
И что такое это нуль? Главная страница EMACSW32 говорит, что он отправляется с утилитами GNUWIN32, но кажется, что работа для настройки на самом деле использовать GNUWIN32 GREP оставить для пользователей.
Как я могу настроить его, чтобы использовать либо поставляемый GNUWIN32 GREP, либо Cygwin GreeP? Оба хорошо?
Решение
эта статья Есть несколько советов о том, как получить эту работу.
Я получил этот рабочий день на днях, вы можете установить переменную среды пути внутри Emacs, и если у вас есть Cygwin и / или GNUW32, просто установите путь к тем. Это фрагмент из моих .emacs, который применим только на Windows. Я устанавливаю переменные (Cygwin-Bin, GNU-BIN) к пути, где установлены программы. Затем постройте путь к тем. Один недостаток - это дует остаток моего пути. Что не было проблемой до сих пор, но если бы я был умнее с Lisp, я мог бы, вероятно, что-то понять. Во всяком случае, надеюсь, это поможет.
;;windows only stuff
(when (string-equal system-type "windows-nt")
(progn
(setq cygwin-bin "c:\\apps\\cygwin\\bin")
(setq gnu-bin "C:\\apps\\GnuWin32\\gnuwin32\\bin")
(setenv "PATH"
(concat cygwin-bin ";" gnu-bin ";"))
(setq exec-path
'(cygwin-bin gnu-bin))))
Я должен добавить, я пришел к этому решению, потому что положить Qnuwin32 перед пути в Windows, кажется рискованным предложением, вы рискуете возобновить другие программы на вашем компьютере. Так что это, казалось, был хорошим компромиссом.
Другие советы
Окна не приходят с grep
утилита (на самом деле у него есть findstr
, но это не совсем то же самое), поэтому вам нужно установить что-то вроде Cygwin или Unix Utils для Windows. Отказ После установки тех, вам нужно добавить их в %PATH%
, Так что, что окна знают, где их искать. Вы можете сделать это либо в командной строке, запустив cmd.exe
и выдача команды set PATH=<your_path>;%PATH%
или в некоторых настройках вдова, вы получите правой кнопкой мыши Мой компьютер значок (называется что-то вроде Переменные среды здесь некоторые фотографии этого).
Примечание, Windows имеет утилиту под названием find
и это также в системе %PATH%
, это может сделать определенные команды (как M-x grep-find
) не работать правильно, так что важно ставить Unix-найти первым в вашем %PATH%
.
Я думаю, что пользователь EMACSW32 сначала нужно установить пользовательскую опцию w32shell-shell
через меню Options > Customize EmacsW32
, который устанавливается на них изначально, и пользователь должен установить его на CMD или Cygwin. Установка его в CMD означает, что MX GREP будет использовать встроенный GNUWIN32 GREP (и cmd.exe в качестве оболочки), и если настройка правильно сохраняется, дотумаки будут содержать строки, как следующее:
(custom-set-variables
...
'(w32shell-shell (quote cmd))
...)
Форма на заказ настроек должна быть размещена как можно ближе к началу дотемаков.
По какой-то причине в моей системе этого недостаточно, MX Greep настаивает на том, чтобы использовать «GreeP -N», как его шаблон, а не «grep -nh -e -e», и он всегда добавляет «нуль». В этом случае добавьте следующую строку в файле dotemacs.
(grep-compute-defaults)
Вот ответ NO-NONSENSE, который работает:
http://groups.google.com/group/gnu.emacs.help/browse_thread/thrad/39cd9d63b07a9988#
Наслаждаться!
Я использую Cygwin (старая версия). Для Emacs я использую библиотеки Cygwin-Mount.el. а также setup-cygwin.el., загружен в этом порядке. Работает просто хорошо.