书到用时方恨少……掌握Emacs的最好办法就是使用,使用,再使用……哈哈……
转自:http://www.ibm.com/developerworks/cn/education/aix/au-emacs4/section4.html
使用 Emacs 书签
Emacs 提供了保存缓冲区中位置的另一种工具。这些 Emacs 书签 的工作方式与寄存器相同,但是它们的标签可以超过一个字符长,而且它们比寄存器更为持久:如果保存了书签,那么您可以在两个不同的会话之间使用它们。它们将一直保留下来,直到您删除它们。正如它们的名称所表示的,对于保存您在缓冲区中的位置,以便您稍后可以返回到该位置(通常是在以后的 Emacs 会话期间),使用书签是非常方便的。
这个部分将向您介绍使用、设置、列出、保存和删除 Emacs 书签。
对于保存光标位置,书签与寄存器是很相似的,不同之处在于书签能够保持到当前会话之外。对于标记您在文件中的位置,并在稍后返回到该位置,书签是非常方便的,您可以为很多文件设置书签,并且您可以在单个文件中设置很多书签。
要在当前缓冲区中,为您正在访问的文件的当前光标设置一个书签,可以运行 bookmark-set
功能,它与 C-x r m
进行了绑定。
这一命令后面紧跟您的书签的名称;在缺省情况下,它就是当前缓冲区的名称。
现在,尝试保存一些书签:
-
启动 Emacs,并使光标定位于您的练习文件中的第 20 行:
$ emacs +20 practice.b
-
键入
C-x r m
以便将这个光标作为书签保存。 -
当 Emacs 请求为这一书签提供相应的名称时,可以按 Enter 以使用该缓冲区的名称 (practice.b)。
-
键入
M-<
以移动到缓冲区的顶部。 -
保存一个名为 top 的新书签:键入
C-x r m top
。
bookmarks-bmenu-list
功能可以列出一个由已设置的所有书签组成的菜单。通过键入 C-x r l
运行该功能,而您的会话应该与图 5 中所示类似。
图 5. Emacs 的书签菜单
您可以通过按 Enter 从该列表中选择一个书签。Emacs 将在一个新的缓冲区(如果尚未在一个缓冲区中打开它)中访问该文件,并将其作为当前缓冲区,同时将光标移动到该书签的位置。
现在,尝试运行这一功能,并使用箭头键选择您的“top”书签。
您可以通过直接跳转 至某个书签来访问它,而无需从您的书签主列表中选择它。要跳转至某个特定的书签,可以使用 bookmark-jump
功能,C-x r b
。这一命令将移动到特定文件中的给定位置;如果尚未在缓冲区中打开这个带书签的文件,那么这一命令将打开它。
在迷你缓冲区中会提示您输入要跳转到的书签。这个提示使用了自动完成功能,所以您只需键入该书签名前面足够的字母,以使其能够区别于其他的书签即可,然后按 Tab 以选择该书签。
尝试跳转到您的 practice.b 书签:键入 C-x r b prac
,按 Tab 键,然后按 Enter。
当您使用一个现有书签的标签来设置新书签(请参见设置一个书签部分)时,您将使用新的书签取代原来的书签。这是一种“删除”书签的方式,即使用新的值来取代其原来的值。当您在阅读一个大文件时,如果您仅仅保留一个书签以标记您的位置,上述方法是很常见的,因为您每次设置该书签时都替换了它先前的值。
但是您可以同时删除一个书签,那么该标签不再指向任何文件中的任何位置。要实现这一点,可以运行 bookmark-delete
功能,并在被询问时,给出要进行删除的书签的名称。
尝试删除您的“top”书签:
-
键入
C-x bookmark-delete
并按 Enter。 -
当被询问时,给出要删除的书签的名称:键入
top
并按 Enter。
通过使用 C-x r l
调出书签列表,您可以验证已经删除了该书签。
在 Emacs 的新版本中,一旦您生成了任何书签,那么您为当前 Emacs 会话所设置的书签将自动地保存到您的永久书签文件中。您的书签文件是您的 home 目录中的一个名为 .emac.bmk 的隐藏文件。
如果没有配置 Emacs 以使其自动保存您的书签,那么通过运行 bookmark-save
功能,可以将它们保存到您的 .emac.bmk 文件中。如果当您退出时没有保存任何新的书签,那么 Emacs 将询问您是否想要保存它们。
表 4 列出了使用 Emacs 书签的各种命令和键,给出了它们的功能名,并描述了它们的含义。
表 4. 使用书签的 Emacs 命令
键盘输入 | 功能 | 描述 |
---|---|---|
C-x r m Bookmark | bookmark-set | 设置一个名为 Bookmark 的书签。 |
C-x r l | bookmarks-bmenu-list | 列出所有已保存的书签。 |
bookmark-delete | 删除一个书签。 | |
C-x r b Bookmark | bookmark-jump | 跳转至名为 Bookmark 的书签中所设置的位置。 |
未定义 | bookmark-save | 将所有的书签保存到书签文件 ~/.emac.bmk 中。 |