现在的位置: 首页 > 综合 > 正文

emacs 使用

2013年02月07日 ⁄ 综合 ⁄ 共 1822字 ⁄ 字号 评论关闭

2. 当前buffer中的regular搜索 
    1) 用regexp-builder可以方便的测试正则表达式 
    2) `*' `+':贪婪算法符,`*'`+'首先尽可能匹配最多的内容,后面的项再接着匹配,如 
       果失败,开始回溯,尝试减少`*'`+'的匹配,再匹配后面的项。如搜索`ca*ar',匹配 
       `caaar'时,`a*'第一次匹配了三个`a',只剩`r',第一次失败了,下一次尝试,`a*'匹 
       配两个`a',后面的'ar'也匹配成功,就搜索到了`caaar' 
    3) `*?' `+?':非贪婪算法符,`*?'`+?'首先匹配最少的内容,后面的项再接着匹配,如 
       果失败,开始回溯,尝试增加`*'`+'的匹配,再匹配后面的项。比较`ab*'和`ab*?', 
       都能匹配`a',`ab*'还能匹配`abbbb',但`ab*?'仅能匹配到`a';`ab*c'和`ab*?c'都能 
       匹配`abbbc' 
    4) \{0,1\}相当于`?';\{1,\}相当于`+';\{0,\}相当于`*' 
    5) [...]:字符集合,所有在集合内的字符都能匹配,如[ab]+,同时匹配多个连续 
       `a',多个连续`b';各种字符都能放入集合,有三个字符放入集合的位置有要求,`]' 
       `-' `^',`]'要放在集合的的第一个位置,`-'要放在集合的第一个或最后一个位 
       置,`^'除了在集合的第一个位置,别的位置都可以(`^'放在集合的第一个位置有特殊 
       意义) 
    6) [^...]:反字符集合,所有不在集合的字符都能匹配,如[^a-z0-9A-Z],能匹配除了 
       大小写字母、数字以处的所有字符 
    7) `\':用于引用特殊字符,如`\*' `\$' `\['等有特殊含义的字符,如 
         要匹配`a$b' `a*b' `a[b',要用`a\$b' `a\$b' `a\[b';注意:`\'不能引用 
         `]'`-',如[^\],含义是匹配除了`\'以外的所单字符 
    8) `\':用于以`\'开始有特殊意义的字符序列 
       - `\|':连接两个表达式A和B,A和B之间是或的关系,如`abc\|inf',匹配`abc'和`inf' 
       - `\(...\)' `\(?:...\)' `\D':分组和引用。`\(...\)'即有分组,又有引用功能,可用`\D' 
         引用前面出现的分组;`\(?:...\)'仅有分组功能;`\D'用1~9个数字表示表达式 
         前面出现的分组内容 
       - `\w'匹配单词字符,`\<'匹配单词开始,`\>'匹配单词结束, `\b'匹配单词开始和 
         结束 

  

3.
当前buffer中的替换
 
    1) M-x replace-string <RET> foo <RET> bar <RET> 
       - 替换小写`foo'为`bar'时,替换时自动转换大小写,将`FOO'替换为`BAR',`Foo'替换 
         为`Bar',自动识别全小写,全大写,首字母大写替换。不是这三种情况的替换为 
         `bar',如`fOO'被替换为`bar' 
       - 如果将`case-replace'设为`nil',替换将不转换大小写,上面的操作将 
         `foo'`FOO'`Foo'都替换为`bar' 
    2) M-x replace-regexp <RET> REGEXP <RET> NEWSTRING <RET> 
       - REGEXP和NEWSTRING都是正则表达式,NEWSTRING包含一些以`\'开始有特殊意义的 
         字符序列,\&代表整个REGEXP;\D(数字)代表REGEXP中的第`D'个分组内容;\?:让替 
         换毎次都询问 
       - 如要将`M-w M-s M-y M-u'替换为`C-M-w C-M-s C-M-y C-M-u',执行 
         `replace-regexp <RET> M-[wsyu]' <RET> C-\& <RET> 
    3) `M-%(query-replace)'`C-M-%(query-replace-regexp)'询问式替换 
   

抱歉!评论已关闭.