emacs最簡單入門,只要10分鐘
< PRE class =brush :plain ;>emacs最簡單入門,只要 10 分鐘
windwiny @2013
無聊的時候又看到鼓吹emacs的文章,以前也有幾次想嘗試,結果都是玩不到 10 分鐘就退出刪除了。
這次硬著頭皮,開啟幾篇文章都看完一遍,再動手操作。這次好像有些進展
最大的發現,emacs裡所有操作都是 LISP 指令,包括上下左右移動游標,這意味著什麼? “emacs是一個偽裝成編輯器的作業系統”這句話應該就是這麼理解吧,所有的操作都是指令,emacs就像作業系統一樣,平時不用關注,實際上打交道的都是作業系統上執行的各種程式。emacs也是這樣,執行 LISP 函式就行了,增加各種外掛就是增加 LISP 的函式讓你呼叫而已,各人的配置就是把各種指令繫結快捷鍵,方便自己使用。emacs的外掛功能有執行shell命令,telnet,ftp,檔案管理器,收郵件,瀏覽網頁,煮咖啡,擦皮鞋,等等。前段時間又受到駭客與畫家書的鼓吹,買了本 CLISP 的書看,對emacs用的 LISP 也是越看越順眼了。
忘掉網上其它的那些教程、手冊吧,也忘掉emacs有幾百種幾千種命令吧。
emacs最簡單入門:只要記住一個按鍵就行了: M -x . 按住Alt鍵再按x,在視窗最底下出現 M -x的提示,在這裡輸入left-幾個字元,按Tab鍵,出現兩行提示 left-char, left-word,再輸入一個c,再按Tab鍵,這時自動補全為left-char,按回車,如果有內容的話,當前的游標點向左移動,就像按了一個向左的方向鍵一樣。 就這樣?就這樣!
就這樣,發揮你的想象力,想象你現在需要做什麼,把它翻譯成英文單詞,按 M -x,先輸入幾個字母,按Tab,看是否存在你想象中的指令。要取消當前操作的指令,多按幾次 ESC 鍵或Ctrl-g鍵就取消了。
現在假設下emacs有 100 條指令吧,你如果想做什麼事都去執行指令的話,雖然也可以,但是總比不上為常用的指令設定一個快捷鍵方便。現在看下預設的各種快捷鍵:
先來看幾個簡單的 forward-char backward-char previous-line next -line , 很直白的命令,向前後移一個字元或向上下移一行,對應 4 個方向鍵。預設繫結的快捷鍵就是Ctrl加指令首字母 C -f/b/p/n。簡潔直白合理極致吧。 複製一些內容到視窗上去,多按幾次按鍵,多按幾次手指上的肌肉就不會忘記了。就像用了十多年的五筆輸入法一樣,看著鍵盤時一個字也打不也來了,字根鍵碼早忘光了。只有兩隻手都放在鍵盤上時,看著漢字,手指自然就打出來了。
再看下 forward-word backward-word ,向前後一個單詞,預設繫結快捷鍵為Alt加指令首字母 M -f/b。也很合理吧。
如果要快速移動到當前行首行尾,或者是一句話的首尾部呢? move-beginning-of-line move- end -of-line backward-sentence forward-sentence ,預設繫結的快捷鍵是 C -a/e M -a/e,好像也還算合理吧。
好了,只要理解了emacs裡做任何操作都是執行 LISP 函式,就算是入門了。emacs被稱為複雜難學是因為預設設定了很多快捷鍵,不容易一下記住。現在只要記住用 M -x來執行命令,快捷鍵一律忽視,等熟悉了 LISP 指令及對應的功能,想為它設定一個快捷鍵時,再看看預設設定的快捷鍵是否合你的胃口,改或不改你決定。
對emacs感興趣或者不感興趣現在就可以決定了。什麼學emacs需要很強的耐心那些都是胡扯,我敢打賭只要有好奇心的人就會繼續往下看。
現在可以開啟幫助選單下的教程,跟著操作一遍,學習一些最常用的快捷鍵了。多動手,肌肉記憶比大腦記憶好用。
----入門教程結束----
想象一下你使用其它編輯器時使用到的各種功能快捷鍵,把它和emacs預設設定的快捷鍵比較一下,哪種設定比較合理。
emacs裡的各種快捷鍵設定都是無害的,意思就是你改掉一個快捷鍵對應的功能,命令卻還在,永遠可以用 M -x來直接執行。如果是其它編輯器就比較麻煩,可能這個操作的功能就找不回來了。
一些預設快捷鍵
C -代表按住Ctrl鍵
M -代表按住Alt鍵,也可以用按一下 ESC 放開代替
最先要記住的
M -x < CMD > 輸入指令執行,在輸入時用Tab可以自動補全或列出專案
C -g 取消當前操作指令
C -h k < KEY > 檢視當前按鍵繫結的指令及介紹
移動插入點(游標)
C -n/p/b/f 到 下一行、上一行、前一字元、後一字元
M -b/f 到 前、後一單詞
C -a/e 到 行首、末
M -a/e 到 句首、末
M -</> 到 檔案首、末
C -v/ M -v 下、上翻屏
C -l 迴圈 將當前游標行顯示在視窗下、中、上位置
C -u < NUM > < XX > 重複執行之後的 xx 命令 num 次,不輸入num預設為 4
C -u C -v 向下滾動 4 行
編輯
Back/ C -d 刪除 前、後字元
M -Back/ M -d 移除 前、後單詞
C -k/ M -k 移除到 行末、句末
C -/ undo/ redo
C -x u undo/ redo
C -w 剪下
C -y 召回(貼上)(貼上移除的、複製、剪下的內容)
C -c 複製(emacs一般也預設定製了與 OS 的剪下複製貼上相同的快捷鍵)
查詢
C -s
C -s 查詢下一個
C -r 查詢上一下
C -g 一次返回,二次結束查詢
回車 停止到當前查詢到的內容
替換
M -%
標記
M -@
檔案操作
C -x C -c 退出emacs
C -x C -f 開啟檔案
C -x C -s 儲存檔案
C -x C -v 在當前緩衝區重新開啟一個檔案,可以用於清除undo歷史!!
C -x 1 最大化當前緩衝,關閉其它
C -x 2 / 3 垂直、水平建立新緩衝區
C -x o 切換到其它緩衝區
C -x C -b 列出緩衝區
C -x b 提示輸入緩衝區名稱,切換當前視窗的緩衝區
C -x k 刪除當前緩衝區
C -j 換行回車,有些模式下比較直接回車好用,有增加縮排之類的功能
------
理解一些概念
buffer
緩衝區,記憶體中的資料,開啟檔案時讀入內容到記憶體,修改後儲存才會修改到磁碟上的檔案。
window
視窗,緩衝區的一個展示區域
frame
OS 上的一個emacs程式視窗
mode 模式
mode有主模式,輔助模式,主模式就像vim中設定當前filetype一樣,當前編輯的是ruby或者python原始碼,根據不同檔案型別,設定按Tab縮排時縮排不同的字元數,把不同的詞當作關鍵字時行語法高亮等等,同一時間只能選一個主模式。試著多開幾個視窗,執行text-mode ruby-mode python-mode試下。emacs開啟檔案時會自動根據副檔名或內容檢查並設定主模式。
輔助模式就是視窗是否要自動換行,是否顯示行號等,輔助模式可以多個同時啟用。
undo
在 EMACS 中想要將已經做過的動作放棄,以恢復原狀。
EMACS 所提供的 undo,可以連續恢復最近使用過的指令。
undo 的順序是最新使用過的指令最先被 undo ,第二次使用 undo 則恢復第二新的指令,任何指令的輸入(除了 undo 本身之外) 都會使指令輸入的順序重整, 這也同時影響 undo 的順序。
使用 undo 有一個限制,就是 undo 只能 undo 對緩衝區內容造成改變的指令。對於只是改變遊標動作的指令,是無法以 undo 來恢復舊觀。若所有修改過內容的指令,都以 undo 恢復原狀後, 再一次使用 undo 的指令,echo area 會出現如下的訊息:No further undo information.
當使用了 undo 之後,還想要在 redo 這個已被 undo 的動作時, 有一個技巧可以達成如此的效果。
1 .首先鍵入一個不會改變緩衝區內容的指令(如游標移動的指令),使原來
2 .存放指令的順序因新指令的加入而改變。
3 .再使用一次 undo 的指令,就可以達到 redo 的效果了。
undo的行為很難描述,示例:
新建一個檔案
執行幾個修改內容的指令 < 1 回車 2 回車 3 回車>, 這時undo歷史裡有 6 條記錄
undo順序為 654321 , 繼續undo則提示No further undo information
按下左右方向鍵(雖然移不動游標),這時undo歷史裡有 12 條記錄了,前 6 條undo就變成 redo 了,順序 123456654321
再按下方向鍵,undo歷史記錄數量再翻倍
emacs的undo不會丟失任何操作,你先做一些操作,undo,再做另一些操作,如果是其它編輯器,第一次undo的動作就失蹤了,emacs裡卻一直存在著,原因同上。多試幾次就明白了。
----完----
才用了兩天emacs,學會的東西就上面這些了,不過現在卻有很興奮的感覺,記了這篇筆記。並且有很強烈的感覺,感覺以後都離不開emacs了,被emacs控制了~~
</ PRE >
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7719012/viewspace-1752521/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Emacs Lisp 15 分鐘入門MacLisp
- Emacs 入門簡介Mac
- Webpack 10分鐘入門Web
- JavaScript 10分鐘入門JavaScript
- 10分鐘快速入門RedisRedis
- Spring Cloud超簡單十分鐘入門例項SpringCloud
- 最簡單的 Git 入門教程Git
- [入門到吐槽系列] Webix 10分鐘入門 二 表單Form的使用WebORM
- 10分鐘快速入門rollup.jsJS
- 10 分鐘快速入門:HTTP快取HTTP快取
- 最簡單易懂的ChatGPT入門指南!ChatGPT
- Emacs入門(轉)Mac
- 30分鐘入門MyBatisMyBatis
- 5分鐘入門AWK
- 10分鐘go crawler colly從入門到精通Go
- 10分鐘入門Shell指令碼程式設計指令碼程式設計
- UML類圖10分鐘快速入門 - From 聖傑
- Go 語言基礎教程:10分鐘入門Go
- 一分鐘sed入門(一分鐘系列)
- 【譯】30 分鐘入門 TypescriptTypeScript
- 20分鐘gulp快速入門
- 十分鐘入門 Less
- 十分鐘入門RocketMQMQ
- 30 分鐘 Qunit 入門教程
- Maven 5 分鐘入門教程Maven
- 五分鐘入門雙拼!
- 三分鐘帶你快速入門極簡色彩學
- 三分鐘幫你快速入門極簡色彩學
- 10分鐘極速入門dash應用開發
- 「從零單排canal 01」 canal 10分鐘入門(基於1.1.4版本)
- jQuery簡明參考手冊——30分鐘快速入門jQueryjQuery
- 3分鐘入門lambda表示式
- 三分鐘爬蟲入門爬蟲
- 五分鐘入門 Dingo APIGoAPI
- 30 分鐘快速入門 Docker 教程Docker
- 三十分鐘 Docker 新手入門Docker
- Cython三分鐘入門
- 30 分鐘 Java Lambda 入門教程Java