如何在Emacs中对vimrc文件进行语法高亮?

21

所以,这可能是一个异端的问题,但我正在寻找一个可以处理.vimrc文件语法高亮的Emacs模式。由于显而易见的原因,这个特定的问题被证明非常难以通过谷歌查找,但在这两个编辑器之间的20多年的公开战争中,似乎极有可能某个人已经编写了这样一个模式。有什么想法吗?


12
老兄,这是针对 #emacs 最好的恶作剧点子了。 :) - cdhowie
+1并祝您在Superuser上好运。逻辑是管理员更有可能是使用emacs的用户,需要处理.vimrc文件,而不是程序员。 - aaronasterling
1
+1对这个问题的大胆提问表示赞赏。如果有的话,我期望在谷歌上搜索'vimrc.el'或'vimrc.elc'能够找到一些相关内容,但实际上什么也没有出现,这让我并不意外。这就像是一个镶嵌着星条旗的锤子和镰刀一样。;-) - Orbling
这个问题是在谷歌搜索“emacs .vimrc mode”时的第一个结果。此外,我并不指望会有一个针对.vimrc文件的模式。我在Emacs中找到了conf文件和xdefaults的模式,但没有针对.vimrc的模式。我找到的最接近的是vi-mode和vpier。所以如果你打算写一个,你可能是第一个这样做的人 :) - vpit3833
2个回答

12

通过谷歌搜索,可以找到 wenbinye的vimrc-mode,这是一个非常轻量级的通用模式。下面是我在.emacs中的设置:

(define-generic-mode 'vimrc-generic-mode
    '()
    '()
    '(("^[\t ]*:?\\(!\\|ab\\|map\\|unmap\\)[^\r\n\"]*\"[^\r\n\"]*\\(\"[^\r\n\"]*\"[^\r\n\"]*\\)*$"
       (0 font-lock-warning-face))
      ("\\(^\\|[\t ]\\)\\(\".*\\)$"
      (2 font-lock-comment-face))
      ("\"\\([^\n\r\"\\]\\|\\.\\)*\""
       (0 font-lock-string-face)))
    '("/vimrc\\'" "\\.vim\\(rc\\)?\\'")
    '((lambda ()
        (modify-syntax-entry ?\" ".")))
    "Generic mode for Vim configuration files.")

该模式可以正确地突出显示注释,但使用M-q进行注释填充时无法正常工作。为了修复注释填充问题,您需要通过将第一个 '() 替换为 '("\"") 来告诉该模式注释的外观。 - ntc2
@enoksrd 如果您没有打开Filladapt模式(我有),它可以工作。但我并不确定这是正确的,因为"也可以用作注释和字符串语法。 - Gilles 'SO- stop being evil'
什么是问题?你会在代码块中使用 M-q 并将其作为注释包装你的字符串吗?为什么要在代码中使用 M-q (fill-paragraph)? - ntc2
似乎链接的参考已经更改为(define-generic-mode vimrc-mode '("\"") '("set" "syntax") nil '("\\.vim\\'") nil),此外,现在在Melpa上有一个vimrc-mode可用。它看起来很不错,但引号使用有些问题。 - Brady Trainor

4

有一个非常好的软件包可以实现这个: https://github.com/mcandre/vimrc-mode

通过M-x package-install vimrc-mode安装它。

当你打开vimrc文件时,它会自动进行惊人的语法高亮,或者您可以通过(vimrc-mode)手动调用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接