使用Emacs來編程
看了包昊君的system-config 配置中使用幫助視頻 十年Linux,百年Emacs ,感覺非常強大。 還有很多的博客,比如這篇system-config原理與使用的簡要說明 。 這是一種全新的工作操作流和交互模式,將Emacs中一些好用的交互方式應用在bash上,應用在linux系統上(sawfish窗口管理)等。這樣打造一整套屬於自己的編程環境,非常高效和實用。 可以說,這個對於編程開發人員來說,確實也是一種工匠精神,把編程開發流程和開發工具,做到極致的行為。 也可以看到Emacs的強大,以及Emacs的操作方式和理念與其他的工具和系統結合起來之后,可以產生更加強大的組合。當然,我沒有做Android開發,所以體會不到在2G甚至9G的源代碼里面找到代碼的痛苦。我目前配置和使用的helm-gtags就可以滿足代碼的查找和定位。當然,目前不夠的是,對於函數的定義,函數的調用沒有判斷,需要自己手動去上下查找。這樣可以向他學習一下,把函數定義和調用找出來。
目前,我的編程環境中完成有:
1 項目文件管理
使用helm-projectile來進行項目的文件查找。使用這個插件之后,在一個項目中打開、查詢一個文件變得非常方便。只需要按 C-c p f
就可以了,然后輸入部分文件名,它就會模糊匹配出相關的文件了。
2 代碼跳轉
- 項目級跳轉 目前使用helm-gtags,可以直接查找當前詞在整個項目中的定義和調用。由於項目不大,所以,基本上出現的次數都不會太多,可以很方便的預覽,或者跳轉過去。也可以使用這個插件搜索到結果之后,然后對所有搜索的結果進行編輯,保存之后,會把修改保存到項目的不同文件中去。這樣就相當於可以對項目進行快速的重命名或者重構。
- 文件內跳轉 文件內的跳轉,主要使用helm-swoop和helm-imenu。helm-swoop可以找到文件中關鍵字出現的多個位置,然后,預覽和跳轉。也可以進行編輯,這樣方便將文件中多處函數名或者變量進行重命名。helm-imenu主要是在函數直接進行跳轉。
3 代碼補全
- 上下文補全 代碼補全使用company-mode,tcl語言主要使用company-dabbrev和company-keyword就可以了,本來也改寫了一個company-gtags-tcl用來及時的上下文自動補全,但發現用gtags來查找補全,如果非常頻繁的調用還是有延遲的。所以,另外定義了一個快捷鍵來單獨調用。這樣,這個功能就可以在整個項目中去用ctags創建所有的函數和變量的index索引,然后,把庫函數補全出來,也可以順便把函數的參數調用方式顯示出來。對於,小型的動態語言的項目還是比較方便的。
yasnippet
定義了一些常用的yasnippet,可以快速的插入一些常見的代碼塊。
4 代碼檢查
之前使用過一段時間的flycheck-tcl來對代碼進行檢查。但發現這個其實用處不大。因為一般的錯誤用不着代碼來提示。而邏輯錯誤,或者其他的錯誤,這個也檢查不了。所以就關掉了。
5 庫函數文檔查看
之前寫過一篇文章來介紹怎么查看html的文檔:emacs-w3m查看html幫助手冊
6 mvc
創建了一個mvc的package,用來快速的生成一個基本的模塊文件結構。
7 其他的小函數
另外也自己寫了一些elisp小函數,用來拷貝當前定義的一個函數,或者當前文件的整個代碼,用來在調試窗口中粘貼。