如彈鋼琴般使用 Emacs 是怎樣一種體驗?

做為一個Vimer,個人覺得vim已經可以滿足個人需求,為什麼別人總說emacs才是神器?


你說的是把Ctrl鍵改成腳踏板的體驗嗎?


#+TITLE: 如彈鋼琴般使用 Emacs 是怎樣一種體驗

這個問題簡直就是為我設計的啊

利益相關:使用Emacs近3年,另外最近正好在玩電鋼琴,自娛自樂那種。

----------------------------------------------------------------

我自己Emacs上的快捷鍵,常用的(注意:是常用的)至少100多個吧,有需要時能想起來的,至少200多個吧。

體驗就是

1. 鋼琴 88 個鍵難度遠遠大於Emacs的操作難度

2. 我用Emacs基本秒殺其他編輯器(請vimer忽略這句)

雖然我用Emacs裝X從沒失敗過,但是Emacs的操作再複雜,也是時序的,一個接一個的,而且每個動作,是左右手配合完成一件事情(比如按Ctrl+N,左手Ctrl,右手N),鋼琴就不一樣了,左右手基本獨立,還要同時按。所以經常在一個小節卡了800遍後,回到鍵盤感覺飛似的

飛的體驗1: 快速跳轉

  1. 我寫c++的用etags+cscope可以快速跳到幾乎任何函數和變數的位置
  2. make時(smart-compile)能跳到Error的文件對應行
  3. ace-jump-mode能跳到任何一個單詞/字元的位置
  4. ido能快速切換buffer
  5. recentf-open-files能快速跳到最近打開的一個文件
  6. mark是在當前位置設下一個標記,當你臨時要去別的行/文件改東西再回來時,能快速跳轉回來。
  7. 還有默認的移動一個字元/一個單詞/一行/一個語句塊等等,基本是心在哪裡,游標就在哪裡。

飛的體驗2: 各種補全

無論是用company補全包(支持clang作為後端的代碼補全,Elisp函數變數的補全等),還是hippie-expand隨意猜,還是yasnippet模板,都基本上把你從這些trivial的語法中解脫出來,讓你專心想邏輯就好。

飛的體驗3: 快速編輯

這是編輯器的根本任務了,什麼query-replace啦,transpose word/line 啦,正則啦都是基本功。

multi-cursor啦(≥sublime中多行編輯),rectangle編輯相關啦,拼寫校正啦(aspell)也都是一般級的殺手鐧。

key-chord不管從名字上,還是使用方法上(兩個鍵一起按),都很像彈琴。

簡單說下macro和elisp

macro已經相當強大了,比如你要快速生成"{1,2,...,100}"這個字元串,用宏的語言就是

1. 把1放在寄存器i中(Emacs的寄存器,非CPU寄存器)

2, 宏開始

2. 插入i,插入","

3. i++

4. 宏結束

4. 重複宏99次

再舉個例子,有些重複的pattern需要處理,用正則不好寫,或者懶得寫正則時,直接定義個宏,然後手動repeat幾次就OK啦。

至於 elisp 就更無所不能啦,比如上邊的例子用elisp寫出來就是

(loop for i from 1 to 100 do (insert (format "%s," i)))

再比如,你有一串數字要求和,只要變成 (+ 1 2 3)這種形式,然後直接eval就可以啦。

再比如 GitHub - xahlee/xah-math-input: emacs minor mode for inputting math and unicode chars

還有一些就不說了,比如paredit-mode, org-mode等。

當然了,要想看起來眼花繚亂,你還需要有一定的手速。


可以弄個程序把MIDI信號映射到PC鍵盤輸入, 然後就能用腳踏板按Ctrl啦。


vimscript vs lisp


Emacs的優美不在於操作,而在於無與倫比的擴展性,應該是我所知的最容易hack的軟體。

Vim編輯的高效眾所周知。但習慣以後很難切換到其他編輯器下。好消息是emacs的evil插件已經可以很好的模擬vim的編輯模式了。如今使用emacs可以享受兩個優秀編輯器的優點。


你們誰玩osu之類的手速遊戲啊?似乎18個鍵就能解決輸入了吧?


-

打字員

-


我不知道如何像彈鋼琴一般使用emacs,不過emacs中確實有插件可以在emacs實現彈鋼琴的功能.


程序員的瓶頸似乎不在於打字的速度。


這需要看你彈鋼琴的水平了。我不會彈鋼琴,我的Emacs水平和我彈鋼琴的水平一樣。所以我堅持使用IDE。


just try it


就像我在彈奏《4分33秒》一樣。


推薦閱讀:

Emacs 有什麼奇技淫巧?
如何優雅地使用 LaTeX 編輯公式?
電影《危機解密 》(The Fifth Estate )中使用的是什麼編輯器?
VIM怎樣讓編輯行自動位於屏幕中間?

TAG:文本編輯器 | Emacs |