如彈鋼琴般使用 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: 快速跳轉
- 我寫c++的用etags+cscope可以快速跳到幾乎任何函數和變數的位置
- make時(smart-compile)能跳到Error的文件對應行
- ace-jump-mode能跳到任何一個單詞/字元的位置
- ido能快速切換buffer
- recentf-open-files能快速跳到最近打開的一個文件
- mark是在當前位置設下一個標記,當你臨時要去別的行/文件改東西再回來時,能快速跳轉回來。
- 還有默認的移動一個字元/一個單詞/一行/一個語句塊等等,基本是心在哪裡,游標就在哪裡。
飛的體驗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怎樣讓編輯行自動位於屏幕中間?