各位朋友好: 新人真心求教一个问题。我想Emacs能够按照我的意愿去高亮某些词,比如在TXT和org模式下高亮中文“原告”,我参考了几个网页
都得不到想要的效果。 其中一段代码
(font-lock-add-keywords nil '(("\\_<[0-9]+\\_>" . font-lock-warning-face)))
在*scratch*
中似乎能显示,但到放到init.el
里又不行。补充,我使用了zenburn插件。
真心求教,谢谢大家。
各位朋友好: 新人真心求教一个问题。我想Emacs能够按照我的意愿去高亮某些词,比如在TXT和org模式下高亮中文“原告”,我参考了几个网页
都得不到想要的效果。 其中一段代码
(font-lock-add-keywords nil '(("\\_<[0-9]+\\_>" . font-lock-warning-face)))
在*scratch*
中似乎能显示,但到放到init.el
里又不行。补充,我使用了zenburn插件。
真心求教,谢谢大家。
可以用 M-x highlight-regexp 原告高亮,如果总是需要在 org-mode
中这么做的话,可以:
(defun my-highlight-some-text ()
(highlight-regexp "原告"))
(add-hook 'org-mode-hook #'my-highlight-some-text)
highlight-regexp
第一个参数指定 regexp,第二个可选参数指定颜色(默认黄色)
(highlight-regexp REGEXP &optional FACE)
1.我写了这一段很笨的代码,但是没有得到效果(很难看啊,不会用缩进,请原谅)。
(defun my-highlight-some-text ()
(highlight-regexp "被申请人" font-lock-doc-face)
)
(defun my-highlight-some-text2 ()
(highlight-regexp "申请人" font-lock-warning-face)
)
(add-hook 'org-mode-hook #'my-highlight-some-text)
(add-hook 'org-mode-hook #'my-highlight-some-text2)
我希望达到的效果是
2.再次请朋友您指点一下。 另外,我平常在其他编辑器中使用正则表达式
(申请人|原告|上诉人)
现在在Emacs下改作
\(\(?:上诉人\|原告\|申请人\)\)
似乎也是没有效果,请问应当如何写呢?真心谢谢您。
申请人
这个正则表达式必然会匹配到被申请人
这个正则表达式的所有匹配,应该要从申请人
中排除掉被申请人
。
(申请人|原告|上诉人)
应该是「或」的意思吧,在 Emacs 下用 \|
是对的:
(with-temp-buffer
(insert "申请人, 原告, 上诉人)")
(goto-char 1)
(count-matches "申请人\\|原告\\|上诉人"))
⇒ 3
请问上述的正则表达式应该如何写才对啊?我不太明白您代码的意思,请帮助。
我不清楚你不明白哪一个,你的第一个问是把「申请人」和「被申请人」用不同的颜色高亮,要注意配备前者的时候排除掉后者,比如用 [^被]\(申请人\)
,之后高亮分组 1
,差不多就可以了,需要处理 Buffer 一开头就是「申请人」的话再另外添加一个条 \
申请人。这里有个问题是
highlight-regexp默认不支持分组,你需要自己写个支持分组的版本出来。第二个问题是匹配
申请人或
原告或
上诉人,用
上诉人|原告|申请人` 是对的,用它来匹配
申请人, 原告, 上诉人
的话,一共会找到三个匹配
(with-temp-buffer
(insert "申请人, 原告, 上诉人)")
(goto-char 1)
(count-matches "申请人\\|原告\\|上诉人"))
⇒ 3
注意 Regexp 写成 Emacs Lisp String 的时候不要忘记跳脱 \
。
真的不会写,在下也不会编程,只会拷贝一点现成的设置来操作。尝试了两个插件:“highlight-symbol”和“highlight.el”,都达到效果或者不太会用。 总之,还是感谢您的帮助。
我这里除了「被」字,「申请人」前面的其它字符也被高亮了。
(goto-char (match-end group))
改为 (goto-char (+ 1 (match-end group)))
就正常了。