Emacs 不僅僅是個編輯器,更像個整合開發環境。理解其核心概念如緩衝區、點和標記,能大幅提升編輯效率。熟練掌握幫助命令能快速查詢所需功能,例如使用 <Ctrl+H> k 瞭解快捷鍵功能。Emacs 的模式和變數設定也至關重要,<Ctrl+H> m 可檢視當前模式說明。此外,Emacs 支援多種編碼系統,並提供互動式教學和套件管理功能,方便使用者學習和擴充套件。

GNU Emacs 編輯器快速指引

GNU Emacs 是一款功能強大且高度可自定義的文字編輯器,廣泛應用於程式設計、檔案編輯及資訊處理等領域。以下是 Emacs 幫助命令的總結,幫助您更有效地使用這款編輯器。

尋找命令及功能

在 Emacs 中,您可以使用 <Ctrl+H> 來呼叫幫助系統。以下是一些常用的幫助命令:

  • <Ctrl+H> a:顯示與主題比對的命令列表。
  • <Ctrl+H> b:顯示所有活動的鍵繫結,包括次要模式、主要模式及全域繫結。
  • <Ctrl+H> c key:顯示鍵序列 key 對應的命令名稱。
  • <Ctrl+H> d:顯示與主題比對的命令及變數檔案。
  • <Ctrl+H> e:顯示 Messages 緩衝區。

查詢及檔案

以下是一些查詢及檔案相關的命令:

  • <Ctrl+H> f function <Enter>:顯示 Lisp 函式 function 的檔案,由於命令也是 Lisp 函式,因此這對於命令也適用。
  • <Ctrl+H> h:顯示 HELLO 檔案,展示各種字元集的範例。
  • <Ctrl+H> i:啟動 Info,GNU 的檔案瀏覽器,Emacs 手冊可以在 Info 中找到。
  • <Ctrl+H> k key:顯示鍵序列 key 對應的命令名稱及其檔案。

模式與變數

瞭解 Emacs 的模式及變數是高效使用編輯器的關鍵:

  • <Ctrl+H> l:顯示最近 300 個按鍵操作的描述。
  • <Ctrl+H> m:顯示目前主要模式的檔案。
  • <Ctrl+H> n:顯示 Emacs 最近變更的新聞。
  • <Ctrl+H> v var <Enter>:顯示 Lisp 變數 var 的檔案。

編碼系統

Emacs 支援多種編碼系統,以下是相關命令:

  • <Ctrl+H> C coding <Enter>:描述編碼系統 coding
  • <Ctrl+H> C <Enter>:描述目前正在使用的編碼系統。

教學與包管理

Emacs 提供了豐富的學習資源及包管理工具:

  • <Ctrl+H> t:進入 Emacs 互動教學程式。
  • <Ctrl+H> p:根據主題關鍵字尋找套件。
  • <Ctrl+H> P package <Enter>:顯示套件 package 的檔案。

其他實用命令

此外,還有一些其他實用的幫助命令:

  • <Ctrl+H> s:顯示目前語法表的內容。
  • <Ctrl+H> w command <Enter>:顯示哪些鍵執行命令 command

內容解密:

  1. <Ctrl+H> a topics <Enter>:這個命令會展示所有名稱中包含 topics 的命令列表。它使用 apropos-command 函式來搜尋比對的命令。
  2. <Ctrl+H> b:這個命令會列出所有目前活動中的鍵繫結,依次展示次要模式、主要模式和全域繫結。它使用 describe-bindings 函式來實作這一功能。
  3. <Ctrl+H> c key:這個命令會顯示鍵序列 key 對應的命令名稱。它使用 describe-key-briefly 函式來簡短地描述該鍵繫結。如果需要更多詳細資訊,可以使用 <Ctrl+ H> k key
  4. <Ctrl+H> d topics <Enter>:這個命令會展示所有檔案中包含 topics 的命令和變數。它使用 apropos-documentation 函式來搜尋比對專案。
  5. <Ctrl+H> e:這個命令會開啟並顯示 Messages 緩衝區,其中記錄了 Emacs 在執行過程中的訊息和警告。它使用 view-echo-area-messages 函式來實作這一功能。

Emacs圖形化功能

