天天看點

[Linux] emacs簡介emacs

emacs

求助編輯百科名片

[Linux] emacs簡介emacs

   Emacs

Emacs是一種強大的文本編輯器,在程式員和其他以技術工作為主的計算機使用者中廣受歡迎。EMACS,即Editor MACroS(編輯器宏)的縮寫,最初由Richard Stallman(理查德·馬修·斯托曼)于1975年在MIT協同Guy Steele共同完成。這一創意的靈感來源于TECMAC和TMACS,它們是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人編寫的宏文本編輯器。

目錄

Emacs的曆史
emacs的其他版本
GNU Emac
XEmac
Emacs的功能特點
此外Emacs還有如下特點:
各平台上的Emac
編輯模式
  • Emacs快捷鍵
  • 檔案操作
  • 編輯操作
  • 執行SHELL指令
  • 視窗操作
  • 緩沖區清單操作
  • 目錄操作
  • 程式編譯
  • 搜尋模式
  • SHELL模式
  • 列印資料
  • 收發郵件
  • 定制
  • 國際化
  • 版權
  • 附加元件
  • 詳細資訊
展開

編輯本段Emacs的曆史

  Emacs在1970年代誕生于MIT人工智能實驗室(MIT AI Lab)。在此之前,人工智能實驗室的ITS上運作的 作業系統PDP-6和PDP-10的預設 編輯器是一個叫TECO(Text Editor and Corrector)的行編輯器。與現代的 文本編輯器不同,TECO将擊鍵、編輯和文本顯示按照不同的模式進行處理,稍晚出現的vi與它有些類似。在TECO上擊鍵并不會直接将這些字元插入到文檔裡去,必須先輸入一系列相應的TECO指令,而被編輯的文本在輸入指令的時候是不會顯示在螢幕上的。在如今還在使用的UNIX編輯器ed(ed)上,我們還能看到類似的工作方式。  1970年代初,Richard Stallman通路Stanford AI Lab時見到了那裡的"E" editor。這種編輯器有着所見即所得的直覺特點,深深打動了Stallman。後來Stallman回到MIT,那時候MIT AI lab的黑客Carl Mikkelsen 已經給TECO加上了稱作“Control-R”的編輯顯示模式,使得螢幕能跟随使用者的每次擊鍵重新整理顯示。Stallman重寫了這一模式,使它運作得更有效率,後來又加入了宏,允許使用者重新定義運作TECO程式的鍵位。  這一新版的TECO立刻在AI實驗室流行開來,并且很快積累起了大量自定義的宏,這些宏的名字通常就以“MAC”或者“MACS”結尾,意為“宏”(macro)。兩年後,Guy Steele承擔起統一當時存在的各種鍵盤指令集的工作。Steele和Stallman經過一夜奮戰,最終由Stallman完成了這一任務,包括一套擴充和注釋新的宏包的工具。這個完成的系統被稱作EMACS,代表“Editing MACroS”。根據Stallman的說法,他采用這個名字是“因為當時<E>在ITS裡還沒有被當作縮寫用過。”("because <E> was not in use as an abbreviation on ITS at the time." )也有說法指出,當時 波士頓在MIT附近有家名為“Emack & Bolio's”的商店出售的冰激淩很受歡迎,Dave Moon是那裡的老主顧,他就将ITS上一個給文本排版的程式命名為BOLIO,然而Stallman并不喜歡甚或根本不知道那種冰激淩,此事後來成了黑客界的一樁公案。  Stallman意識到過多的定制、在開發過程中事實上的分支以及針對特殊用途的限制,威脅着Emacs的發展。後來他寫道:  “ Emacs的釋出基于社群共享,這意味着所有的發展都要回報給我,由我進行整合和釋出。("EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.") ”   最初的Emacs同TECO一樣隻能運作在PDP-10系統。Emacs雖然是在TECO的基礎上發展起來的,不過它已經足以被認為是一個新的文本編輯器了。很快,Emacs就成為ITS上的标準編輯程式,接着由Michael McMahon移植到Tenex和TOPS-20系統上。

