理解Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)

openEuler 欧拉 安装Oracle19c数据库RPM包安装 欧拉系统安装部署oracle 19c rpm方式 阅读详情
概念上,Emacs在两个方面有别于一般程序。首先,“窗口"的概念不同。其次,Emacs的“缓冲区”是脱离窗口或框架独立存在的。
(Emacs里的frame相当于Microsoft Windows的window概念。A frame can show several windows, each showing a buffer.)

1 窗口与框架

  我们所看到的Emacs“窗口”并非Emacs的窗口,而是Emacs的图形窗口框架(GUI windows frames)。理解这个概念是必须的,因为在未有图形化窗口之前,Emacs已经可以在“终端”运行了,用Windows的术语来说,就是“控制台"程序。看看下面的图,就明白了。
 

1.1 缓冲区,独立于窗口与框架之外
 本质上,窗口和框架只是显示缓冲区内容的工具。缓冲区内可以包含文件内容,可以是Emacs内部自定义的,譬如*Messages*,*scratch*,或*help*等,也可以是用户自定制而其中内容未写入文件的。
  许多图形界面的应用程序是将图形窗口(Emacs中称之为Frames)与一些文件紧密联系在一起的,而Emacs的将缓冲区与图形窗口分离的方式是强大又灵活的。实际上,我们在大部分时间里宁愿使用一个Emacs Frame,而使用C-x b来切换缓冲区,这要比在多个Frame中采用鼠标切换或采用切分窗口等方式更容易,尽管它们在一些情况下存有优点。

1.2 更深入地了解缓冲区
你知道该怎样获知Emacs中开了几个缓冲区及它们的详细信息吗?有三种方法可以实现:
  1. C-x C-b,显示缓冲区列表;
  2. 缓冲区菜单,列举了打开的缓冲区以及导向它们的快捷命令;
  3. 在Emacs的窗口中,摁下Ctrl键,点击鼠标左键,可以弹出缓冲区列表。
 
Emacs自行定义了一些缓冲区,它们的名字,通常是像*buffername*,*help*,*scratch*这样的格式,并且缓冲区列表本身就是Emacs自定义的缓冲区,如下图:

当你启动Emacs的时候,会产生*Messages*和*scratch*两个缓冲区。*Messages*是用来显示从Emacs启动开始的所有命令信 息的缓冲区,*scratch*是草稿缓冲区,你可以在其中乱写东西,但不会被保存,除非用户使用C-x C-W命令。

在用户使用 Emacs编辑文件时,所读取的文件会被复制到同名的缓冲区内。如果用户需要帮助,那么也可以打开*help*缓冲区。可打开的缓冲区的数量是没有限制 的。大部分时间,仅有一两个缓冲区被显示,还有好多即使你没看到,但它们也是存在的。你可以把缓冲区想象为一堆页面,其中仅有一页是当前页,你可以切换到 令一页,或者创建新页。每个缓冲区都关联一个主模式,它决定了在该缓冲区内,Emacs的行为。譬如,text模式,被设计为书写文档的;Lisp模式, 是用于书写Lisp程序的。用户可以在一个Emacs窗口或框架中显示多个缓冲区,要紧是记住你创建的所有缓冲区。

2 在多缓冲区模式下工作

如果你想创建一个包含文件内容的缓冲区,可以C-x C-f,Emacs会自动创建一个缓冲区并将你带入其中。如果你已经在一个缓冲区打开了这份文件的副本, 那么C-x C-f会把你带入那个已存在的缓冲区中,在此请仔细体会一下,Emacs给你带来的好处吧!而如果你要打开的文件不存在,Emacs会为你创建 一个新文件的缓冲区,并将你带入其中。

请记住:
C-x C-f是打开一个文件,该命令后总是跟随这目录/文件名的,如果要打开的文件不存在,就创建新文件。

