免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 831 | 回复: 0
打印 上一主题 下一主题

缓冲区和文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-03 22:40 |只看该作者 |倒序浏览

在这一部分中,将介绍最重要的 Emacs 缓冲区和文件命令:如何将文件载入缓冲区,如何将缓冲区保存到文件,如何在缓冲区间切换,以及如何“杀死”缓冲区。
               
从头创建一个新文件
               
当您用普通的方式启动 Emacs 时,它将向一个名为 scratch 的缓冲区开放,该缓冲区的用途显示在缓冲区顶部的一条消息中:
                ;; This buffer is for notes you don't want to save,
   and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.
               
模式行左边的区域始终用来显示当前缓冲区的名称。在此处,您可以看到这个缓冲区的名称,即 *scratch*。如果是 Emacs 自动创建的特殊缓冲区,其名称两边会有星号。
               
试着输入一行文本:This is a practice file. 然后再按 Enter,将光标向下移到一个新行。当您开始输入时,您会看到模式行的左侧出现两个星号,这表明当前的缓冲区中有未保存到磁盘的文本。
               
创建新文件的方法之一是将 scratch 缓冲区写到某个文件中。组合键 C-x C-s 会运行 save-buffer
命令,将当前的缓冲区保存到某个文件。正如您先前看到的,当您在一个无需保存的缓冲区中运行此命令时,Emacs
会显示相应的信息。但如果在您运行该命令的缓冲区中有未保存的更改,且该缓冲区与磁盘上的某个特定文件相关联时,缓冲区的内容会被写入该文件。如果您是在
新缓冲区或某个没有与文件关联的缓冲区(例如您现在所在的 scratch 缓冲区)中运行该命令,Emacs
将提示您指定用来保存该缓冲区的文件名称。
               
现在,请尝试下面的操作:键入 Ctrl-x Ctrl-s。看看在迷您缓冲区中是如何要求您给出要保存的文件名称的,如
图 4
所示。现在键入 practice。
               
                    
图 4. 保存 scratch 缓冲区
                    

               
               
在您按下 Enter 后,Emacs 会在迷您缓冲区中报告,有一个名为 practice 的新文件已被写入磁盘。键入 C-x C-c,退出 Emacs,然后查看目录,找到您的文件:
                $ ls
practice
$
               
关于 scratch 缓冲区,还有一件事是需要记住的。如果 Emacs 中没有打开其他缓冲区,那么 scratch 缓冲区会一直存在,当它是打开的唯一缓冲区时,是无法被关闭的。
               
利用文件名启动 Emacs
               

使 Emacs
启动时将某个特定的文件的内容放进一个新的缓冲区中以便编辑,请提供此文件的名称作为参数。如果您提供了多个文件,则每个文件会在属于它自己的缓冲区中打
开。如果您提供的文件名在磁盘上不存在,Emacs 会为该文件创建一个新的缓冲区,并说明(在模式行中)这是一个新文件。这是您在启动 Emacs
并编辑一个新文件时所做的。当您将缓冲区保存到磁盘时,Emacs 将其写入文件,并使用您提供的参数做为它的文件名。
               
请试着用您的文件“practice”启动 Emacs:
                $ emacs practice
               
               
您仍会看到 Emacs 的欢迎屏幕,但如果您按下一个键,如 C-g(或等足够长的时间),您会在 Emacs 窗口中看到您文件。没错,欢迎屏幕是另一个可供配置的选项。
               
打开一个文件
               
Emacs 不会对文件的内容进行直接操作。它会把文件内容的副本读取到您编辑的缓冲区中。使用 C-x C-f,即 find-file 命令,以便用文件的内容打开一个缓冲区。
               
