⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>&nbsp;<BR>文件的搜寻&nbsp;<BR>&nbsp;<BR>搜寻特定的字串,并非&nbsp;EMACS&nbsp;所特有的功能,相信大多数的&nbsp;<BR>编辑器都具有如此的功能。但&nbsp;EMACS&nbsp;所采取的搜寻方法是,&nbsp;<BR>每键入一个字元就展开搜寻,EMACS&nbsp;称此种方式的搜寻为&nbsp;<BR>Incremental&nbsp;Search&nbsp;。&nbsp;<BR>当然,&nbsp;EMACS&nbsp;<BR>也提供非&nbsp;&nbsp;Incremental&nbsp;Search}&nbsp;,称为&nbsp;&nbsp;Nonincremental&nbsp;Search。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMACS&nbsp;对於所要搜寻的字串,仍是利用&nbsp;&nbsp;minibuffer&nbsp;<BR>来输入所欲搜寻的字串。&nbsp;<BR>此时,输入&nbsp;&nbsp;minibuffer&nbsp;的搜寻字串,若全由小写的英文字母&nbsp;<BR>(lower&nbsp;case)组成,则&nbsp;EMACS&nbsp;在展开搜寻的行动时,不论字母&nbsp;<BR>是否有大小写的差别,会将所有与&nbsp;&nbsp;minibuffer&nbsp;具有相同&nbsp;<BR>英文字母的字串都找寻出来。例如在&nbsp;&nbsp;minibuffer&nbsp;处输入&nbsp;abc,&nbsp;<BR>EMACS&nbsp;会找寻abc、&nbsp;Abc、aBc、&nbsp;abC、ABc、aBC、ABC&nbsp;等字串。&nbsp;<BR>所以在&nbsp;&nbsp;minibuffer&nbsp;处输入小写的英文字母,就表示所要找寻&nbsp;<BR>的字串包括大写的字母在内。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何直接找寻上述例子的&nbsp;ABC,而不需经过&nbsp;<BR>abc、Abc、aBc、&nbsp;abC、&nbsp;ABc、ABC&nbsp;等字串呢?欲达如此的效果,&nbsp;<BR>必需在&nbsp;&nbsp;minibuffer&nbsp;处,给予大写字母(upper&nbsp;case)的字串。&nbsp;<BR>例如,在&nbsp;&nbsp;minibuffer&nbsp;处,给予&nbsp;ABC&nbsp;的字串,此时,缓冲区&nbsp;<BR>的内容若为abc、&nbsp;Abc、aBc、&nbsp;abC、ABc、aBC、ABC&nbsp;&nbsp;,则会&nbsp;<BR>直接搜寻&nbsp;ABC&nbsp;。所以在&nbsp;&nbsp;minibuffer&nbsp;处输入大写的英文字串时,&nbsp;<BR>EMACS&nbsp;所找寻字串的大小写,就会与minibuffer&nbsp;字串的大小写&nbsp;<BR>完全一样。&nbsp;此种对大小写极度敏感的作法,称为&nbsp;&nbsp;case&nbsp;sensitive。&nbsp;<BR>EMACS&nbsp;对於大小写出现的位置也有差别,现在就先来讨论&nbsp;<BR>case&nbsp;sensitive&nbsp;的问题。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;minibuffer&nbsp;的字母都是小写,则可能找到的字串,包含&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所有大小写的字串。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原始文件:abc、&nbsp;Abc、aBc、&nbsp;abC、ABc、aBC、ABC&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入&nbsp;&nbsp;minibuffer&nbsp;的字串:&nbsp;abc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search&nbsp;string:abc、&nbsp;Abc、aBc、&nbsp;abC、ABc、aBC、ABC&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;minibuffer中的字母,若有任一个以上的字母是大写,则可能&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;找到的字串,就如同&nbsp;&nbsp;minibuffer&nbsp;所示的一样。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原始文件:abc、&nbsp;Abc、aBc、&nbsp;abC、ABc、aBC、ABC&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;&nbsp;输入&nbsp;minibuffer&nbsp;的字串:&nbsp;Abc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search&nbsp;string:Abc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;&nbsp;输入&nbsp;minibuffer&nbsp;的字串:&nbsp;aBc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search&nbsp;string:aBc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;&nbsp;输入&nbsp;minibuffer&nbsp;的字串:&nbsp;ABc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search&nbsp;string:ABc&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;&nbsp;输入&nbsp;minibuffer&nbsp;的字串:&nbsp;ABC&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search&nbsp;string:ABC&nbsp;<BR>&nbsp;<BR>如果希望&nbsp;&nbsp;minibuffer&nbsp;输入什麽,缓冲区就找到什麽时,&nbsp;<BR>例如,在&nbsp;minibuffer中输入&nbsp;abc,所要找寻的字串就是&nbsp;abc。&nbsp;<BR>此时就必需修改&nbsp;EMACS&nbsp;``case-fold-search''&nbsp;变数的值为&nbsp;``nil''。&nbsp;<BR>因为EMACS&nbsp;对此变数的预设值是&nbsp;t,它的意思就是使搜寻成为&nbsp;<BR>case&nbsp;sensitive。若将此变数改成非&nbsp;case&nbsp;sensitive&nbsp;时,在&nbsp;<BR>minibuffer}&nbsp;输入&nbsp;abc,就只会找寻&nbsp;abc。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知道了&nbsp;EMACS&nbsp;对大小写的处理程序後,现在就来谈谈&nbsp;<BR>&nbsp;incremental&nbsp;search和noincremental&nbsp;search。键入&nbsp;<BR>第一个字母至minibuffer&nbsp;时,搜寻的序幕就展开,是为&nbsp;<BR>incremental&nbsp;search。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用&nbsp;&nbsp;incremental&nbsp;search时,当&nbsp;&nbsp;minibuffer&nbsp;<BR>收到第一个搜寻字母时,搜寻行动就从游标所在位置向下开始搜索。&nbsp;<BR>此时的游标,会从原先游标所在位置移至其下第一个出现此字母的&nbsp;<BR>地方;当&nbsp;minibuffer&nbsp;出现两个字元时,游标也移至其下出现&nbsp;<BR>此两个字元的地方。当然,这些都必需要以缓冲区中有这些文字为前题,&nbsp;<BR>若找不到任何合适的文字时,&nbsp;<BR>&nbsp;echo&nbsp;area&nbsp;会出现&nbsp;``Failing&nbsp;I-search:''&nbsp;的警示语。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在&nbsp;EMACS&nbsp;中执行&nbsp;&nbsp;incremental&nbsp;search的方法有两种,&nbsp;<BR>一种是往前的搜寻(&nbsp;forward&nbsp;search),另一种是回头的搜寻&nbsp;<BR>(&nbsp;backward&nbsp;search。如下,就是二种搜寻所使用的指令:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;Ctrl-s&nbsp;(isearch-forward)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;游标所在处向前(右)搜寻。&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;Ctrl-r&nbsp;(isearch-backward)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;游标所在处往回(左)搜寻。&nbsp;<BR>&nbsp;<BR>当使用&nbsp;Ctrl-s&nbsp;或&nbsp;Ctrl-r指令时,&nbsp;EMACS&nbsp;的&nbsp;<BR>&nbsp;echo&nbsp;area&nbsp;会出现&nbsp;``I-search:''或&nbsp;``I-serach&nbsp;backward:''。当出现这些&nbsp;<BR>提示字时,就表示其後是要输入搜寻字串。只要键入第一个字元,&nbsp;<BR>搜寻的行动就立即展开了。&nbsp;虽然如此,仍有几个有关搜寻的关键字&nbsp;<BR>必需先行讨论,它们是&nbsp;``RET''、&nbsp;``DEL''&nbsp;与``Ctrl-g''。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;RET&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当&nbsp;&nbsp;minibuffer收到&nbsp;RET&nbsp;时,游标会停留在最後一个满足搜寻&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;条件之处,且结束搜寻的动作。这种做法的好处是,若所找的资料&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;就是所要的,且又是必需修改的资料,游标停留在该处,即可立即处理。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为,有些离开搜寻状态的方法,会使游标到第一次执行搜寻的位置,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这就是下面要谈的``&nbsp;Ctrl-g''&nbsp;的处理原则。&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;Ctrl-g``Ctrl-g''&nbsp;的用法有二种,其一、是离开搜寻,承如上面所言;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其二、就是当所键入的搜寻字串,无法找到完全符合的对应字串时,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可利用&nbsp;``Ctrl-g''&nbsp;将minibuffer中所能找到的子字串留下,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而将不能找到的资料除去。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以,若已经找到所要的字串而想离开搜寻时,键入&nbsp;``Ctrl-g''&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;除了可以离开搜寻外,还可以将游标带回原先的出发点。根据&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minibuffer&nbsp;处所给予的资料,完全无误的在缓冲区中找到相对应&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的文字後,以&nbsp;``Ctrl-g''&nbsp;可将游标归回原位。但若所给予的资料在缓冲区&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中无法找到完全对应的字,此时,若想离开搜寻的状态,就必需用「两次」&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的&nbsp;``Ctrl-g''&nbsp;才可完全脱离搜寻的状态。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此时,键入的第一个&nbsp;``Ctrl-g''&nbsp;minibuffer&nbsp;所找到的字串留下,而将&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无法兑现的字串删除。此时再键入一次&nbsp;``Ctrl-g''&nbsp;,则会完全离开搜寻的&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;状态,而游标也会自动移回展开搜寻时的位置。&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;DEL&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;想要修改&nbsp;&nbsp;minibuffer&nbsp;内的字串时,请用DEL(delete-backward-char)&nbsp;&nbsp;。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还记得它吗?它是用来删除字元的,此删除的动作是往回的删除。每执行&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一次的DEL,就是一个新字串的诞生,&nbsp;也就是一个新搜寻的展开。值得注意&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的是,此新展开的搜寻与原先的搜寻方向相反,这个设计是合理的。&nbsp;因为,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只要minibuffer&nbsp;输入任何一个字,搜寻就己展开了,此时,若以DEL&nbsp;来&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除错误的输入,则表示先前所找到的字串也不符需要,所以只能重新来过&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;才是可行之路。这也就是为何每删掉一个字元,搜寻的行动会回走的理由了。&nbsp;<BR>&nbsp;<BR>要使用搜寻的指令,只需键入&nbsp;``Ctrl-s''&nbsp;。此时minibuffer会出现&nbsp;<BR>``I-search:''。若键入&nbsp;Ctrl-r&nbsp;後,则出现&nbsp;``I-search&nbsp;backward:''。&nbsp;<BR>&nbsp;<BR>使用搜寻的指令,会有若干情形出现:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;首次搜寻,即觅得所要的字串。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用者此时可根据所需来做适当的处理。例如,离开搜寻,修改搜寻到&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的资料等等。&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;搜寻不利,必需一而再,再而三的努力,才能找到所要的字串。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此时只要重复使用&nbsp;``&nbsp;Ctrl-s''&nbsp;,游标就移至下一个符合的字串。所以,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只要所找寻的字串不变.就不需要再给予搜寻的字串。重复使用&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;``&nbsp;Ctrl-s''&nbsp;的结果,仍无法找到所要的字串,echo&nbsp;area&nbsp;会回应出&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;``Failing&nbsp;I-search:''&nbsp;的讯息。&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;若重复使用&nbsp;``&nbsp;Ctrl-s''&nbsp;的结果,已使&nbsp;&nbsp;echo&nbsp;area&nbsp;出现&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;``Failing&nbsp;I-search''後,则表示缓冲区已到了极限。若想再查看已阅□&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;过的资料,只要再使用一次&nbsp;``&nbsp;Ctrl-s''&nbsp;,就会迫使搜寻从原来的启始点&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;再进行一次的搜寻。&nbsp;<BR>&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;搜寻的过程中,若想回头再查阅已看过的资料时,只要交替使用&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;``&nbsp;Ctrl-s''&nbsp;与&nbsp;``&nbsp;Ctrl-r''&nbsp;,就可以了。&nbsp;<BR>&nbsp;<BR>EMACS&nbsp;可以将搜寻过的字串,再拿出来重复使用。因为,EMACS&nbsp;<BR>将使用过的搜寻字串,都放在一个名为&nbsp;&nbsp;search&nbsp;ring的变数中。&nbsp;<BR>它与先前讨论过的&nbsp;&nbsp;kill-ring&nbsp;类似,都为变数。既为变数,其值就可以&nbsp;<BR>增减与参阅的。至於如何查阅变数的值,请再行参考&nbsp;4.4&nbsp;节&nbsp;<BR>(EMACS&nbsp;buffer&nbsp;and&nbsp;windows)。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;再使用搜寻过的字串,只要将&nbsp;``&nbsp;serach-ring''此一变数的&nbsp;<BR>值取出即可。取出其值的方法有两种,一种是往前(右)的取出,&nbsp;<BR>另一种是往回(左)的撷取,其分界点是以最新使用过的搜寻字串&nbsp;<BR>为分野。因为&nbsp;``&nbsp;search-ring''&nbsp;为一个ring,所以撷取的方式,&nbsp;<BR>不是采顺时锺的方向,就是采反时锺的方向。今举一实例说明之。&nbsp;<BR>&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -