# 2.5.1 缓冲区变量

缓冲区（buffer）是一个 lisp 对象。这个对象中包含了将要被编辑的文本。绝大多数的缓冲区中的内容来自硬盘中的文件，因此可以被编辑。不过也有一些缓冲区另有他用。绝大多数的缓冲区对用户而言都是可见的，因此有时它们可以放在一个窗口中。不过这并不是必要的，缓冲区不需要一定被用户看到。每个缓冲区都有一个特定的位置，这个位置称为编辑点（point）；大多数的编辑命令，都是作用在当前缓冲区编辑点的附近的。不管任何时候，有且只有一个缓冲区称为当前缓冲区。

缓冲区的内容大多情况看起来都很像一个字符串，不过，这些字符串和 Emacs Lisp 中的字符串的用法可不一样。而且不同的缓冲区中，允许的操作也是可能不同的。举个例子，你可以像很高效地在当前缓冲区中插入文字，修改缓冲区的内容。当你插入一个字符串后，Emacs 会将其作为自字符串和原字符串拼接，并返回一整个新的字符串作为结果，展示在缓冲区内。

Emacs 中有很多标准函数，用来修改，测试当前缓冲区内的字符。本文档中有一整章的篇幅来描述这些函数。（详情查阅 文本章）

每个缓冲区变量都有几个关联的数据结构：

* 一个局部语法表
* 一个局部的按键映射
* 一个缓冲区局部变量绑定的列表
* 重载
* 缓冲区中的文本的文本属性

局部按键绑定和局部变量绑定列表中包含许多个性化的，对全局变量的重写。这些变量一般用来自定义不同缓冲区中的不同表现。也就是说，通过重载这些变量，来修改程序（Emcas）的行为，而不需要触及程序的源码。

此外，缓冲区也可以是间接的。这意味着，这个缓冲区和另一个缓冲区共享文本，但是以不同的方式显示这些文本。详情查阅 简介缓冲区章节。

缓冲区没有读取语法，它们以哈希表示打印，其中包含这个缓冲区的名称。

```
(current-buffer)
    => #<buffer objects.texi>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emacs-lisp.ivory.cafe/lisp-shu-ju-lei-xing/2.5-bian-ji-lei-xing/untitled-2-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