編輯本段emacs的其他版本

  随後的幾年裡,開發出了許多運作于其他作業系統的類Emacs的編輯器,包括由Michael McMahon和Daniel Weinreb編寫的SINE(Sine is not EMACS)、EINE("EINE Is Not EMACS)以及ZWEI(“ZWEI Was EINE Initially”,工作于Lisp機器),它們的名字在德語中分别是“一”和“二”的意思。1978年,Honeywell的Cambridge Information Systems Lab的Bernard Greenberg用Maclisp(Lisp語言的一種)編寫出Multics Emacs,第一次完全采用Lisp作為擴充語言。Lisp語言提供了前所未有的靈活性,是以被後來的Emacs開發者沿用。  最早在Unix上運作的Emacs類編輯器是1981年James Gosling編寫的Gosling Emacs(Gosling後來發明了 Java程式設計語言)。Gosling Emacs以C語言編寫,使用Mocklisp作為擴充語言,Mocklisp有着類似Lisp語言的文法。1984年,Gosling Emacs成為專有 軟體(Proprietary software)。

編輯本段GNU Emac

     

[Linux] emacs簡介emacs

1984年,Stallman開始緻力于開發GNU Emacs,這将是一個自由軟體,以代替Gosling Emacs。最初GNU Emacs是在Gosling Emacs的基礎上開發的,不過Stallman後來用一個真正的Lisp 解釋器代替了原來的Mocklisp解釋器,由于Lisp解釋器在此軟體中的核心地位,這意味着實際上重寫了幾乎全部代碼。GNU Emacs是GNU計劃的第一個項目,以C語言編寫,将Emacs Lisp(其解釋器由C實作)作為擴充語言。GNU Emacs最早廣泛釋出的版本是15.34,出現于1985年。實際上版本2到12并不存在,GNU Emacs的早期版本都是以“1.x.x”的形式編号,後來他們把版本号最前面的1給丢掉了,因為原來的記法給人一種主版本号永遠不變的感覺。是以,Version 13是第一個public release,它釋出于1985年3月20日。  GNU Emacs和Gosling Emacs一樣運作在Unix系統上。不過GNU Emacs的功能更多,特别是它有一個真正的lisp作為擴充。結果,GNU Emacs很快就取代了Gosling Emacs,成為Unix系統上事實的Emacs編輯器。  1999年之前,GNU Emacs的開發相對封閉,以至于到了在《大教堂與市集》這本書裡被用作“教堂式”開發的典範這樣一個程度。在那以後這個項目就采用了公開的開發郵件清單和匿名CVS通路。開發工作在一個單獨的CVS trunk中進行,目前的版本号是22.0.93(這篇文章比較老,現在已經有23.0的版本了)。現在它的維護者是Richard Stallman。

編輯本段XEmac

  1991年,Lucid公司的Jamie Zawinski等人以GNU Emacs 19的一個早期alpha版為基礎,添加了一些新的特性,開發出Lucid Emacs。很快,Lucid Emacs的開發與GNU Emacs漸行漸遠,最終雙方的團隊放棄了将兩者合并的努力。Lucid Emacs被重新命名為XEmacs,它不像GNU Emacs那樣要求嚴格的代碼授權,是以能夠吸納大量的優秀擴充,在很多方面比GNU Emacs更為優秀。到目前為止,兩者都是衆多Emacs類編輯器中最受歡迎的選擇。

編輯本段Emacs的功能特點

  Emacs不僅僅是一個編輯器,他是一個整合環境,或可稱它為 內建開發環境,這些功能如讓使用者置身于全   

[Linux] emacs簡介emacs

emacs

功能的作業系統中,在基于編輯器的功能基礎上,Emacs自行開發了一個“bourne-shell-like”的shell: EShell。Emacs還可以:  收發電子郵件  通過FTP/TRAMP編輯遠端檔案  通過Telnet登入主機  上新聞討論區  登陸IRC和朋友交流  檢視月曆  撰寫文章大綱  對多種程式設計語言的編輯  調試程式,結合GDB,EDebug等。支援C/C++,Perl,Python,Lisp等等  玩遊戲  電腦  記日記  煮咖啡  管理日程,Task,ToDo,約會等  個人資訊管理  目錄管理  檔案比較  閱讀info和man文檔  浏覽網站  為各種程式(TeX等)提供統一的操作界面  ……

編輯本段此外Emacs還有如下特點:

  display editor  實時編輯器  進階編輯器  Self-documenting  可定制性  可擴充性(內建Lisp語言)  支援X Window環境

編輯本段各平台上的Emac

  Emacs是目前世界上最具可移植性的重要軟體之一,能夠在目前大多數作業系統上運作,包括類Unix系統(GNU/Linux、各種BSD、Solaris、AIX、IRIX、Mac OS X等等)、 MS-DOS、Microsoft Windows以及OpenVMS等。  Emacs既可以在文本終端也可以在 圖形使用者界面(GUI)環境下運作。在類Unix系統上,Emacs使用X Windows産生GUI,或者直接使用“架構”(widget toolkit),例如Motif、LessTif或GTK+等等。Emacs也能夠利用Mac OS X和Microsoft Windows的本地圖形系統産生GUI。用GUI環境下的Emacs能提供菜單(Menubar)、 工具欄(toolbar)、scrollbar以及context menu等互動方式。

編輯本段編輯模式

  Emacs采取的編輯方式是對不同類型的文本進入相應的編輯模式,即“主模式”(major mode)。Emacs針對多種文檔定義了不同的主模式,包括普通文本檔案、各種程式設計語言的源檔案、HTML文檔、TEX與LaTeX文檔,以及其他類型的文本檔案等等。  每種主模式都有特殊的Emacs Lisp變量和函數,使使用者在這種模式下能更友善的處理這一特定類型的文本。例如,各種程式設計的主模式會對源檔案文本中的關鍵字、注釋以不同的 字型和顔色加以文法高亮。主模式還提供諸如跳轉到函數的開頭或者結尾這樣特地定義的指令。  Emacs還能進一步定義“次模式”(minor mode)。每一個 緩沖區(buffer)隻能關聯于一種主模式,卻能同時關聯多個次模式。比如,編寫C語言的主模式可以同時定義多個次模式,每個次模式有着不同的縮進風格(indent style)。

編輯本段Emacs快捷鍵

  掌握Emacs的 快捷鍵可以說是Emacs愛好者的基本功,也是提高編輯速度和品質所必備的,但是初學者可能記不住那麼多的快捷鍵必要時可以翻一下,最常用的快捷鍵數量也就數十個。Emacs的快捷鍵都是綁定于ctrl和alt(或稱meta)上的,例如c-x就是ctrl+x,m-x就是alt+x。當然所有的按鍵都可以自定義。  當要退出編輯時C-x C-c 代表着,先按C-x 再按C-c才可以退出編輯環境.

編輯本段檔案操作

  C-x C-f 打開檔案,出現提示時輸入/[email protected]:filepath可編輯FTP檔案  C-x C-v 打開一個檔案,取代目前緩沖區  C-x C-s 儲存檔案  C-x C-w 存為新檔案  C-x i 插入檔案  C-x C-q 切換為隻讀或者讀寫模式  C-x C-c 退出Emacs

編輯本段編輯操作

  C-f 前進一個字元  C-b 後退一個字元  M-f 前進一個單詞  M-b 後退一個單詞  C-a 移到行首  C-e 移到行尾  M-a 移到句首  M-e 移到句尾  C-p 後退一行  C-n 前進一行  M-x goto-line 跳到指定行  C-v 向下 翻頁  M-v 向上翻頁  M-< 緩沖區頭部  M-> 緩沖區尾部  C-M-f 向前比對括号  C-M-b 向後比對括号  C-l 目前行居中  M-n or C-u n 重複操作随後的指令n次  C-u 重複操作随後的指令4次  C-u C-u 重複操作随後的指令8次  C-x ESC ESC 執行曆史指令記錄,M-p選擇上一條指令,M-n選擇下一條指令  C-d 删除一個字元  M-d 删除一個單詞  C-k 删除一行  M-k 删除一句  C-w 删除标記區域  C-y 粘貼删除的内容  注意:C-y可以粘貼連續C-k删除的内容;先按C-y,然後按M-y可以選擇粘貼被删除的内容  [email protected] 标記開始區域  C-x h 标記所有文字  C-x C-x 交換光标位置和區域标記區開頭  M-w 複制标記區域  C-_ or C-x u 撤消操作

編輯本段執行SHELL指令

  M-x shell 打開SHELL  M-! 執行SHELL指令 (shell-command)  M-1 M-! 執行SHELL指令,指令輸出插入光标位置,不打開新輸出視窗  M-| 針對某一特定區域執行指令(shell-command-on-region), 比如 C-x h M-|uuencode

編輯本段視窗操作

  C-x 0 關閉本視窗  C-x 1 隻留下一個視窗  C-x 2 垂直均分視窗  C-x 3 水準均分視窗  C-x o 切換到别的視窗  C-x s 儲存所有視窗的緩沖  C-x b 選擇目前視窗的緩沖區  C-x ^ 縱向擴大視窗  C-x } 橫向擴大視窗