2.1 切换缓冲区
你有意识到模式行并不显示文件名,而仅仅显示缓冲区名吗?其他一些版本的Emacs可以两个名字都显示,但GNUEmacs只显示缓冲区名,这是因为通常情况下,文件名和缓冲区名是一致的,除非你去修改它们。
要在不同缓冲区之间移动,就C-x b吧。Emacs会给你提供一个默认的最近隐掉的缓冲区名,回车就可以进入。或者输入你想进入的缓冲区名字的前几个字,然后摁Tab键,Emacs会自动为你补全缓冲区名,回车进入即可。

请记住:
C-x,b之后则跟随一个缓冲区的名字。如果相应缓冲区不存在,Emacs会自动创建一个新的空缓冲区,与C-x C-f的不同之处是,新建的缓冲区不与文件关联,在退出Emacs时,Emacs不会提醒你要保存缓冲区。

查看已打开的缓冲区,还有以下两种可选方式:
  1. C-x C-b,这种方法可用于终端环境中的Emacs;
  2. 在Emacs窗口中,摁下Ctrl键,点击鼠标左键。该方法只对图形化的Emacs有效。
2.2 删除缓冲区
为什么要删除缓冲区?
  • 你的Emacs中开的缓冲区太多了,想去掉几个;
  • 对已有文档的修改具有灾难性,将这个缓冲区干掉就可以了。
要删除缓冲区,可键入C-x k,Emacs会显示当前被显示的缓冲区名,也可键入想删除的缓冲区的名字,然后回车。如果已与文件建立关联的缓冲区,内容有了 改动,Emacs会提示你保存一下。其他情况,则缓冲区就永远的消失了。而键入M-xkill-some-buffers可成批删除缓冲区,系统会一个一 个列举已存在的缓冲区,问你是不是把它kill掉,你只需要回答`yes'or`no'就可以了。当所有的缓冲区都被kill掉之后,Emacs不会屏幕空着的,它会创建一个新的*scratch*缓冲区。

3 在多个窗口中工作

窗口是屏幕上显示Emacs缓冲区内容 的区域。可以一次打开多个窗口,每个窗口可以显示不同的缓冲区,也可以显示相同缓冲区的不同部分,这些窗口之间不存在覆盖现象,只是对屏幕进行分割。一旦创建新窗口,旧窗口就自动缩小。就好像屏幕是馅饼,可以把它切成许多块,但这些窗口的排列只有两种方式:水平的或竖直的。
3.1 创建水平排列的窗口
最常用的命令是C-x 2,可以将当前窗口水平切分为两个窗口,可以不断重复这个命令,切分出更多的窗口。你也可以让Emacs每次启动时打开多个窗口。如果你需要在水平切分的两个窗口中编辑两份文档,则可以在启动Emacs时,指定这两个文件的名字。譬如,我想编辑1.tex和2.html两份不同的文档,启动Emacs时,可以直接emacs 1.tex2.html即可。如果编辑超过两份文档,那么Emacs会在一个窗口中显示所指定的文档中最后的那份,然后会在另一个窗口中给出缓冲区列表。

可以在一个窗口中,使用C-M-v去滚动另一个窗口的屏幕。

3.2 在多个窗口间迁移
要将光标从一个窗口切换到另一个窗口,可以C-x o(o表示other)。在图形化的Emacs中,可以用采用鼠标来切换窗口。

3.3 将窗口咔嚓掉
要删除当前所在的窗口,可以C-x 0。而要删除所有的窗口,只保留当前窗口,可以C-x 1。另外也可以像删除缓冲区那样,交互删除一批窗口,M-xdelete-windows-on。但删除一个窗口仅仅意味着它不再显示,而不会删除缓冲区内的任何信息,我们依然可以使用C-x b来切换到自己需要的缓冲区。

4 在多个框架中工作