對於新手來說,Emacs 最有用的圖形化功能是選單欄和速度按鈕欄。這些功能利用圖形化方式與使用者互動,使得新手和有經驗的使用者都能更容易地操作 Emacs。以下是每個選單欄專案的簡短描述:

  1. 檔案 (File):提供開啟、儲存和關閉緩衝區、檔案、視窗和框架的功能。
  2. 編輯 (Edit):提供修改緩衝區中文字內容的方法。
  3. 選項 (Options):提供組態變更的功能。
  4. 緩衝區 (Buffers):列出當前開啟的所有緩衝區。
  5. 工具 (Tools):提供檔案和應用程式功能。
  6. 幫助 (Help):提供詳細檔案和線上手冊。

速度按鈕欄則包含單一按鈕操作,如檔案和緩衝區操作、常見文字編輯操作(如剪下和貼上)、印表、搜尋以及變更偏好設定等。

GNU Emacs 編輯器練習

基本概念與操作

在使用 Emacs 編輯器時,瞭解以下幾個基本概念非常重要:

  1. 緩衝區 (Buffer):緩衝區是目前正在編輯的文字物件。它不同於儲存在磁碟上的檔案。當您啟動 Emacs 編輯某個檔案時,您實際上是在檢視該檔案對應的緩衝區內容。

  2. 點 (Point) 與標記 (Mark):點是遊標所在位置前方的一個空白位置。標記則是由您設定的一個位置,通常透過按住 <Ctrl+Space><Ctrl+ @> 來設定。點和標記之間的文字稱為「區域」。

  3. 區域 (Region):區域是您希望進行操作(如剪下或複製)的一段文字。例如,在句子「Now is the time for all good men」中,如果遊標位於「N」,而標記設定在「i」前方,「Now is the t」就成為區域。

實踐練習

以下是一些實踐練習題,幫助您更好地掌握 Emacs 的操作:

  1. 練習點與標記

    • 在新建的一個 Emacs 檔案中輸入「Now is the time for all good men」。
    • 將遊標移動到「N」處。
    • 按住 <Ctrl+Space> 設定標記,然後用箭頭鍵移動遊標到「n」處(單詞「men」中的「n」)設定標記。
  2. 查詢幫助

    • 您可以使用 <Ctrl-H i d m Emacs <Enter> 命令在 Info 模式下搜尋「point」、「minibuffer」、「modes」、「keys」等詞彙,並根據所取得到資訊撰寫出他們各自簡短描述。
  3. 理解圖形化介面

    • 您可以嘗試在 Raspberry Pi 上執行 GUI 桌面環境中的 Emacs,並觀察如何圖形化地表示「區域」。
  4. 建立與執行 Shell 指令碼

    • 您可以使用 Emacs 建立、編輯及執行 Shell 指令碼。例如,建立一個別名指令碼來替代 DOS 命名方式執行一些常見操作。

透過以上練習和指引,您將能夠更有效地利用 GNU Emacs 編輯器進行各種任務。希望這些內容對您有所幫助!

Emacs 編輯器操作及系統管理

使用 Emacs 編輯 Bash 別名

在 Raspberry Pi OS 上,使用 Emacs 編輯器來管理 Bash 別名是一個常見的操作。以下是詳細的步驟,幫助你建立和測試 Bash 別名。

初次建立和儲存 Bash 別名

  1. 啟動 Emacs:在終端提示符下輸入 emacs alien,然後按 <Enter>。Emacs 編輯器會顯示在你的螢幕上,並關閉歡迎畫面。
  2. 輸入別名定義
    • 輸入 # DOS aliases,然後按 <Enter>
    • 輸入 alias del=rm,然後按 <Enter>
    • 輸入 alias dir='ls -la',然後按 <Enter>
    • 輸入 alias type=more,然後按 <Enter>
  3. 儲存檔案:按下 <Ctrl+ X> 並持續按下 <Ctrl+ S> 來儲存檔案,命名為 alien。你應該會看到類別似圖 3.2 的顯示。
  4. 離開 Emacs:按下 <Ctrl+ X> 並持續按下 <Ctrl+ C> 來優雅地離開 Emacs,傳回到 Bash 提示符。

測試和解除別名

在建立了別名檔案 alien 之後,你可以透過以下步驟來測試這些別名:

  1. 原始檔:在終端中輸入 source alien 來載入別名。
  2. 測試別名:分別使用 deldirtype 命令來測試它們是否正確工作。
  3. 解除別名:當你完成測試後,可以使用 unalias del dir type 命令來解除這些別名。

高效使用 Emacs 的基本操作

Emacs 提供了許多基本操作來存取、儲存和離開檔案。以下是一些常見的操作方法:

