Emacs學習筆記(2): 初識Emacs


內容提要

1.Emacs是什么

2. Emacs能做什么

3. Emacs的界面

4.基本概念--命令

5. 基本概念--快捷鍵

6. 基本概念--模式

Emacs學習筆記2: 初識Emacs

1.Emacs是什么

其實很難給Emacs下一個定義。正統的說法也許是"Emacs即Editor MACroS(宏編輯器),是一種文本編輯器"。

最初人們認為Emacs是一個編輯器(Editor),與Vim一起並稱為兩大神器,據說Vim是編輯器之神而Emacs是神之編輯器,又據說世界上的程序員分三種,一種使用Emacs,一種使用vim,剩余的是其它。

也有人認為Emacs是一個架構在編輯器上的集成環境,除了最基本的編輯功能,還可以完成文件管理、終端模擬、瀏覽網頁、收發郵件、編譯程序等工作,以及煮咖啡。

更有人說Emacs是偽裝成編輯器的操作系統,甚至說Emacs是一種信仰

Emacs最初由RichardStallman在1975年開發,之后產生了眾多的衍生版本,而目前使用得最多的兩個版本是RichardStallman在1984年開發的GNUEmacs和1991年由JamieZawinski寫成的XEmacs。Emacs可謂歷史悠久,目前的GNU Emacs的版本是23.4。一部Emacs的歷史,等於一部計算機史,一部世界黑客史。本文不想將編輯器大戰的戰火燒到這里,所以還是就此打住,來看看Emacs能做什么。

2. Emacs能做什么

王垠師兄如是說:

據我所知,Emacs 的能力包括:
1.    編輯文本
2.    編輯程序
3.    作為其它程序的界面
4.    作為操作系統
5.    煮咖啡


Emacs是一個具有超強擴展性,超強定制性的操作平台,它能做什么取決於你對它的定制和擴展。Emacs之所以強大,就來源於其近乎無限的可定制性和可擴展性。

3. Emacs的界面

未定制的Emacs如下圖所示:

0 1329317327v33B

整個窗口在Emacs中叫做frame,圖形界面下的Emacs可以打開多個frame。每個frame從上到下分成3部分,分別是緩沖區,狀態欄和回顯區。

緩沖區是編輯的主區域,但是在這里操作的還不是真正的文件,而是文件的一個緩存(buffer)。只有執行寫入操作時,才會將buffer的內容寫入到文件。緩沖區可以分成多個區域,緩沖不同的內容。這些區域在Emacs中成為"窗口"。

緩沖區之下是狀態欄,顯示當前的一些狀態信息,比如圖中從左至右依次為:
U: 當前的文件編碼是UTF-8, 如果是GBK會顯示c
**: 文件狀態,**表示未保存,--表示可寫,%%表示只讀
Emacs1: 是當前編輯的文件的名稱
All: 表示當前緩沖區已經顯示文件的所有內容,否則會顯示比如Bot,表示處於文件的末尾處
L23: 當前光標所在的行數
fundamental: 當前的模式
等等,不同發行版的Emacs顯示的狀態欄內容可能會有所不同。

最下面是回顯區,提示當前正在進行的操作。比如"文件已保存"之類的信息。如果一個命令沒有輸入完,這里還會顯示已經輸入的指令,提示用戶。

4.基本概念--命令

對Emacs所有的操作都是通過調用命令實現的。對於一些常用的命令,會定義快捷鍵以便快速使用。
不管是否有快捷鍵,都可以通過M-x command 的方式執行命令。(M-x即Alt+x,是一種快捷鍵,后面會有介紹)比如輸入回車,相當於:
M-x newline
通過M-x執行命令時,可以使用 TAB 補全,使用 M-p 上翻, M-n 下翻。
Emacs中的取消通常是連按三下ESC:
ESC ESC ESC (M-x keyboard-escape-quit)
但是在命令執行過程中,有可能該命令無法使用(比如有些命令是交互式的,需要輸入一些參數),所以中止一條命令的執行最好使用C-g (M-x keyboard-quit)。

5. 基本概念--快捷鍵

本質上,快捷鍵只是一種發送命令的方法!
Emacs的快捷鍵通常以組合鍵的方式定義。如M-x 表示Alt+x。前面的字母M代表修飾符,Emacs定義的修飾符如下:
C-:Control
M-: Alt(應該是Meta,在 PC 上,Meta鍵 通常對應 Alt 鍵)
C-M-: 同時按住 Ctrl 和 Alt
S-:Shift
RET:Return
TAB:Tab
ESC:Esc,等價於M-。比如,C-M-r ,等價於ESC C-r
SPC:空格鍵
DEL:退格鍵
Delete:刪除鍵

上面提到了ESC C-r。這是一種組合方式,表示先按ESC,再按C-r。Emacs中的很多快捷鍵定義成組合的方式。如 C-x C-c(M-x save-buffers-kill-emacs)
此外還有些命令可以傳遞參數,在Emacs的表示法中用 (#) 代表。如:
C-u (#) C-f 代表重復#次C-f

6.基本概念--模式

Emacs是一種“有模式”的編輯器。如果用過Vim就很容易理解。不過Emacs中的模式分成主要模式(major mode)和次要模式(minor mode)兩種。
主要模式由文件類型決定,每個buffer打開文件時會根據文件類型決定其主要模式。常見的主要模式有:

fundamental-mode:缺省的 Emacs 模式,擁有最少設置和綁定
text-mode:編輯文本的基本模式
c-mode:用於編輯 C 程序源代碼
lisp-interaction-mode:用於編輯和編譯 Lisp 代碼
ptex-mode:用於編輯 TeX 文檔



次要模式可以組合到主要模式中,常見的次要模式比如:

abbrev-mode:用於生成和使用縮寫
auto-fill-mode:用於自動文字回繞、填充較長的行和段落
line-number-mode:顯示當前行號
overwrite-mode:覆蓋模式,代替默認的插入模式



可以通過命令來指定模式:M-x  mode_name
對於一個buffer來說,當前的主要模式只能有一種,當指定主要模式時,原來的主要模式會被替換;而當前的次要模式可以有多種。
如果輸入的模式包含在當前模式中,對於主要模式,會清空所有的次要模式;對於次要模式,會關閉這個次要模式。
模式的變化在狀態欄中可以看到。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM