BBS水木清华站∶精华区

 
Registers and Bookmarks 
 
EMACS 的  register 是一个可将文件与游标位置 
( point loaction)暂时存放其间的地方。 
 
 register 有它的缺失,那就是一旦离开目前所使用的 
EMACS,所有存於  register 中的资料,也会随著消失。 
若想再使用这些放於  register 中的文件或游标位置时, 
必需重新将资料存入  register 中。所以  register 
只适合暂时性的储存,若想永久使用文件或游标位置, 
必需仰赖  bookmark的帮助了。 
      bookmark 与  register 相似,它们都用来 
储存物件,但在相似中又有不一样的地方。二者不同的地方 
如下: 
 
   *  命名上的不同 
      bookmark 的名称可由「一个以上」的字元(character) 
     组成,但  register 的名称只能由「一个」字元来命名 
   *  资料保存的时间不同 
     存於  bookmark 的资料具有永恒性,它可以在离开 EMACS 
     後还存在。但存於 register 中的资料,在离开EMACS 後就无效了。 
 
     现在就分别介绍  register 与  bookmark 
二者的用法。首先讨论  register 的用法。 register 
可存放的内容有,游标的位置、一般文件与长方形文件的内容、 
档案的名称以及本文未曾讨论的视窗资料等等。现在就一一 
来介绍这些内容如何存放,以及存放後如何将其取出用, 
与视窗有关的  register 在此依然不予讨论。 
 
   *  储存与移动至特定 point 位置的方法 
 
 
 
        o   Ctrl-x r SPC  r(point-to-register) 
            将游标目前所在的位置,存於  register 中。存於 
            register 的步骤如下: 
 
 
 
            1.  将游标移至所要储存游标位置的地方。 
 
            2.  键入 ``|Ctrl-x r|'' 以及 ``SPACE''(空白键)後, 
                       echo area 会出现 
                            Point to register: 
 
            3.  此时可输入任意一个字元(character),做为此 
                register 的名称。以後要使游标移至此位置就要靠此字元。 
                register 的名称,只能由一个字元组成。 
 
        o  Ctrl-x r j  r(jump-to-register) 
          根据  register  r 所储存的位置,将游标移至 
           r 所设定的位置。使用此指令前,必需确定  register  r, 
          已设定的妥当了 
          以下就是设定游标位置以及使用游标位置的步骤: 
 
 
            1.  先以 ``Ctrl-x r SPC  r'',将游标的位置储存於 
                           register  r 内。 
 
            2.  键入 ``Ctrl-x r j'',  echo area 会出现 
                           ``Jump to register:'' 的讯息。 
 
            3.  在 ``Jump to register:'' 之後,输入已设定妥善的 
                            register  r 的名称。 
                          此时游标所在的缓冲区若与  register  r 所设定 
                          的缓冲区不一样时,游标会自动移至另一个缓冲区,视窗的 
                          内容也会换成新的缓冲区内容。所以,使用  register 
                          所存放的游标位置,是可以跨越不同的缓冲区来做移动的。 
 
 
   *   register 还可用来存放经常被访问到的档案。 
           有人或许会不解,为何耗费如此的功夫,只为了从事 
           `` Ctrl-x Ctrl-f'' 指令可以做到的事。使用 `` Ctrl-x Ctrl-f'' 
           有一个不便之处,就是若所欲访问的档案与 EMACS 的预设档案位置 
           不一样时,则必需告之完整的路径名。所以,此时若使用  register 
           来储存档名,就只需要给予  register 的名称即可。至於, 
           冗长的全称就交给  register 去处理了。以下就是以 
            register 存档案的方法: 
 
 
       1.  使用  register 来储存档名与储存游标位置,最大的 
                 不同点在於,以 register 来储存档名必需借助 ``.emacs'' 档。 
                 因为以  register 来储存档案名称,必需借由 ``.emacs'' 来设定。 
 
       2.  以  register 来储存档案名称的实际执行步骤如下: 
 
 
            1.  设定 ``.emacs'' 的方法 
                     在 ``.emacs'' 档中以 ``set-register'' 函式 ,将  register 
                     的名称以及其所储存的档名设定清础。以下的例子就是将 
                     ``chap7.tex'' 的档名,放於名为 ``a'' 的  register 时, 
                     ``.emacs'' 档的设定方法 。 
 
                   (set-register ?a '(file . "\~/report/emacs/basic/chap7.tex")) 
 
 
            2.  当档案名称的设定已在 ``.emacs'' 档中完成後,必需离开 
                  EMACS ,再重新进入 EMACS 一次。因为只有重新执行 
                  EMACS , 修改过的 ``.emacs'' 档才有机会被重新执行。 
                  重新执行过的 EMACS ,就可以 `` Ctrl-x r j   r'' 
                  将档案从  register   r 中拿出来使用。 
                  以下就是使用  register  r 的方法: 
 
 
                 1.  键入 ``Ctrl-x r j RET '',  echo area 会出现 
                             ``Jump to register:''。 
 
                 2.  待 ``Jump to register:'' 的讯息出现时,即可输入已设定好 
                              register 名称。以上例为例,若输入 ``a'', 
                             则视窗会出现 chap7.tex 的文件内容。 
 
   *   register 中储存文件的方法 
           储存於  register 的文件可以有二种:一种为线性的文件 
          (linear text),另一种为长方形的文件(rectangle text)。 
           所以有此区分,原於使用  register 储存文件,需先将所要 
           储存的文件做上标记,再根据标记放於  register 中。 
           线性文件与长方形文件在标记上是一样的,要区分二者的差异 
           只能仰赖使用时的指令了。想进一步了解长方形区域,请参考 5.4 节 
           ``Move Text and Copy Text'' 有关长方形部份。以下就讨论二者的用法。 
 
        o  线性文件的  register 设定方法如下: 
 
            1.  将要放入  register 的线性文件做好标记。 
                    设定标记的详细方法,请参考 5.3 节。现略做题示, 
                    使用  Ctrl-@ 或  Ctrl-SPC 做为线性文件的起始点, 
                    以游标所在的位置为终点。 
            2.  使用指令 `` Ctrl-x r s  r'',将所设定好的线性文件 
                    放入 register  r 中。 
            3.  欲使用  register  r 中的资料时,可以指令 
                   `` Ctrl-x r i  r'' 将存放於  r 中的资料取出使用。 
 
              以上所设定的  register 有一特性,就是离开EMACS 後所有的设定 
              也成为历史。想将  register 内容保留的方法,是将设定写在 
               ``.emacs'' 中,如下是以  register ``a'' 储存  register 文件, 
               以及以  register ``.'' 储存 ``。'' 资料的设定法: 
 
                 (set-register ?a "register") 
                 (set-register ?. "。") 
 
        o  长方形文件的  register 表示法: 
 
            1.  将要放入  register 的长方形文件做好标记。设定标记的 
                   方法以及所谓长方形文件的定义,请参考第五章第三节及第四节。 
            2.  使用指令 `` Ctrl-x r r  r'',将所设定好的线性文件 
                    放入 register  r 中。 
            3.  使用  register  r 中的资料时,可以指令 
                    `` Ctrl-x r i  r'' 将存放於  r 中的资料取出使用。 
 
               放於  register 中的文件,不论是线性文件或长方形文件, 
               将其拿出使用的指令都是一样的。不一样处在於放入  register 
               时的差异。会有差异是不难理解的,因为二者在处理标记的过程是一样, 
               只有靠存入  register 时,以不同的指令来加以区别。 
 
     谈完了  register ,接下来介绍  bookmark 。 
      bookmark 的一些基本概念,已在前面略做介绍了,现在就进一步详述它。 
      bookmark 与  register 在记录游标位置的功能是一样的, 
     但在对  register 的命名方面二者就显得有差异了。  bookmark 
     的命名可以由一个以上的字元组成。换言之,它可以有一个较长的名字, 
     但  register 就只能由一个字元来命名。而且以  bookmark 
     设定的资料,可永久储存起来,即使离开EMACS, bookmark 
     的资料也不会就此消失。所以想要永久保存的资料,只有借重  bookmark 了。 
以下就是  bookmark 的使用方法。 
 
  1.  以 `` Ctrl-x r m  bookmark ''指令,将游标所在的 
          位置做上记号(mark),此记号就称为  bookmark。 
          当第一次使用 `` Ctrl-x r m'' 指令时,  echo area 会出现 
           ``Set bookmark (visited-filename) :'' 的讯息。此时,若不输入任何 
          字元只键入 RET ,系统会以所访问的档名做为  bookmark 
           的名称。若输入其它的字串,则  bookmark 就以此字串命名之。 
  2.  以 `` Ctrl-x r b  bookmark RET'' 指令,来移动游标的位置。 
           键入 ``Ctrl-x r b'' 时, echo area 会出现 
 
           ``Jump to bookmark (bookmark-name) :'', 
 
           括号内的名称为系统的预设值。若所给予的预设值不是心中所爱, 
           可以在 `:' 之後输入想要的  bookmark 名称。 
 
资料以  bookmark 的方式储存时,使用者若不另行指定 
储存的档名,系统会将有的讯息存入一个名为 
 
                    ``~/.emacs-bkmrks''\index.emacs-bkmrks 
 
的档案中。 
 
接下来,讨论一个使 EMACS 的编辑功能更强化的议题 - Fixing Typos 。 

BBS水木清华站∶精华区