編輯本段緩沖區清單操作

  C-x C-b 打開緩沖區清單  d or k 标記為删除  ~ 标記為未修改狀态  % 标記為隻讀  s 儲存緩沖  u 取消标記  x 執行标記的操作  f 在目前視窗打開該緩沖區  o 在其他視窗打開該緩沖區

編輯本段目錄操作

  C-x d 打開目錄模式  s 按日期/檔案名排序顯示  v 閱讀光标所在的檔案  q 退出閱讀的檔案  d 标記為删除  x 執行标記  D 馬上删除目前檔案  C 拷貝目前檔案  R 重命名目前檔案  + 建立檔案夾  Z 壓縮檔案  ! 對光标所在的檔案執行SHELL指令  g 重新整理顯示  i 在目前緩沖區的末尾插入子目錄的内容  [n]m 标記光标所在的檔案,如果指定n,則從光标所在的檔案起後n個檔案被标記  [n]u 取消目前光标标記的檔案,n的含義同上  t 反向标記檔案  %-m 正則标記  q 退出目錄模式  說明:在目錄模式中,如果輸入!,在指令行中包含*或者?,有特殊的含義。*比對目前光标所在的檔案和所有标記的檔案,?分别在每一個标記的檔案上執行該指令。

編輯本段程式編譯

  M-x compile 執行編譯操作  M-x gdb GDB排錯  M-x dbx DBX排錯  M-x xdb XDB排錯  M-x sdb SDB排錯

