Emacs 查找与替换

查找默认情况下查找是不区分大小写的,当时如果你输入了一个以上大写字母的话,就区分大小写了,因为它感觉你在乎大小写。

递增查找

C-s -> mini buffer 会出现I-search ->输入你想查找的单词,随着你输入字符增多递增高亮 -> 找到所要单词,键入enter -> C-s 命令可以切换单词的位置

C-s     Isearch-forward   从光标位置向前(朝文件尾方向)开始递增查找

C-r     Isearch-backward  从光标位置向后(朝文件头方向)开始递增查找

C-s C-w                   从光标位置开始的单词作为查找字符串

C-s C-y                   从光标位置到行尾之间作为查找串

Return                    退出查找

C-g     Keyboard-quit     取消递增查找(需按两次)


单词查找

词组查找一般用在大段文本编辑中,比如写新闻、写信之类的。它在查找的过程中会忽略掉一些标点符号,比如换行符,逗号,句号之类的,查找时也是进行的增量查找,边输入边找,不过对于单词来说是全词匹配

M-s w RET words RET      (word-search-forward)

M-s w C-r RET words RET  (word-search-backward)


查找替换

--先M-< 到文件的开头,在进行替换,因为它是从光标位置向前查询替换

最简单粗暴的方式就是使用replace-string 这个命令,用法如下:M-x replace-string RET oldstring RET newstring RET,第一次回车输入需要替换的字符串,第二次回车输入想要变成的字符串,最后确认。它将会把所有匹配oldstring 的字符串全部替换掉,建议大家在没绝对把握前还是不要用这个的好。

  暴力替换的正则版命令replace-regexp,用法和上面一样,只是oldstring改为正则表达式。

   实际上,我们在替换的时候并不希望所有的东西都换掉,还是想中间有个给自己判断选择的过程,在Emacs中称其为查询替换,M-% (query-replace) ,下面是回答的方式

   还有一种情况就是如果你想重复使用刚才的命令(不仅仅是查询替换),C-x Esc Esc 组合键会将最后一次的命令显示在mini buffer。同时你可以用Esc p向前,Esc n向后找到符合的命令还可义用上下键,左右键不行。

Emacs 查找与替换_第1张图片

 

简单的说就是你在查找替换的过程中突然发现需要修改点东西,但又不想直接退出查找替换,这时Emacs提供了一个临时的编辑状态可以让你先干刚想起的事,等你做完了还可以回到查找替换状态,这个临时的状态就叫递归编辑状态。

      注意看,这时mode line中的模式名外面加了一层方括号"[]",标明进入了递归编辑状态。干完事后使用C-M-c 就可以回到前一个状态,

  实际上,在任何时候(不止是查询)都可以用命令M-x recursive-edit Ret 进入递归编辑,C-M-c 退出递归编辑并返回当前工作中。

  如果想退出递归编辑同时退出查询替换可以按C-](命令是 M-x abort-recursive-edit 或 M-x top-level RET)      



查找和替换中大小写

现在有两个问题

  一:查找的时候,如果你输入random 他会把Random,RANDom 都输出来。

  二:替换时Emacs会根据被替换字母大小写情况做相应替换,如果用tandom 替换random,那Random-> Tandom; RANdom -> TANdom

case-fold-search 默认为T,意思是如果用户的字符串不是大小写混合或全部大写,就不区分大小

case-replace     默认为t,意思时根据原始文本调整替换字符串中的字母大小写情况。

可以通过下面方式对这两个参数进行设置

M-x set-variable RET -> 提示输入变量名 -> 输入case-fold-search/case-replace RET -> nil RET

在.emacs可以进行精确匹配和替换时不改变大小情况设置search Case-sensitive


为特定文件设定个别的辞典
在每一个文档的结尾,只要将下列指令加入作为注释,你都可以指定您现行的文档要使用哪一辞典。 Ispell 开始拼字检查时即可应用所指定的辞典:
<!-- Local IspellDict: english -->
<!-- Local IspellPersDict: ~/emacs/.ispell-english -->


部分参考:http://josephpan.net/blog/?p=738



你可能感兴趣的:(正则表达式,search,Random,buffer,emacs,文本编辑)