Как получить GreeP, работающий в Emacs на Windows (Emacsw32)

StackOverflow https://stackoverflow.com/questions/2169520

  •  24-09-2019
  •  | 
  •  

Вопрос

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., загружен в этом порядке. Работает просто хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top