как получить grep, работающий в Emacs над Windows (EmacsW32)

M-x grep, M-x lgrep, M-x rgrep не работают в EmacsW32 на меня.

Я делаю M-x 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

Также, что это вещь NUL? Домашняя страница EmacsW32 говорит, что поставлется с утилитами Gnuwin32, но кажется, что работу к конфигурированию для фактического использования Gnuwin32 grep оставляют пользователям.

Как я могу настроить его для использования или поставленного Gnuwin32 grep или cygwin grep? Прекрасны оба?

9
задан Yoo 30 January 2010 в 21:29
поделиться

4 ответа

Эта статья имеет несколько советов о том, как получить эту работу.

Я получил этот рабочий день на днях, вы можете установить переменную среды пути внутри 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, кажется рискованным предложением, вы рискуете испортить другие программы на вашем компьютере. Так что это, казалось, был хорошим компромиссом.

3
ответ дан 4 December 2019 в 21:49
поделиться

В Windows нет утилиты grep (на самом деле в ней есть findstr , но это не так точно так же), поэтому вам нужно установить что-то вроде cygwin или утилит unix для Windows . После их установки вам необходимо добавить их в % PATH% , чтобы окна знали, где их искать. Вы можете сделать это либо в командной строке, запустив cmd.exe и выполнив команду set PATH = ;% PATH% , либо в окне некоторых настроек, которое вы получите, щелкнув правой кнопкой мыши Мой компьютер значок (он называется что-то вроде переменные среды здесь - это некоторые его изображения).

Обратите внимание: в Windows есть утилита под названием find , которая также находится в системе % PATH% , которая может выполнять определенные команды (например, Mx grep-find ) работает некорректно, поэтому важно сначала указать unix-find в % PATH% .

5
ответ дан 4 December 2019 в 21:49
поделиться

Я думаю, что пользователю EmacsW32 сначала нужно установить пользовательский параметр w32shell-shell через меню Параметры> Настроить EmacsW32 , для которого изначально установлено значение none, и пользователь должен установить его либо на cmd, либо на cygwin. Установка его в cmd означает, что Mx grep будет использовать встроенный Gnuwin32 grep (и cmd.exe в качестве оболочки), и если настройка сохранена правильно, dotemacs будет содержать строки, подобные следующей:

(custom-set-variables
 ...  
 '(w32shell-shell (quote cmd))
 ...)

Custom-set-variable форма должна быть помещена как можно ближе к началу dotemacs.

По некоторым причинам в моей системе этого недостаточно, M-x grep будет настаивать на использовании «grep -n» в качестве своего шаблона, а не «grep -nH -e», и всегда добавляет «NUL». В этом случае добавьте следующую строку в файл dotemacs.

(grep-compute-defaults)
1
ответ дан 4 December 2019 в 21:49
поделиться

Вот ответ без глупостей, который работает:

http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/39cd9d63b07a9988#

Наслаждайтесь!

0
ответ дан 4 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: