幫你精通Emacs:詳述buffer的3類18種操作
Emacs的buffer是文本的載體。Buffer除了承載 textual contents 之外,還包括:
1)當(dāng)前正在訪問的文件,
2)文件是否修改過,
3)已經(jīng)生效的 minor-mode 與 major-mode 等
所有這些都唔那個(gè)從 buffer-local 中查看。在 64 位機(jī)器上運(yùn)行,單個(gè) buffer 文件大小不超過 2^61 。
一、創(chuàng)建與選擇 Buffer
如果打開的 buffer 并不存在,那么 C-x b 將會(huì)創(chuàng)建空白的 Buffer。
- // buffer 操作列表
- switch-to-buffer
- switch-to-buffer-other-window
- switch-to-buffer-other-frame
- previous-buffer
- next-buffer
- goto-line
重新綁定 previous-buffer 與 next-buffer 到 C-x p 與 C-x n 上面。
- (global-set-key "\C-xp" 'previous-buffer) ;;custom
- (global-set-key "\C-xn" 'next-buffer);;custom
列出全部已經(jīng)打開的 buffers (list-buffers)
基于buffer-list ,我們能夠管理好當(dāng)前注意力。
二、Buffer 的常用操作
我們調(diào)用 C-x C-q 設(shè)置當(dāng)前的 buffer 為 read-only-mode,當(dāng)再次調(diào)用則會(huì)重啟回到 writable 模式。之所以有如此的實(shí)現(xiàn),是通過參數(shù) buffer-read-only 與 view-read-only 兩項(xiàng)設(shè)置。
Rename-buffer 對(duì)當(dāng)前 buffer 重命名,倘若已存在,則會(huì)報(bào)錯(cuò)。
比較有意思的是 rename-uniquely,將會(huì)在同名的 buffer 后面參加數(shù)字,以區(qū)分開來。此功能多用于我們打開多個(gè)shell, 比如打開了兩個(gè)vterm:
vterms
Buffer也加入到我們?nèi)粘5墓ぷ髁髦校?比如 append-to-buffer, prepend-to-buffer, copy-to-buffer, 以及append-to-file 等等。
三、如操作文件一般操作 buffers
我們能夠如殺死進(jìn)程一樣殺死 buffer,常用的函數(shù)為 kill-buffer, kill-some-buffers, kill-matching-buffers.
以及應(yīng)用 clean-buffer-list 關(guān)閉絕大多數(shù) buffer。更能惹起程序員興趣的,也許是 midnight-hook.
Indirect-buffer 的操作,make-indirect-buffer, clone-indirect-buffer and
clone-indirect-buffer-other-window。
應(yīng)用的關(guān)鍵場(chǎng)景為,我們閱讀文檔的時(shí)候,雙開同一份文件。
四、總結(jié)
以上,我們從三個(gè)方面闡述了 buffer 的概念與應(yīng)用,總結(jié)如下:
- // 1.創(chuàng)建與選擇 Buffer (7)
- switch-to-buffer
- switch-to-buffer-other-window
- switch-to-buffer-other-frame
- previous-buffer
- next-buffer
- goto-line
- list-buffers
- // 2. buffer的高頻操作 (5)
- read-only-mode
- append-to-buffer,
- prepend-to-buffer,
- copy-to-buffer
- append-to-file
- // 3. kill buffer 與 indirect buffer (6)
- kill-buffer
- kill-some-buffers
- kill-matching-buffers
- make-indirect-buffer
- clone-indirect-buffer
- clone-indirect-buffer-other-window
【編輯推薦】