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

为什么我的Emacs正则表达式与^不匹配行首?

  •  5
  • user181548  · 技术社区  · 15 年前

    我正在试着设置 .emacs 任何以字母开头的文件 makefile 将其设置为makefile模式。例如。 makefile-something 应处于makefile模式。

    这不起作用:

    (setq auto-mode-alist (cons '("^makefile" . makefile-mode) auto-mode-alist))
    

    但这确实是:

    (setq auto-mode-alist (cons '("makefile" . makefile-mode) auto-mode-alist))
    

    有人能解释为什么吗?

    3 回复  |  直到 12 年前
        1
  •  7
  •   user180100    15 年前

    这是因为文件名前面有一个路径组件,请尝试:

    "/makefile[^/]*$"
    

    看见 http://www.gnu.org/s/emacs/manual/html_node/elisp/Auto-Major-Mode.html (页面底部)

    EDI:根据Sean评论更正了regexp

        2
  •  1
  •   zwol    12 年前

    所以这只是一个有根据的猜测,但我注意到 auto-mode-alist 要匹配文件名开头的不使用 ^ ,他们使用 / . 例如:

    ("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
    

    (来自emacs 23.2.1)基于此,我认为regexp可能应用于 完整路径名 文件,而不是基名。所以尝试

    (setq auto-mode-alist (cons '("/makefile" . makefile-mode) auto-mode-alist))
    

    相反。

        3
  •  0
  •   Charlie Martin    15 年前

    为了方便起见,试试看

     (add-to-list 'auto-mode-alist ...