代码之家  ›  专栏  ›  技术社区  ›  Drew

Windows上的Emacs

  •  2
  • Drew  · 技术社区  · 15 年前

    我对emacs上的rgrep/find有些问题。任何搜索都返回0个结果,并显示以下消息:

    文件名、目录名或卷标签语法不正确。

    Grep完成时未找到匹配项。

    我使用的是与cygwin捆绑在一起的find,所以我想知道输入d:/workspace是否中断,因为find使用cygwin进行磁盘访问(所以正确的路径应该是/cygdrive/d/workspace)。然而,emacs会在/cygdrive/d/workspace上犹豫,因为它不会这样读取它。

    我很好奇为什么我是唯一一个有这个问题的人,因为在emacs中使用cygwin find是很常见的。

    现在有不同的问题了。

    当我执行rgrep时,我总是得到相同的结果“find:missing argument to -name ". 如果我自己执行grep,Google在这个问题上什么也没有发现。我没有得到行号链接,所以我得到了文本所在位置的报告,但我无法单击其中任何一个打开该文件。

    3 回复  |  直到 15 年前
        1
  •  1
  •   justinhj    15 年前

    为了便于安装和提高性能,我建议使用emacs的本机windows版本和 gnu win32

        2
  •  0
  •   jwernerny    15 年前

    (我想你是在说使用grep find,但也许我错了。)

    我同意部分问题是传递cygwin的find d:/工作区。我从来没有把cygwin和非cygwin的东西混合在一起的好运气。你考虑过为cygwin使用emacs(或XEmacs)构建吗?

    当我混合东西的时候,我最终设置了一些东西,以便一个非cygwin版本的emacs知道cygwin驱动器名。我的.emacs(really.xemacs/init.el)文件中有两个不同的解决方案,一个用于emacs,一个用于xemacs。

        ;;
    ;; Life with Cygwin
    ;;
    (if am-i-running-xemacs-p
        ; true - I am running XEmacs
        (progn
    ;;--      (setq directory-abbrev-alist
    ;;--        (append directory-abbrev-alist
    ;;--                '(("^/cygdrive/a/" . "a:/")
    ;;--                  ("^/cygdrive/b/" . "b:/")
    ;;--                  ("^/cygdrive/c/" . "c:/")
    ;;--                  ("^/cygdrive/d/" . "d:/")
    ;;--                  ("^/cygdrive/e/" . "e:/")
    ;;--                  ("^/cygdrive/f/" . "f:/")
    ;;--                  ("^/cygdrive/g/" . "g:/")
    ;;--                  ("^/cygdrive/h/" . "h:/")
    ;;--                  ("^/cygdrive/i/" . "i:/")
    ;;--                  ("^/usr/" .        "d:/cygwin/usr/")
    ;;--                  ("^/homes/" .      "d:/cygwin/homes/")
    ;;--                  ("^/etc/" .        "d:/cygwin/etc/")
    ;;--                  ("^/lib/" .        "d:/cygwin/lib/")
    ;;--                  ("^/var/" .        "d:/cygwin/var/")
    ;;--                  ("^/include/" .    "d:/cygwin/include/")
    ;;--                  ("^/info/" .       "d:/cygwin/info/")
    ;;-                   ("^/" . "c:\\"))
    ;;--                ))
                )
          )
        ; false (else) - I am Not running XEmacs
        (progn
           (require 'cygwin32-mount)
    
           ;; make cygwin symlinks accessible
           (defun follow-cygwin-symlink ()
             (save-excursion
               (goto-char 0)
               (if (looking-at "!<symlink>")
                   (progn
                     (re-search-forward "!<symlink>\\(.*\\)\0")
                     (find-alternate-file (match-string 1)))
                 )))
           (add-hook 'find-file-hooks 'follow-cygwin-symlink)
    ))
    

    我不再使用这些,因为一旦我进入cygwin,我留在cygwin(即cygwin emacs,cygwin find)。

    • 约翰
        3
  •  0
  •   Drew    15 年前