我希望isearch / search-replace /仅在代码中出现(不在注释或字符串中)。
这一定是一个常见的问题,那么这个包已经做到了什么?
如果现有的软件包没有这样做,我正在考虑一种小型模式,其中根据fontification隐藏字符串和注释就可以了。有吗?
答案 0 :(得分:2)
Icicles search为您提供了几种方法。这是两个:
搜索“内容”(例如defun
s,sexp
s,xml元素等),忽略评论(选项icicle-ignore-comments-flag
)。也就是说,使用选定的代码段作为搜索上下文,但忽略代码中的任何注释或注释中的代码。
搜索评论的complement。例如,将搜索上下文定义为使用面font-lock-comment-face
或面font-lock-comment-delimiter-face
进行字体锁定的文本区域的补充(这意味着搜索注释之外的所有代码)。
定义搜索上下文后,只需键入文本以逐步过滤上下文。您可以根据需要replace进行任何匹配。
答案 1 :(得分:0)
是的,你是对的。 HideShow次要模式允许您隐藏/显示文本块,特别是多行注释。
隐藏/显示评论不是标准软件包的一部分,但在维基页面上,您将找到可以解决问题的代码。
然后isearch命令没有考虑隐藏的注释。
HOWEVER:replace对整个缓冲区进行操作,包括隐藏块。
答案 2 :(得分:0)
查看 narrowing 。
答案 3 :(得分:0)
Isearch+按照您的要求行事(Icicles ---见上文other answer)。
您可以使用以下任意内容定义Isearch搜索的 上下文 :
THING
(sexp,defun,list,string,comment等)---搜索上下文是给定THING
类型的文本区域。 定义了搜索上下文后,您还可以搜索补充:非 -contexts。您可以使用C-M-~
随时在Isearch中在搜索上下文和非上下文之间切换。
搜索时,默认情况下,未搜索的区域会略微变暗,以使可搜索区域突出显示。
使用Isearch进行上下文搜索时,您需要这两个库: