[C Language Notes] Emacs 教學 (1) : 介紹、基礎指令

Coldhenry
Henry’s Jottings
Published in
5 min readAug 16, 2019
Photo by Christopher Gower on Unsplash
  • 在學習 Cousera 上 Duke University 所開的課程 Writing, Running, and Fixing Code in C 所教學與使用到的編輯器即為 Emacs。
  • 此編輯器對於本科為機械的我實屬不認識(想說以前不都用Visual Studio, Sublime…) 藉機會整理出筆記來複習
  • 來認識和學習這個重多碼農推薦的 editor 吧!

Introduction

About “editor”

  • 編輯器是生產例的關鍵
  • 其最重要的目標,是不阻礙你的想法與思緒成為程式碼
  • 一個有經驗的programmer,有時候可以達到進入專心打code的境界(而不用去思考各種操作如何實現)
  • 編輯器的設計核心理念,是讓你可以完完全全透過鍵盤實現所有操作,而不需要花費心思在移動滑鼠、點選菜單這類容易讓你分心的小動作
  • 藉由熟悉各種鍵盤操作,你可以將這些指令內化成為肌肉記憶,就不用耗費注意力在上面,專心於編譯任務上

編輯器通常有下列三種增進生產力的特色

  1. Syntax highlighting
  2. Automatic indentation according to the structure of the language
  3. The ability to interact with the other tools used by the programmer — the debugger
    * 在 Emacs ,會使用一種 debugger 叫作 gdb

About “Emacs”

五倍紅寶石的這篇文我覺得有很淺顯易懂地介紹了大家 editor 特性,並且在 Emacs 上有特別說明,可參考逛逛

接下來的部分是基本操作指令介紹,上面那邊文的下半部也是,不過是一個更詳細的版本。我的版本應該會更傾向於「初學者」一開始該認識的。所以看完我的再看上面的應該會有循序漸進的學習感 XD

Basic Emacs Operation

注:此編譯系統係Duke University所提供環境

  1. emacs filename : 以emacs來開啟特定檔案
  2. C-x C-f : 找尋特定檔案
  3. C-x 2 : 將視窗一分為二。在上面找到檔案後,可能想同時看原本檔案跟後來打開的,可以配合 C-x b (改變至前一個buffer)將一個畫面改回去
    * 若buffer不是想要的畫面,可以用搜尋來改變其一視窗
  4. C-x o : 在兩個視窗變換游標
  5. C-x C-s : 存檔
  6. C-z : suspend emacs / fg : continue suspended job
  7. cat filename : print contents of filename (stay tuned in UNIX basics)

Git operation

  • Git是一個非常受歡迎且廣泛使用的版本控制系統(Revision Control System)。更多的介紹在下面連結的文,歡迎參考
  1. git add : 開始追蹤一個檔案
  2. git commit -m "message" : 以文字記錄改變
  3. git push : 推送至遠端保存
  4. git pull : 從遠端讀取變更記錄

Editing Files with Emacs

注: M = Alt / Ctrl = C

  1. Ctrl-s : 往下搜尋 / Ctrl-r : 往上搜尋
    * 搜尋是移動的一種方式
  2. Ctrl-l : redraw screen / 適用於有時候往下搜尋會卡在畫面不會動
  3. Ctrl-x u : undo (所有動作的前一步)
  4. 只想還原某部分的編輯呢?
    你可以先標記(set mark)要還原的部分: Ctrl-space
    再使用 Ctrl-x u 來還原標記區域的操作
  5. Ctrl-a : 移動游標至句首 / Ctrl-e : 移動游標至句尾
  6. Ctrl-k : 剪下單行至句尾的部分 (k: kill)
  7. Ctrl-y : 貼上剪下的 (y: yank)
  8. 剪下特定區域文字?
    Ctrl-space 選定區域
    再使用 Ctrl-w 來剪下區域
  9. 複製區域: Ctrl-space + M-w
    * 如果要複製的區域是一個被(){}包起來的東西,可以用 Ctrl-s 去找,會直接把找到的範圍都 cover 起來
  10. M-y : 不貼上複製的,而是貼上前一次剪下的
  11. M-/ : 完成未完成(但已出現過的)單字 → 懶人專用...
  12. 鍵盤巨集(Keyboard macro):
    C-x (開始錄製)+ 所有鍵盤上的行為 + C-x)(結束錄製)
    C-x e : 重複動作一次 / 繼續hold e : 不停重複

好啦!今天的筆記到此為止,喜歡就請訂閱分享按讚囉哈哈哈

--

--

Coldhenry
Henry’s Jottings

在台灣生長,在美國留學,在世界發光