Linux中國

10 個讓你進入 Emacs 世界的技巧

很多人都說想學 Emacs,但很多人在短暫的接觸後就退縮了。這並不是因為 Emacs 不好,也不是 Emacs 複雜。我相信,問題在於人們其實並不想「學習」 Emacs,而是他們想習慣 Emacs 的傳統。他們想了解那些神秘的鍵盤快捷鍵和不熟悉的術語。他們想按照他們認為的「使用目的」來使用 Emacs。

我很同情這一點,因為我對 Emacs 的感覺就是這樣。我以為真正的 Emacs 用戶都只會在終端裡面運行,從來不用方向鍵和菜單,更不會用滑鼠。這是個阻止自己開始使用 Emacs 的好辦法。有足夠多的獨特的 .emacs 配置文件證明,如果說 Emacs 用戶有一個共同的變化,那就是每個人使用 Emacs 的方式不同。

學習 Emacs 很容易。愛上 Emacs 才是最難的。要愛上 Emacs,你必須發現它所擁有的功能,而這些功能是你一直在尋找的,有時你並不知道你已經錯過了它們。這需要經驗。

獲得這種經驗的唯一方法就是從一開始就積極使用 Emacs。這裡有十個小提示,可以幫助你找出最適合你的方法。

從 GUI 開始

Emacs(以及它的友好競爭者 Vim)最偉大的事情之一是它可以在終端中運行,這在你 SSH 進入伺服器時很有用,但在過去 15 年來製造的計算機上意義不大。Emacs 的 GUI 版本可以在極度低功耗的設備上運行,它有很多實用的功能,無論是新手還是有經驗的用戶都可以使用它。

例如,如果你不知道如何在 Emacs 中只用鍵盤快捷鍵複製一個單詞,編輯菜單的複製、剪切和粘貼選擇提供了最輕鬆的路徑。沒有理由因為選擇了 Emacs 而懲罰自己。使用它的菜單,用滑鼠選擇區域,點擊緩衝區內的按鈕,不要讓陌生感阻礙你的工作效率。

![Emacs slackware](/data/attachment/album/202011/29/103817lmzbh1111qdhdqjh.jpg "Emacs slackware")

這些功能被內置到 Emacs 中,是因為用戶在使用它們。你應該在你需要的時候使用它們,而當你最終在 VT100 終端上通過 SSH 使用 Emacs,沒有 Alt 或方向鍵的時候,你才應該使用這些晦澀的命令。

習慣術語

Emacs 的 UI 元素有著特殊的術語。個人計算的發展並不是建立在相同的術語上,所以很多術語對現代計算機用戶來說比較陌生,還有一些術語雖然相同,但含義不同。下面是一些最常見的術語。

  • 框架 Frame 。在 Emacs 中,「框架」就是現代計算機所說的「窗口」。
  • 緩衝區 Buffer :「緩衝區」是 Emacs 的一個通信通道。它可以作為 Emacs 進程的命令行,也可以作為 shell,或者只是一個文件的內容。
  • 窗口 Window :「窗口」是你進入一個緩衝區的視角。
  • 迷你緩衝區 Mini-buffer 。它是主要的命令行,位於 Emacs 窗口的底部。

![Emacs tutorial map](/data/attachment/album/202011/29/103826ph4g0xxfgg94k4sy.png "Emacs tutorial map")

讓 Emacs 的修飾鍵變得更有意義

在 PC 鍵盤上,Ctrl 鍵被稱為 CAlt 鍵被稱為 M,這些鍵並不是 CM 鍵,由於它們總是與相應的字母或符號鍵配對,所以在文檔中很容易識別。

例如,C-x 在現代鍵盤符號中的意思是 Ctrl+XM-xAlt+X。就像你從任何應用程序中剪切文本時一樣,同時按下這兩個鍵。

不過,還有另一個層次的鍵盤快捷鍵,與現代電腦上的任何東西都完全不同。有時,鍵盤快捷鍵並不只是一個鍵組合,而是由一系列的按鍵組成。

例如,C-x C-f 的意思是像往常一樣按 Ctrl+X,然後再按 Ctrl+C

有時,一個鍵盤快捷鍵有混合的鍵型。組合鍵 C-x 3 意味著像往常一樣按 Ctrl+X,然後按數字 3 鍵。

Emacs 之所以能做到這些花哨的強力組合,是因為某些鍵會讓 Emacs 進入一種特殊的命令模式。如果你按 C-X(也就是 Ctrl+X),就是告訴 Emacs 進入空閑狀態,等待第二個鍵或鍵盤快捷鍵。

Emacs 的文檔,無論是官方的還是非官方的,都有很多鍵盤快捷鍵。在心裡練習把 C 鍵翻譯成 Ctrl 鍵,M 鍵翻譯成 Alt 鍵,那麼這些文檔對你來說都會變得更有意義。

剪切、複製和粘貼的備用快捷方式

從規範上,複製文本是通過一系列的鍵盤快捷鍵進行的,這些快捷鍵取決於你想要複製或剪切的方式。

例如,你可以用 M-dAlt+d 的 Emacs 行話)剪切一整個單詞,或者用C-kCtrl+K)剪切一整行,或者用 M-mAlt+M)剪切一個高亮區域。如果你想的話,你可以習慣這樣,但如果你喜歡 Ctrl+CCtrl+XCtrl-V,那麼你可以用這些來代替。

啟用現代的「剪切-複製-粘貼」需要激活一個名為 CUA( 通用用戶訪問 Common User Access )的功能。要激活 CUA,請單擊「選項」菜單並選擇「使用 CUA 鍵」。啟用後,C-c 複製高亮顯示的文本,C-x 剪切高亮顯示的文本,C-v 粘貼文本。這個模式只有在你選擇了文本之後才會實際激活,所以你仍然可以學習 Emacs 通常使用的 C-xC-c 綁定。

用哪個都好

Emacs 是一個應用程序,它不會意識到你對它的感情或忠誠度。如果你想只用 Emacs 來完成那些「感覺」適合 Emacs 的任務,而用不同的編輯器(比如 Vim)來完成其他任務,你可以這樣做。

你與一個應用程序的交互會影響你的工作方式,所以如果 Emacs 中所需要的按鍵模式與特定任務不一致,那麼就不要強迫自己使用 Emacs 來完成該任務。Emacs 只是眾多可供你使用的開源工具之一,沒有理由讓自己只限於一種工具。

探索新功能

Emacs 所做的大部分工作都是一個 elisp 函數,它可以從菜單選擇和鍵盤快捷鍵調用,或者在某些情況下從特定事件中調用。所有的函數都可以從迷你緩衝區(Emacs 框架底部的命令行)執行。理論上,你甚至可以通過鍵入 forward-wordbackward-word 以及 next-lineprevious-line 等函數來導航游標。這肯定是無比低效的,但這就是一種直接訪問你運行的代碼的方式。在某種程度上,Emacs 就是自己的 API。

你可以通過在社區博客上閱讀有關 Emacs 的資料來了解新函數,或者你可以採取更直接的方法,使用描述函數(describe-function)。要獲得任何函數的幫助,按 M-x(也就是 Alt+X),然後輸入 describe-function,然後按回車鍵。系統會提示你輸入一個函數名稱,然後顯示該函數的描述。

你可以通過鍵入M-x(Alt+X),然後鍵入?` 來獲得所有可用函數的列表。

你也可以在輸入函數時,通過按 M-x 鍵,然後輸入 auto-complete-mode,再按回車鍵,獲得彈出的函數描述。激活該模式後,當你在文檔中鍵入任何 Emacs 函數時,都會向你提供自動補完選項,以及函數的描述。

![Emacs function](/data/attachment/album/202011/29/103831f6zcymcp6nmynytk.jpg "Emacs function")

當你找到一個有用的函數並使用它時,Emacs 會告訴你它的鍵盤綁定,如果有的話。如果沒有的話,你可以通過打開你的 $HOME/.emacs 配置文件並輸入鍵盤快捷鍵來自己分配一個。語法是 global-set-key,後面是你要使用的鍵盤快捷鍵,然後是你要調用的函數。

例如,要將 screenwriter-slugline 函數分配一個鍵盤綁定:

(global-set-key (kbd 「C-c s」) 'screenwriter-slugline)

重新載入配置文件,鍵盤快捷鍵就可以使用了:

M-x load-file ~/.emacs

緊急按鈕

當你使用 Emacs 並嘗試新的函數時,你一定會開始調用一些你並不想調用的東西。Emacs 中通用的緊急按鈕是 C-g(就是 Ctrl+G)。

我通過將 G 與 GNU 聯繫起來來記住這一點,我想我是在呼籲 GNU 將我從一個錯誤的決定中拯救出來,但請隨意編造你自己的記憶符號。

如果你按幾下 C-g,Emacs 的迷你緩衝區就會回到潛伏狀態,彈出窗口被隱藏,你又回到了一個普通的、無聊的文本編輯器的安全狀態。

忽略鍵盤快捷鍵

潛在的鍵盤快捷鍵太多,在這裡無法一一總結,更不希望你能記住。這是設計好的。Emacs 的目的是為了定製,當人們為 Emacs 編寫插件時,他們可以定義自己的特殊鍵盤快捷鍵。

我們的想法不是要馬上記住所有的快捷鍵。相反,你的目標是讓你在使用 Emacs 時感到舒適。你在 Emacs 中變得越舒適,你就越會厭倦總是求助於菜單欄,你就會開始記住對你重要的組合鍵。

根據自己在 Emacs 中通常做的事情,每個人都有自己喜歡的快捷方式。一個整天用 Emacs 寫代碼的人可能知道運行調試器或啟動特定語言模式的所有鍵盤快捷鍵,但對 Org 模式或 Artist 模式一無所知。這很自然,也很好。

使用 Bash 時練習 Emacs

了解 Emacs 鍵盤快捷鍵的一個好處是,其中許多快捷鍵也適用於 Bash。

  • C-a:到行首
  • C-e:到行尾
  • C-k:剪切整行
  • M-f:向前一個字
  • M-b:向後一個字
  • M-d:剪切一個字
  • C-y:貼回(粘貼)最近剪切的內容
  • M-Shift-U:大寫一個詞
  • C-t:交換兩個字元(例如,sl 變成 ls

還有更多的例子,它能讓你與 Bash 終端的交互速度超乎你的想像。

Emacs 有一個內置的包管理器來幫助你發現新的插件。它的包管理器包含了幫助你編輯特定類型文本的模式(例如,如果你經常編輯 JSON 文件,你可以嘗試使用 ejson 模式)、嵌入的應用程序、主題、拼寫檢查選項、linter 等。這就是 Emacs 有可能成為你日常計算的關鍵所在;一旦你找到一個優秀的 Emacs 包,你可能離不開它了。

![Emacs emoji](/data/attachment/album/202011/29/103831cpot8t0p7tga8zyz.jpg "Emacs emoji")

你可以按 M-x(就是 Alt+X)鍵,然後輸入 package-list-packages 命令,再按回車鍵來瀏覽包。軟體包管理器在每次啟動時都會更新緩存,所以第一次使用時要耐心等待它下載可用軟體包的列表。一旦載入完畢,你可以用鍵盤或滑鼠進行導航(記住,Emacs 是一個 GUI 應用程序)。每一個軟體包的名稱都是一個按鈕,所以你可以將游標移到它上面,然後按回車鍵,或者直接用滑鼠點擊它。你可以在 Emacs 框架中出現的新窗口中閱讀有關軟體包的信息,然後用安裝按鈕來安裝它。

有些軟體包需要特殊的配置,有時會在它的描述中列出,但有時需要你訪問軟體包的主頁來閱讀更多的信息。例如,自動完成包 ac-emoji 很容易安裝,但需要你定義一個符號字體。無論哪種方式都可以使用,但你只有在安裝了字體的情況下才能看到相應的表情符號,除非你訪問它的主頁,否則你可能不會知道。

俄羅斯方塊

Emacs 有遊戲,信不信由你。有數獨、拼圖、掃雷、一個好玩的心理治療師,甚至還有俄羅斯方塊。這些並不是特別有用,但在任何層面上與 Emacs 進行交互都是很好的練習,遊戲是讓你在 Emacs 中花費時間的好方法。

![Emacs tetris](/data/attachment/album/202011/29/103833lhrroqh3zrmbrvhh.jpg "Emacs tetris")

俄羅斯方塊也是我最初接觸 Emacs 的方式,所以在該遊戲的所有版本中,Emacs 版本才是我真正的最愛。

使用 Emacs

GNU Emacs 之所以受歡迎,是因為它的靈活性和高度可擴展性。人們習慣了 Emacs 的鍵盤快捷鍵,以至於他們習慣性地嘗試在其他所有的應用程序中使用這些快捷鍵,他們將應用程序構建到 Emacs 中,所以他們永遠不需要離開。如果你想讓 Emacs 在你的計算生活中扮演重要角色,最終的關鍵是擁抱未知,開始使用 Emacs。磕磕絆絆地,直到你發現如何讓它為你工作,然後安下心來,享受 40 年的舒適生活。

via: https://opensource.com/article/20/3/getting-started-emacs

作者:Seth Kenlon 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國