帮你精通Emacs:详述buffer的3类18种操作

系统
本篇我们从三个方面阐述了 buffer 的概念与应用,我们调用 C-x C-q 设置当前的 buffer 为 read-only-mode,当再次调用则会重启回到 writable 模式。之所以有如此的实现,是通过参数 buffer-read-only 与 view-read-only 两项设置。

[[389694]]

Emacs的buffer是文本的载体。Buffer除了承载 textual contents 之外,还包括:

1)当前正在访问的文件,

2)文件是否修改过,

3)已经生效的 minor-mode 与 major-mode 等

所有这些都唔那个从 buffer-local 中查看。在 64 位机器上运行,单个 buffer 文件大小不超过 2^61 。

一、创建与选择 Buffer

如果打开的 buffer 并不存在,那么 C-x b 将会创建空白的 Buffer。

  1. // buffer 操作列表 
  2. switch-to-buffer 
  3. switch-to-buffer-other-window 
  4. switch-to-buffer-other-frame 
  5. previous-buffer 
  6. next-buffer  
  7. goto-line 

 重新绑定 previous-buffer 与 next-buffer 到 C-x p 与 C-x n 上面。

  1. (global-set-key "\C-xp" 'previous-buffer) ;;custom 
  2. (global-set-key "\C-xn" 'next-buffer);;custom 

 列出全部已经打开的 buffers (list-buffers)

基于buffer-list ,我们能够管理好当前注意力。

二、Buffer 的常用操作

我们调用 C-x C-q 设置当前的 buffer 为 read-only-mode,当再次调用则会重启回到 writable 模式。之所以有如此的实现,是通过参数 buffer-read-only 与 view-read-only 两项设置。

Rename-buffer 对当前 buffer 重命名,倘若已存在,则会报错。

比较有意思的是 rename-uniquely,将会在同名的 buffer 后面参加数字,以区分开来。此功能多用于我们打开多个shell, 比如打开了两个vterm:

vterms

Buffer也加入到我们日常的工作流中, 比如 append-to-buffer, prepend-to-buffer, copy-to-buffer, 以及append-to-file 等等。

三、如操作文件一般操作 buffers

我们能够如杀死进程一样杀死 buffer,常用的函数为 kill-buffer, kill-some-buffers, kill-matching-buffers.

以及应用 clean-buffer-list 关闭绝大多数 buffer。更能惹起程序员兴趣的,也许是 midnight-hook.

Indirect-buffer 的操作,make-indirect-buffer, clone-indirect-buffer and

clone-indirect-buffer-other-window。

应用的关键场景为,我们阅读文档的时候,双开同一份文件。

四、总结

以上,我们从三个方面阐述了 buffer 的概念与应用,总结如下:

  1. // 1.创建与选择 Buffer (7) 
  2. switch-to-buffer 
  3. switch-to-buffer-other-window 
  4. switch-to-buffer-other-frame 
  5. previous-buffer 
  6. next-buffer  
  7. goto-line 
  8. list-buffers  
  9. // 2. buffer的高频操作 (5) 
  10. read-only-mode 
  11. append-to-buffer,  
  12. prepend-to-buffer,  
  13. copy-to-buffer 
  14. append-to-file  
  15. // 3. kill buffer 与 indirect buffer (6) 
  16. kill-buffer 
  17. kill-some-buffers 
  18. kill-matching-buffers 
  19. make-indirect-buffer 
  20. clone-indirect-buffer 
  21. clone-indirect-buffer-other-window 

 【编辑推荐】

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-04-01 10:16:01

EmacsJavaScript elisp

2021-03-29 08:14:49

Emacs应用配置日程

2021-03-19 08:38:12

Emacs应用windows

2023-07-13 08:26:49

Java罗汉增强类

2021-05-28 08:23:03

JavaScriptSet编程

2021-01-13 11:25:12

JavaScript闭包函数

2020-11-10 16:01:25

程序员设计模式技术

2020-12-21 10:55:41

Linux系统ls命令

2011-04-18 15:32:45

游戏测试测试方法软件测试

2010-10-11 10:50:13

无线路由安全配置

2010-04-20 16:15:12

负载均衡方式

2021-04-08 09:14:24

js前端函数

2010-10-18 13:33:24

2015-10-26 08:55:07

提升Python编程语言

2018-09-11 09:00:50

工具开发应用程序

2017-08-08 10:45:01

Python编程语言

2010-03-12 10:31:53

升级无线LAN

2020-12-17 08:14:30

Linuxrsync备份

2021-04-07 08:03:51

js举起Hoisting初始化

2015-05-07 15:19:47

IaaSPaaSAzure
点赞
收藏

51CTO技术栈公众号