现在,请试着用这个命令打开您的文件:
               
  • 键入 C-x C-c,退出 Emacs。
  • 再次启动 Emacs,但这一回不指定您的文件:
                               
    $ emacs
                               
                            
                        
  • 键入 C-x C-f,当迷您缓冲区中有相应要求时,请您提供文件的名称 (practice)。
                   
    访问缓冲区
                   
                        C-x b 命令可以从当前缓冲区切换到您指定的另一个缓冲区。迷您缓冲区中始终会提供一个缺省的缓冲区选项。如果您按下 Enter 且没有指定缓冲区的名称,您会切换到上述的缓冲区。缺省值一般是您上次访问的缓冲区。如果您之前没有访问任何缓冲区,则缺省值通常为 scratch 缓冲区。
                   
    现在键入 C-x b,注意 scratch 缓冲区会作为建议项显示在迷您缓冲区中。键入 Enter,您的 practice 文件将从窗口中消失,代之以您熟悉的 scratch 缓冲区中的内容。(在缺省情况下,scratch 缓冲区会包含三行消息,但有时该缓冲区为空白。)再次键入 C-x b,然后按 Enter,切换回 practice 缓冲区。
                   
    在 Emacs 中,如果您希望创建一个新的缓冲区,请切换到您要指定名称的那个缓冲区。
                   
    再次键入 C-x b,不过要将该缓冲区命名为 mybuffer。注意,窗口是空的,这是一个全新的缓冲区。键入一行文本,然后按 Enter
                    On what wings dare we aspire?
                   
    键入 C-xC-s,
    将这个缓冲区保存到磁盘。注意,现在 Emacs
    会要求您指定一个文件名。如果您创建的新缓冲区没有与磁盘上的某个文件关联,您可以在决定保存它时指定一个文件名。您指定的文件名不必与缓冲区名称相同,
    可以把它命名为 practice.b,请注意,Emacs 会改变缓冲区的名称,使之与新文件相符。
                   
    杀死缓冲区
                   
    请使用 C-x k 命令杀死某个缓冲区,或将其排除在您的 Emacs 会话之外。您将被提示键入要杀死的缓冲区的名称,当前的缓冲区是缺省缓冲区,如果您直接按下 Enter,会将它杀死。
                   
    现在试着杀死旧的 practice 缓冲区:键入 C-x k,然后当 Emacs 在迷您缓冲区中要求输入一个缓冲区名称时,键入 practice,然后按 Enter。practice 缓冲区会被杀死,而 practice.b 缓冲区则像刚才一样留在窗口中。
                   
    将缓冲区保存到磁盘
                   
    您已经知道了如何通过运行 C-x C-s
                        save-buffer 命令,将缓冲区的内容保存到磁盘。您需要了解这一过程的更多信息。
                   
    模式行的前几个字符描述了缓冲区的状态。现在,在您的 practice.b 缓冲区中键入另一行文本,然后按 Enter
                    What the hand dare seize the fire?
                   
    注意,模式行中的两个破折号会变成两个星号。破折号说明缓冲区的内容与磁盘中的相同,而星号则表示缓冲区中有未保存的编辑内容。
                   
    保存更改并退出 Emacs:键入 C-x C-s C-x C-c。您的目录中会多出几个新文件:
                    $ ls
    practice
    practice.b
    practice.b~
                   
    practice 和 practice.b 文件是您创建的,但 practice.b~ 则是一个由 Emacs 自动创建的文件。这是 Emacs 的备份
    件,当您每次在 Emacs 中编辑一个已经存在的文件时都会创建这个备份文件。当您将编辑内容保存到文件时,Emacs
    会写到一个新文件中以制作备份,这个新文件的名称与原先的文件相同,只是多了一个波浪符号。旧的 practice
    文件没有备份,因为您在创建它之后从未对其进行编辑。如果您此后在 Emacs 中编辑了它,Emacs 会将内容写入相应的 practice~
    备份文件。
                   
    Emacs 还会写入另一种文件,被称为 autosave
    文件,它与原先的文件名称相同,但是在名称前后会各添加一个英镑符号。在您操作缓冲区期间,Emacs 会按设置的间隔向 autosave
    文件写入内容。在缺省情况下是每输入 300 个新字符就向 autosave 文件写入一次。通常,在您杀死缓冲区时是不会见到 autosave
    文件的。这是因为与缓冲区关联的 autosave 文件被删除了。如果您的系统崩溃,或您在编辑会话中失去连接,autosave
    文件很有用,它为您提供了一个选择,使您可以在目录下找到这个文件以恢复丢失的编辑内容。
                   
    缓冲区和文件命令总结
                   
                        
    表 2
    包含的是某些最常用的缓冲区和文件命令列表,在您学习 Emacs 的过程中将用到这些命令。该表提供了命令绑定的键盘输入和命令的函数名。请记住,您总能使用相应的键绑定,或将相应的函数名作为 M-x 的参数,以运行某个命令(请参考
    学习如何键入 Meta 组合键
    )。
                   
    表 2. 常用的 Emacs 缓冲区和文件函数
                    绑定函数名描述
                                C-x C-s
                            
                                save-buffer
                            将当前的缓冲区保存到磁盘。
                                C-x s
                            
                                save-some-buffers
                            要求将所有未保存的缓冲区保存到磁盘。
                                C-x C-c
                            
                                save-buffers-kill-emacs
                            要求将所有未保存的缓冲区保存到磁盘,并退出 Emacs。
                                C-x C-z
                            
                                suspend-emacs
                            挂起 Emacs 并使之成为一个后台进程。
                                C-x C-b
                            
                                list-buffers
                            列出所有缓冲区。
                                C-x k
                            
                                kill-buffer
                            杀死一个缓冲区(缺省情况下为当前的缓冲区)。
                                C-x C-q
                            
                                vc-toggle-read-only
                            切换当前缓冲区的可读状态(如果适用还可以执行版本控制)。
                                C-x i
                            
                                insert-file
                            在
    插入点
    插入某个文件的内容。
                
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63367/showart_1678411.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP