GNU 計劃創始人 Richard Stallman 和 Guy Lewis Steele Jr. 在1975 年共同打造了 Emacs (Editor MACroS), Emacs 使用 Lisp 作為功能擴充語言, 具有強大的擴展性,與可客製性, 還有各式各樣好用的套件, 所以也有人稱它是神的編輯器,或是偽裝成編輯器的作業系統 @_@; 如果想知道更多對於 Emcas 特性的敘述, 可以參考另一篇文章。
安裝 Emacs
在 Mac 下可透過 Homebrew 進行安裝
brew install emacs
建議配置
Emacs 的目錄位於 ~/.emacs.d, 若希望自定個人的專屬配置,可在 ~/.emacs.d/init.el 裡面設定。
建議一開始可直接使用高手們的配置, 因為他們的配置都經過了多年的磨練, 在深思熟慮後才決定出最佳的按鍵定義並也解決了許多套件相容性問題; 我個人偏好 Steve Purcell 的配置, 因為他是一位頂尖的 Rails 開發者, 所以使用他的配置可以大量減少自己打造 Rails 開發環境的時間。
符號與按鍵
為方便之後的說明,在這邊先定義一些符號和按鍵的對應關係
C: 代表 CtrlM: 代表 AltRet: 代表 Return
安裝 Packages
在 Emacs 最簡單安裝套件的兩個方式分別為
使用 package-install 命令
M-xpackage-installRetPackage NameRet: 安裝套件
透過 Package Menu
M-xlist-packages : 進入套件安裝目錄C-s: 尋找套件名稱i: 標記為即將安裝的套件u: 解除標記d: 標記為刪除的套件x: 開始安裝/反安裝 以標記的套件r: 刷新列表
基本操作
C-xC-c: 離開 EmacsC-z: 暫停 Emcas,並將它放到背景C-hC-h: Help for Help
存取檔案
C-xC-f: 尋找檔案並開啟C-xC-s: 存檔
字元操作
C-d: 向前刪除字元Del: 向後刪除字元
拷貝和貼上
M-w: 拷貝游標所在行C-u3M-w: 拷貝連續三行C-w: 剪下游標所在行C-u3C-w: 剪下連續三行C-y: 貼上暫存區資料
暫存區操作
C-xrs(#): 拷貝標記區域到數字暫存區C-xri(#): 從數字暫存區將資料插入游標所在處
Buffer 操作
C-xb: 切換 bufferC-xLeft: 切換到上一個 bufferC-xRight: 切換到下一個 buffer
區段操作
C-Space: 開始標記區域C-k: 從游標所在刪除到本行結尾M-0C-k: 從游標所在刪除到本行開頭C-xh: 標記整個檔案內容
視窗操作
C-x1: 單一視窗C-x2: 水平分割C-x3: 垂直分割C-x0: 關閉選擇的視窗M-xwindmove-up: 向上切換視窗M-xwindmove-down: 向下切換視窗M-xwindmove-left: 向左切換視窗M-xwindmove-right: 向右切換視窗
移動游標
C-a: 移到游標所在行的開頭C-e: 移到游標所在行的結尾M-a: 移到段落開頭M-e: 移到段落結尾M-gg: 移到指定行數Esc<: 移到檔案開頭Esc>: 移到檔案結尾C-v: 移到下一頁M-v: 移到上一頁C-xrSpacea: 記錄目前游標位置到 register aC-xrja: 跳到 register a 所儲存的位置
字串取代
M-%old_stringRetnew_stringRet: 取代字串M-xreplace-regexpRetregexpRetnewstringRet: 以正規表示法取代字串
程式碼操作
M-;: 將程式碼加上註解符號C-uM-;: 移除程式碼前的註解符號Tab: 縮行對齊M-xlinum-mode: 開啟/關閉 行號顯示
其他操作
C-_: 回到上一步M-_: 回到下一步C-g: 取消目前操作C-xz: 重複上一次的操作M-!: 執行外部命令
好用的 Packages
Dired: 檔案管理
C-xd開啟目錄c拷貝檔案r將檔案重新命名d刪除檔案+新增目錄z使用 gzip 進行壓縮/解壓縮m標記檔案u反標記檔案U取消所有標記g刷新列表^到上一層目錄
osx-cliboard: 使用 OSX 的剪貼板
M-xosx-clipboard-mode: 進入 osx-clipboard-mode
Eshell: Emacs Shell
M-xeshell: 啟動 eshell
Rinari: Rails 的開發環境
C-c;fm尋找 modelC-c;fv尋找 viewC-c;fc尋找 controllerC-c;fr尋找 rspecC-c;fM尋找 mailerC-c;fi尋找 migrationC-c;fl尋找 libC-c;fj尋找 javascriptC-c;fo尋找 logC-c;c啟動 consoleC-c;w啟動 web-server
comments powered by Disqus