編輯本段搜尋模式

  C-s key 向前搜尋  C-s 查找下一個  ENTER 停止搜尋  C-r key 反向搜尋  C-s C-w 以光标所在位置的字為關鍵字搜尋  C-s C-s 重複上次搜尋  C-r C-r 重複上次反向搜尋  C-s ENTER C-w 進入單詞搜尋模式  C-r ENTER C-w 進入反向單詞搜尋模式  M-x replace-string ENTER search-string ENTER 替換  M-% search-string ENTER replace-string ENTER 互動替換  C-r 在進入查找/替換模式後,該指令進入疊代編輯模式  C-M-x 退出疊代編輯模式,傳回到查找/替換模式  C-M-s 向前正則搜尋  C-M-r 向後正則搜尋  C-M-% 正則互動替換

編輯本段SHELL模式

  C-c C-c 相當于Bash下的C-c  C-c C-z 相當于Bash下的C-z  C-c C-d 相當于Bash下的C-d  M-p 執行前一條指令  M-n 執行下一條指令  C-c C-o 删除最後一條指令産生的輸出  C-c C-r 螢幕滾動到最後一條指令輸出的開頭  C-c C-e 螢幕滾動到最後一套指令輸出的結尾  C-c C-p 檢視前一條指令的輸出  C-c C-n 檢視後一條指令的輸出

編輯本段列印資料

  M-x print-buffer 先使用pr,然後使用lpr  M-x lpr-buffer 直接使用lpr  M-x print-region  M-x lpr-region