现在,我们都已经知道Emacs将图形化窗口称为“Frames”的。这一节中,将讨论如何创建框架,框架之间的操纵,以及框架的删除。
4.1 创建新框架
C-x 52,打开一个新框架,Emacs会让这个新框架包含当前的缓冲区,并把它置于当前框架之上。如果你建立的新框架完全覆盖了当前框架,那么可以定制新框架的尺寸来把它们分开。比较方便的解决方法,就是把以下代码添加到你的.emacs文件中:
(setq initial-frame-alist '((top .10) (left . 30)   (width . 90) (height . 50)))
(setq default-frame-alist '((width .80) (height . 45)))
 
以上代码设定了Emacs框架的宽度和高度。第一个框架的尺寸是在initial-frame-alist中设定的,90个字符宽,50行高,框架左上角坐 标为(10,30)。后续框架尺寸,由default-frame-alist定义,80个字符宽,45行高。你也可以自己根据你的显示器自行设置其他参数。

如果你想为已经打开的一个名为xxx的文件创建一个新框架,那么可以C-x 5 fxxx。如果你想为已经打开的一个名为xxx的缓冲区创建一个新框架,可以C-x 5 b xxx。

注意:这里复习一下C-x 4f xxx和C-x 4 b xxx。
4.2 在多个框架间迁移
C-x 5 o 即可。

5. 关于缓冲区更多的知识

在本节中,将了解多个缓冲区的保存、缓冲区重命名、设置缓冲区只读,以及针对缓冲区列表的一些操作——这不仅仅是一个有用的工具,在讨论目录编辑器时也是一个很好的原理上的导引。
分享一些基于微信小程序开发的小游戏源码 小游戏小程序是运行在微信生态系统(或其他支持小程序的平台)中的轻量级应用程序,专为休闲游戏体验而设计的小程序子类别,小游戏小程序通常体积较小,加载速度快,用户无需等待长时间即可开始游戏。用户无需下载或安装单独的游戏应用程序,即可通过小程序入口直接进入游戏,同时小游戏小程序通常包含排行榜、分享功能等社交元素,可以增强游戏体验并促进用户参与。game.js:游戏页面的逻辑文件,包含页面数据、生命周期函数、事件处理函数等。game.wxml:游戏页面的结构文件,定义了页面的布局和组件。 阅读详情

相关推荐

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 400

Emacs 中的缓冲区(Buffer)介绍

缓冲区是 Emacs 用于管理文本和内容的核心抽象,它是一个临时存储的工作区域,不仅用于编辑文件,还支持运行命令、查看帮助、显示日志等操作。

十子木的博客 862

python cartopy绘制扇形区域图/cartopy绘制北极部分区域

实际上,这个问题原因还是由于投影转换的问题,在set_extend时,绘制的上下边界仍然是方形、未被正确投影的边界,与我们的set_boundary存在冲突,最根本的原因还是在于cartopy对于投影计算的一些缺陷。另外我们需要指出的是:**该方法不适用于极地投影,即NorthPolarStereo,由于NorthPolarStereo本身投影特性只需一个参数,本身并不适合。我们绘制极地投影时,同样也是使用set_boundary绘制圆形边界,那么当我们想要绘制扇形时,可以通过。请根据喜好自行选择,

weixin_43750300的博客 3213

程序员小助手 | Emacs,最强编辑器,没有之一

Emacs的Logo -- 简书作者 谢恩铭 转载请注明出处 【程序员小助手】系列 在这个系列文章(不定期更新)中,小编会把这些年的编程学习和工作中使用到的个人感觉非常好的软件推荐给大家,希望能够共享美好资源,使大家提高编程和办事效率。 Emacs,最强编辑器,没有之一 小编知道,此标题一出,肯定会遭受广大群众“诟病”,说不好还会被其他编辑器的粉丝暗地里“干掉”。 比如,Vim,Subli

程序员联盟 4139

基于SSM的足浴管理系统(源码+开题)

研究内容: 本研究的内容主要包括以下几个方面:首先,我们需要对现有的足浴管理系统进行深入的研究和分析,了解其优缺点;最后,我们需要对新设计的系统进行评估和优化,以满足用户的需求和提升系统的使用体验。因此,开发一种基于SSM的足浴管理系统,能够有效地解决这些问题,提高足浴服务的质量和效率。研究目的: 本研究的主要目的是设计和实现一个功能完善、操作简便、用户体验良好的基于SSM的足浴管理系统。通过对系统的研究和设计,我们希望能够为足浴服务行业提供一个高效、便捷的工具,从而推动足浴服务行业的发展。

林科程序设计 1688

告别‘小目标’丢失!手把手复现DNANet红外检测网络(PyTorch版)

本文详细介绍了如何使用PyTorch从零实现DNANet红外小目标检测网络,重点解析了DNIM模块和CSAM注意力机制的设计与实现。通过实战教程,帮助开发者解决红外小目标检测中的特征提取和训练调参难题,适用于军事侦察、安防监控等场景。

weixin_28701593的博客 254

Emacs学习笔记(7):简单的配置

继续Emacs学习计划。这是“初学者”阶段的最后一篇。完成本节的内容,就可以向“中级计划”进军了 : ) 经过一段时间的使用,已经大体适应了Emacs的快捷键,不过还是要参考命令备忘表。 Emacser通常要对Emacs进行定制,使用起来才会爽。据说Vimer嘲笑Emacser的一个理由就是: Emacser如果丢了配置文件就什么都干不了。 好吧好吧,这些争论和我没什么关...

weixin_30756499的博客 927

Android14_MTK调试LCD屏功能

android14 MTK平台调试LCD屏

m0_37786046的博客 1473

Emacs之实现复制当前已打开文件buffer(一百三十五)

本篇目的:为了方便复制已打开文件的全部内容,写了两个实现,提高开发效率。是 Emacs Lisp(elisp)中的一个内置函数,用于获取缓冲区(buffer)中的文本内容,并将其作为字符串返回。在 Emacs 中,每个文件、目录或区域都有一个与之对应的缓冲区,缓冲区内部维护着这些内容的状态,包括文本内容、光标位置等。函数- 提供了一种方便的方式来访问缓冲区中的文本内容。函数的基本语法如下:其中,start和end参数分别指定了一个范围,用来截取缓冲区中的一部分文本。如果不指定这些参数,

Android系统攻城狮 2096

AD9361跳频系统优化:Fast Lock功能实战配置指南(含Profile寄存器详解)

本文详细解析了AD9361跳频系统中Fast Lock功能的实战配置方法,包括Profile寄存器的深度解析与优化策略。通过预校准和快速调用机制,显著提升频率切换速度至7-15微秒,适用于TDD跳频系统。文章还提供了查找表选择、硬件控制优化和性能验证的实用指南,帮助开发者解决实际工程中的常见问题。

weixin_33725722的博客 209

ROS从入门到精通0-1:教程导读

ROS概念太多太复杂?ROS从入门到精通系列订阅必看

FRIGIDWINTER的博客 1万+

Emacs入门:重要的基本概念、基本读写操作以及一些常用的快捷键

Emacs入门Emacs常用快捷键多窗口Emacs配置文件 Emacs常用快捷键 1、emacs常用帮助快捷键 方法 描述 Ctrl+h + Ctrl+h 重复两次Ctrl+h可以打开帮助界面 Ctrl+h t 打开官方自带的tutorial Ctrl+h k 查询快捷键(shortcut key)的帮助信息 Ctrl+h v 查找变量(variables)的帮助信息 Ctrl+h f 查询快捷键的帮助信息 2、emacs光标控制快捷键 方法 描述 Ctr

嵌入式技术与人工智能 5073

论文阅读-Whisper语音识别(OpenAI)

Whisper 是一个自动语音识别(ASR,Automatic Speech Recognition)系统,OpenAI 通过从网络上收集了 68 万小时的多语言,其中11万小时覆盖96 种语言,12万小时的语言标号为英语,用多任务(multitask)监督数据对 Whisper 进行了训练。

一位不是很硕的鉴伪方向硕士 6368

emacs

今天本来计划是看IPC的事实上,我本来是打算是看opensolaris的源码,但是因为其中使用到了mmap(),所以必须去学习进程管理,看PIPE的时候,用到程序,又用到了emacs,和Makefile,automake autoconf, 等,其实以前也都学习过了,只是emacs,今天半天的时间,就用熟悉了,差不多可以用了,但是。。。emacs太深奥了,考虑写一份emacs的入门说明,大

sunniechen的专栏 331

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Emacs的缓冲区(Buffers)、窗口(Windows)和框架(Frames)

<br />1 窗口与框架 我们所看到的Emacs“窗口”并非Emacs的窗口,而是Emacs的图形窗口框架(GUI windows frames)。理解这个概念是必须的,因为在未有图形化窗口之前,Emacs已经可以在“终端”运行了,用Windows的术语来说,就是“控制台"程 序。看看下面的图,就明白了。<br /><br /><br />1.1 缓冲区,独立于窗口与框架之外 本质上,窗口和框架只是显示缓冲区内容的工具。缓冲区内可以包含文件内容,可以是Emacs内部自定义的,譬如*Messag

melong100的专栏 989

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

emacs的窗口和缓存区[转]

原文地址 http://apps.hi.baidu.com/share/detail/15870273 概念上,Emacs在两个方面有别于一般程序。首先,“窗口"的概念不同。其次,Emacs的“缓冲区”是脱离窗口或框架独立存在的。 (Emacs里的frame相当于Microsoft Windows的window概念。A frame can show several windows, each s...

bool的博客 747

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Emacs 折腾日记(二十六)——buffer与窗口管理

本文介绍了Emacs中窗口与缓冲区的管理方法。首先解释了Emacs中frame、window和buffer的概念区别,然后重点讲解了窗口管理技巧,包括使用evil插件模拟vim窗口操作、ace-window实现窗口快速跳转等。第二部分介绍了缓冲区管理方案,通过awesome-tab插件实现类似vim的buffer-line功能,包括显示缓冲区分组、快捷键绑定等。文章最后展示了通过这些插件可以基本复刻vim中的窗口管理体验。

Masimaro的专栏 782

emacs 通过名称切换frame(帧)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33881753的博客 378

Emacs window、buffer、frame等命令

<br />1、window命令<br /><br /> <br />2、buffer<br /><br /> <br /> <br /><br />3、frame<br /><br /> 

懒人的技术笔记 2438

emacs的模式和buffer

在emacs里面,很多东西的叫法都和平时常常遇到的不太一样。比如开个窗口,不叫window,叫作frame。还有,每个frame里面的窗口,叫作buffer。启动emacs的时候,默认打开了一个frame,这个frame里面有几个buffer。如果你再开一个frame,看起来,就好像又开了一个emacs似的。下面说说buffer。每个buffer都会对应于一个主模式,此外,buffer还可

schumyxp的专栏 2848

实现emacs中重新载入硬盘的文件到buffer

最近在用emacs,发现一个问题就是当本地文件内容改变,emacs没有提供快捷方式用来更新当前buffer的内容和disk一致,每次要重新打开这个文件,很麻烦, VIM 中实现了这个快捷方式的:!e,找好久没找到, 那就索性自己实现一个吧,还好我不怕折腾, 这就是我更喜欢用emacs的原因(自己写程序实现), 还好实现起来也不是太难,下面是我实现的代码:             (defun r

horst Hu的专栏 4978

emacs快捷键-缓冲区的操作

备注emacs的buffer相关快捷键

wangcg123的专栏 2581

Emacs必修:缓冲区与ibuffer

如果不太较真,缓冲区可以当作是Emacs打开的文件。缓冲区操作就是对打开的文件进行保存、关闭和切换等操作。1 使用ibuffer代替list-buffers(defalias 'list-buffers 'ibuffer) 2 基本快捷键命令作用绑定list-buffers缓冲区列表C-x C-bswitch-to-buffer切换缓冲区C-x bkill-buffer关闭缓冲区C-x k3 ib...

R语言与生物信息学 6068

Emacs 的文件与缓冲区

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33973600的博客 195

emacs 中的快捷键

转自: http://blog.donews.com/leal/archive/2005/10/18/592725.aspx

Emacx的专栏 792

[Emacs学习笔记]保存文件和相关操作

[Emacs学习笔记]保存文件和相关操作上一张截图,目的是让读者对Emacs的文件操作有一定的了解,甚至不用继续阅读文字内容就能解决使用Emacs的最基本问题。

GYZ的csdn 864
上一篇: 用GDB调试程序
下一篇: 第一个例子:求解泊松方程
HateCode
博客等级 码龄20年 25粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值