存取新檔案

  1. 使用選單:選擇 File > Visit New File,並在出現的視窗中輸入新檔名稱,然後選擇 OK
  2. 快捷鍵:輸入 <Ctrl+ X> <Ctrl+ F>,然後在小緩衝區中輸入檔名稱。

儲存檔案

  1. 使用選單:選擇 File > Save
  2. 快捷鍵:輸入 <Ctrl+ X> <Ctrl+ S>

儲存並離開

如果你在編輯過程中做了未儲存的修改,Emacs 會提示你是否要儲存這些修改。你可以選擇以下選項:

  1. 儲存並離開:選擇 Save file? Yes
  2. 不儲存並離開:選擇 No for All
  3. 檢視變更:選擇 View Changes in This Buffer

清屏命令與導航快捷鍵

  • 清屏:<Ctrl+ L>
  • 快速移動遊標:
    • 前進/後退字元:<Ctrl+ F>/<Ctrl+ B>
    • 前進/後退單詞:<Alt+ F>/<Alt+ B>
    • 前進/後退行:<Ctrl+ N>/<Ctrl+ P>
    • 行首/行尾:<Ctrl+ A>/<Ctrl+ E>
    • 前進/後退句子:<Alt+ A>/<Alt+ E>
    • 前進/後退段落:<Alt+ {>/<Alt+ }>
    • 翻頁:<Ctrl+ V>/<Alt+ V>
    • 滾動畫面:<Ctrl+ X> [<]/<Ctrl + X> [>]

建立和使用 .bash_aliases

在 Raspberry Pi OS 中,你可以將自定義的 Bash 別名儲存在 .bash_aliases 檔案中。以下是具體步驟:

  1. 檢查 .bashrc:預設情況下,.bashrc 檔案中已經包含以下程式碼:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/ .bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
  1. 建立 .bash_aliases 檔案:在主目錄中建立一個空白檔案:
bob@raspberrypi:~ $ touch ~/.bash_aliases
  1. 編輯 .bash_aliases:使用 Emacs 編輯這個檔案,並在其中新增你的自定義別名。

###實務案例:編輯 .bash_aliases

  1. 啟動 Emacs:在終端提示符下輸入 emacs alien,然後按 <Enter>。關閉 Emacs 歡迎螢幕。載入之前建立的別名檔案。
  2. 插入新行
    • 使用箭頭鍵將遊標定位到第三行結尾處的 ' 字元後面。
    • <Enter> 插入新行。
  3. 輸入新別名定義:“alice dirw= ls”。
  4. 刪除部分文字:“alice” 用 <Alt + D> 的方式剪下掉,“ali” 用刪除鍵刪除掉剩餘部分:
  5. 重新貼上:“al” 用 <Alt + Y> 的方式貼上回去並繼續輸入“as copy= cp”。
  6. 另存為新檔案:“alien2”。

內容解密:

  • 啟動 Emacs: 在終端輸入 emacs alien, 載入之前建立好的別名定義檔案以便進行編輯。
  • 插入新行: 在需要新增內容的地方透過 <Enter> 插入新行, 準備新增新別名內容.
  • 輸入 alice dirw= ls: 在插入的新行中輸入所需別名內容, 用於測試與編輯.
  • 剪下 alice: 在進行編輯時, 對不需要的文字透過 <Alt + D> 的方式進行剪下.
  • 刪除剩餘部分: 在剪下掉部分內容後, 對於無需內容透過刪除鍵將其刪除.
  • 貼上 al 和繼續輸入 as copy= cp: 在進行多次編輯後, 想要將之前剪下內容重新貼上回去時, 可以透過快捷鍵來實作.
  • 另存為 alien2: 在完成所有編輯後, 輸入所需名稱並另存為該名稱, 用於之後測試.

###總結

透過以上步驟和技巧,你可以熟練地使用 Emacs 編輯器來管理和測試 Bash 別名。這些操作不僅提高了工作效率,還能讓你更好地理解和應用 Linux 作業系統中的命令列工具。

Emacs 編輯器的實用技巧與操作

使用 Emacs 編輯器的基本操作

