注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

[转]emacs buffer management  

2009-02-24 02:34:15|  分类: utility-emacs |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Buffer和Window是Emacs中的两个概念。简单理解Buffer是一个已经打开了的文件,Window是Emacs显示的一个窗口(一般在这个Window里显示一个Buffer)。我们看不见Buffer,看到的只是Window。一个Buffer的内容可以显示在多个Window,所以有时候可以看到一种情况,两个窗口的都显示同一篇文章。一个Window在某一特定时刻只能显示一个buffer,但可以此时显示一个Buffer,另一会儿显示另外一个Buffer。

类比:一个四面都有窗子(Window)的房子(Emacs),里面有几个人(Buffer),我们在房子外面,可以通过窗子看到里面的人。窗子比较小,在某一时刻只能看到一个人,里面的人排队站在窗前,最前面的人会挡住后面的人。如果想看到后面的人,则需要在另外的窗子中看,或者命令某个人站在某个窗子的最前面。里面的人会分身术,每个人都在所有的窗口前排队,所以我们可以在两个窗口看到同一个人。即,有多少窗口,一个人分身为多少个人。实际上人根本不会分身,而是这个房子特殊的折射效果造成的,但我们完全可以理解为人会分身。窗口可以新开和关闭,但只要房子存在,至少有一个窗口是开着的。房子里的人可以根据需要创建和销毁(汗,这可是很疯狂的。。。)


以下是正文。
===========================================================


Emacs buffer和window相关问题


怎么才能知道Emacs中活动buffer的数量?有三种方法:buffer列表(键入C-x
C-b时显示在一窗口中),Buffers菜单(他列出了活动的buffer和浏览这些buffer的系统命令),还有Buffer弹出菜单(按住Ctrl,
单击鼠标左键访问,他根据模式列出buffer).
Emacs会创建他自己的专用buffer.这些内部buffer的名字一般来说格式为 *buffer name* .*Help*,*scratch*和*Buffer List*就是Emacs创建的当中一些buffer.
当您启动操作系统Emacs时,他会建立两个buffer:
*Messages*
*scratch*
*Messages* buffer存储了Emacs收集自他启动操作系统时从minibuffer里显示的消息;*scratch*是个临时的scratchpad(涂鸦 板),以便您有地方输入东西.除非您使用C-x C-w明确的把他写到文件中,不然的话他不怎么会被保存下来.
当然,一般来说您用EmacsEditor文件时,这些文件就会被拷贝到同名的buffer中.如果您需要获得帮助,则会进入 *Help* buffer.

在Emacs里打开的buffer数量实际上没有限制.大多数情况下,只显示一个或者是两个buffer;不过即使您根本没有办法看到全部,您可以在某个Emacs会话里
创建的buffer仍处于活动状态.您可以把这些buffer想像成一叠纸,只有放在最上面的那页才显示在您眼前.不过任何时候,您都可以翻到另一页(另
一个buffer),或者是也可以创建一个新页.
每 个buffer都关联一个主模式(major mode),他决定了Emacs在这一个buffer里面的行为.比如说是,设计用来书写文本的文本模式(text mode),和Lisp模式的表现就不一样,后者被设计用来编写Lisp程序(Procedures)(Procedures).
如何操作多个buffer

果要新建包含一个文件的buffer,只需键入 C-x C-f
找到该文件.Emacs就会自动新建一个buffer并定位到该buffer.如果该文件已打开,C-x C-f
只是定位到已有buffer中,这一点很有意义,可以避免同一文件存在多个buffer导致混乱.如果键入 C-x C-f
后输入的文件名不存在,Emacs认为您想新建一个文件,并定位到一个空白buffer中.
C-x
b:在多个buffer之间进行切换;键入系统命令后输入buffer名,回车.如果已存在该buffer,则切换到该buffer中;不然的话以输入的
buffer名新建一个buffer,但是注意这一个buffer并没有和文件相关,所以我们可以得出结论关闭Emacs,他不怎么会给您任何提示.
C-mouse 1:按住Ctrl并单击鼠标左键,会弹出一个Buffer Menu,他会按主模式类型列出活动的buffer供您选择(Choose).
C-x ->(如何彻底删除buffer

意:如果您修改了一个buffer(且该buffer和一个文件相关),则Emacs会在彻底删除buffer前询问您是否保存所做修改;如果这一个
buffer和文件不相关,则您可以在该buffer里所做任何修改都会丢失,Emacs认为您不在乎这些buffer所以我们可以得出结论不作任何提示.所以我们可以得出结论Editor重要的
buffer之前最好先 C-x C-w 写到文件中,或者是用 C-x C-f 新建buffer.
C-x k:kill-buffer系统命令,彻底删除一个buffer;
M-x kill-some-buffers:彻底删除一些buffer;
如果彻底删除了当前会话里面的所有buffer,Emacs会新建一个 *scratch* buffer,总得有个东西显示在屏幕上不是?:P
如何保存buffer
C-x C-s:保存当前buffer;
C-x s:即save-some-buffers系统命令,一次保存所有buffer;
如何重命名buffer
M-x rename-buffer:重命名buffer;
如何使buffer只读
C-x C-q:切换buffer的read-only和read-write状态;
buffer和window的关系
buffer和window并不可能是一一对应的,同一个buffer可以有多个window,譬如您可以同时在多个window里查看同一buffer的不同部分.Mark是和buffer关联的;而不能是point是和window关联的.
C-x 2:即split-window-vertically系统命令,水(Water)平切分窗口;
C-x 3:垂直切分窗口;
C-x 4 b(f):在另一个窗口选择(Choose)另一个buffer(查找另一个文件),这样您可以不用切换到另一个window,就改变其buffer或者是打开文件;
C-M-v:滚动另一个window(C-v是滚动当前window);
C-x o:此处 o 表示other(其他),移动光标到另一个window;
C-x 0:彻底删除当前所在的window;
C-x 1:彻底删除当前所在window之外的所有window;
C-x 5 2:新建一个frame;


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/41220/showart_34238I.html
  评论这张
 
阅读(393)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017