我正在查看c
中非常大的流体动力学代码,该代码通常有一些非常差的变量选择。包括一个名为'g'的全局变量。类似地,有一个文件带有一个名为'geom'的变量和许多其他包含子串'geom'的变量(例如geometry,geomAL,geom_arb等)。
有没有办法搜索与正则表达式完全匹配的变量,而不是部分?
例如:搜索'geom'不匹配'geomAL'。显然,emacs不会先验知道变量的开始或结束位置,但是这可以构建为c模式的函数吗?
答案 0 :(得分:7)
Emacs正则表达式引擎( CMs <regexp>
)具有各种操作数,例如单词边界\<
和\>
零 - 宽度断言。因此,\<geom\>
将单独匹配geom
并且(取决于您的模式的语法表)也可能是geom_something
中的前缀。如果您需要排除下划线后缀,请尝试\<geom\>[^_]
。
答案 1 :(得分:3)
您可以使用C-u C-s \_<g\_>
来搜索带有符号边界标记的正则表达式搜索符号 g
。或者在最近的Emacs中,您可以M-s _ g
执行基本相同的操作(M-s
是M-s _
isearch-forward-symbol
中的“搜索前缀键”。
答案 2 :(得分:1)
你试过Emacs TAGS系统吗?它应该能够解析变量,它可能提供精确的查找。见这里:http://www.emacswiki.org/emacs/EmacsTags
使用etags帮助程序生成标签表:
etags *.c
使用
查找标签M-. your-var-name
答案 3 :(得分:1)
http://www.emacswiki.org/emacs/RegularExpression几乎可以满足您的所有需求。