編輯本段收發郵件

  M-x mail 發送郵件, C-c C-s 發送,C-c C-c 發送并退出  M-x rmail 接受郵件

用 gnus 收發郵件,閱讀新聞討論區

  M-x gnus 可以通過強大的 gnus 來收發郵件,閱讀新聞討論區。可以參考 [1]   或者閱讀 gnus 自帶的 manual 來獲得詳細資訊。

編輯本段定制

  Emacs使用者可以根據自身的需要和偏好對編輯器進行定制。強大而自由的個人定制功能是Emacs受到廣泛歡迎的重要原因之一。定制Emacs主要有三種方法。  第一種方法是使用Emacs的互動式定制功能。Emacs提供了圖形化的互動界面,使使用者能夠對可定制的公共變量進行設定。這種方法使Emacs的初學者不需要接觸Emacs Lisp代碼即可完成定制。  第二種方法是将一系列按鍵記錄為宏,調用這一宏可以重複進行已經記錄的一系列複雜操作。宏可以儲存并命名,以便按名調用,不過同一時刻隻能存在一個匿名的宏。  第三種方法是通過使用Emasc Lisp完成Emacs的定制。這種方法最為複雜,但是也提供了更多的靈活性和更強大的功能。使用者通常将個人定制的Emacs Lisp代碼儲存在一個名為.emacs的配置檔案中,Emacs程式運作之初便讀取這一檔案,完成使用者要求的配置。使用者可以通過.emacs檔案重設變量、重新定義按鍵的綁定(key bindings)、以及定義新的指令,以友善使用者個人的使用。很多進階使用者的.emacs檔案的個性化配置長達數百行甚至更多,這些個人的定制使他們的Emacs不僅與預設配置的功能不同,每個人的Emacs之間也千差萬别。這種差異能很好的滿足不同個性的偏好和不同工作的需求。  如果一段Emacs Lisp代碼确實有用,它通常會被打包并釋出給其他使用者。在網際網路上能找到很多這樣來自第三方的elisp庫,例如能用于編輯維基百科條目的wikipedia-mode。Usenet上的新聞討論區gnu.emacs.sources專門釋出新的elisp庫。有些第三方代碼最終還成為了Emacs“标準庫”的一部分。

編輯本段國際化

  Emacs支援對多種文字的文本編輯,包括UTF-8在内的諸多編碼系統,加上對多種 字元集、文稿、書寫系統,以及不同文化的書寫習慣都提供了支援,使得世界上大多數語言的使用者都能通過Emacs進行文本處理。Emacs還能通過調用諸如ispell這樣的外部程式,實作多種語言的拼寫檢查。

編輯本段版權

  Emacs的版權遵從 GNU通用公共許可證(GPL),賦予他人自由地對包括C和Lisp在内的Emacs源檔案進行修改和再發行的權利。較早版本的GNU Emacs文檔是在一種點對點(ad-hoc)的許可下釋出的,要求所有修改過的副本都要包含某些特定的文字。例如,GNU Emacs的使用者手冊中必須包含如何獲得GNU Emacs的說明,以及Richard Stallman的政論——《GNU宣言》(The GNU Manifesto)。作為較早版本的GNU Emacs的分支,XEmacs的手冊也采用相同的使用許可。較新版本的GNU Emacs文檔則采用《 GNU自由文檔許可證》(GNU Free Documentation License),以使用“不變段落”("invariant sections" )的形式包含有同樣的文本,并且要求這些文檔自我聲明為“GNU手冊”(GNU Manuals)。

編輯本段附加元件

  在Ubuntu 11.04版本上,安裝 Emacs 的同時還會安裝以下元件:  保持X剪貼闆和緩沖區之間的同步 (autocutsel)  郵件美化 (muttprint)

編輯本段詳細資訊

  總大小:下載下傳453MB,安裝所需空間793MB  版本:23.2+1-7ubuntu2 (emacs23)  許可協定:開放源代碼  更新:Cononical提供GNU Emacs23的關鍵更新至2012年十月。

繼續閱讀