在使用 Emacs 編輯器時,玄貓建議從一些基本的操作開始。以下是幾個常見且實用的步驟:

  1. 取消幫助請求:在需要幫助時,按下 <Ctrl+ H> 並接著按 a 鍵,這會在最小緩衝區顯示幫助提示。如果你想取消這個請求,只需按下 <Ctrl+ G>

  2. 離開 Emacs:要離開 Emacs 並回到 shell 提示符,可以按下 <Ctrl+ X> <Ctrl+ C>

  3. 編輯 .bash_aliases 檔案:在 shell 提示符下,輸入 emacs .bash_aliases 並按 <Enter>。然後拒絕啟動畫面,這樣就可以開始編輯 .bash_aliases 檔案。

  4. 插入檔案內容:將遊標移動到檔案的第一行空白處,按下 <Ctrl+ X> 並接著按 i 鍵。這樣就可以將另一個檔案的內容插入當前緩衝區。

  5. 儲存檔案:從選單中選擇「檔案 > 儲存 (目前緩衝區)」或使用快捷鍵 <Ctrl+ X> <Ctrl+ S>

  6. 離開編輯器:完成編輯後,再次按下 <Ctrl+ X> <Ctrl+ C> 即可離開 Emacs。

測試與修正 Bash 別名

測試新建立的 .bash_aliases 檔案

在終端機視窗中,輸入一個別名命令及其相應的引數,觀察結果。哪些別名能正常工作,哪些不能?為什麼?

修正不正常工作的 Bash 別名

使用 Emacs 編輯 .bash_aliases 檔案中的錯誤別名,然後再次測試。最後,取消這些別名。

鍵盤宏功能

Emacs 編輯器內建了一個簡單且強大的鍵盤宏功能,允許你記錄一系列鍵盤操作並重複執行。這對於需要重複多次相同操作的情況非常有用。

執行練習:建立新的文字檔案

  1. 在 shell 提示符下輸入 emacs datafile 並按 <Enter>。拒絕啟動畫面。
  2. 按下 <Ctrl+ X> <Shift+ 9> 開始記錄鍵盤宏。
  3. 輸入 1 2 3 4 5 6 7 8 9 10 並按 <Enter>
  4. 按下 <Ctrl+ X> <Shift+0> 停止記錄鍵盤宏。
  5. 按下 <Ctrl+ X> E 啟動剛剛定義的宏,將數字重複輸入到緩衝區中。
  6. 再次按下 E ,直到顯示類別似於圖表3.4的結果。
  7. 按下 <Ctrl+ X> <Ctrl+ S> 儲存緩衝區到 datafile
  8. 按下 <Ctrl+ X> <Ctrl+C> 離開 Emacs。

次段落標題:此圖示解說

此圖示展示了使用 Emacs 編輯器建立新文字檔案的步驟流程。從開啟 Emacs 編輯器開始,拒絕啟動畫面後進入記錄鍵盤宏的階段。接著輸入數字並停止記錄宏,再啟動宏將數字重複輸入到緩衝區中。最後儲存檔案並離開 Emacs。

搜尋與替換功能

Emacs 提供了強大的搜尋與替換功能。以下是一些常用的操作:

  • 向前搜尋<Ctrl+ S>
  • 向後搜尋<Ctrl+ R>
  • 正規表示式搜尋<Ctrl+ Alt+ S>
  • 互動式替換文字串<Alt+ %>
  • 使用正規表示式進行互動式替換<Alt+ X> query- replace- regexp

這些功能讓你可以高效地查詢和修改檔案內容。

剪下與貼上功能

Emacs 的剪下與貼上功能透過「Kill Ring」來實作。以下是一些基本操作:

  • 剪下文字:移動點到你想剪下的文字前,按下 <Esc+ D>
  • 貼上文字:將點移動到你想貼上文字的位置,按下 <Ctrl+ Y>

次段落標題:此圖示解說

此圖示展示了剪下與貼上文字的一個簡單例子。首先移動點到你想剪下的文字前,然後使用命令剪下文字。接著將點移動到你想貼上文字的位置,再次使用命令貼上剪下過的文字。

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title GNU Emacs 編輯器:快速指引與實用技巧

package "正規表示式" {
    package "基本語法" {
        component [字元類 [abc]] as char_class
        component [量詞 * + ?] as quantifier
        component [錨點 ^ $] as anchor
    }

    package "進階功能" {
        component [群組 ()] as group
        component [後向參考 \1] as backref
        component [前瞻後顧] as lookahead
    }

    package "Python re 模組" {
        component [re.match()] as match
        component [re.search()] as search
        component [re.findall()] as findall
        component [re.sub()] as sub
    }
}

char_class --> quantifier : 重複匹配
quantifier --> anchor : 位置定位
group --> backref : 捕獲參考
match --> search : 模式搜尋
search --> findall : 全部匹配
findall --> sub : 取代操作

note right of lookahead
  (?=...) 正向前瞻
  (?!...) 負向前瞻
  (?<=...) 正向後顧
end note

@enduml