Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pymacs 初體驗

2,058 views

Published on

PyCon Taiwan 2013

Published in: Technology
  • Be the first to comment

Pymacs 初體驗

  1. 1. Pymacs 初體驗PyConTW 2013Superbil <superbil@gmail.com>0.0.113年5月30⽇日星期四
  2. 2. About Me•軟體⼯工程師、Mobile App 開發•Emacs 使⽤用經驗⼤大約 1 年•Python 使⽤用經驗⼤大約 1 年•PyHUG 主持⼈人•about.me/superbil•freenode #python.tw #emacs.twon RPi13年5月30⽇日星期四
  3. 3. 什麼是 Emacs ?13年5月30⽇日星期四
  4. 4. 編輯器13年5月30⽇日星期四
  5. 5. 編輯器學習曲線13年5月30⽇日星期四
  6. 6. 為什麼要⽤用 Emacs ?!13年5月30⽇日星期四
  7. 7. You can hack it !你不⽤用把⼿手從鍵盤上移開13年5月30⽇日星期四
  8. 8. What is a hacker ?• hacker 是那些勇於挑戰既有體制,改變系統讓世界更進步的玩家,決定⼀一個⼈人是否為 hacker 的關鍵在於思維。hacker其實是⼀一種思考模式羅根.拉普蘭特:⽤用駭客思維學習Logan LaPlante: Hackschooling Makes Me Happy13年5月30⽇日星期四
  9. 9. Emacs 基本介紹• Ctrl + h t // emacs tutorial• Ctrl + {b,n,p,f} // h j k l• Ctrl + x b // 切換 buffer• Ctrl + x Ctrl + e // 執⾏行 ( ) 中的 elisp• Ctrl + h m // 查詢當下 mode 的⽂文件13年5月30⽇日星期四
  10. 10. Emacs 的熱鍵很難按13年5月30⽇日星期四
  11. 11. 更換你的 Ctrl 鍵位置• 你記得你上次⽤用到 Caps Lock 是什麼時候嗎?• Ctrl 在下⾯面的位置其實是⾮非常難按的巨⼈人出現了阿!!!13年5月30⽇日星期四
  12. 12. Emacs vsVim13年5月30⽇日星期四
  13. 13. Emacs vsVimvs Sublime Text13年5月30⽇日星期四
  14. 14. Emacs vsVimvs Sublime Textvs More...13年5月30⽇日星期四
  15. 15. Emacs vsVim• 其實這是個陳年⽼老問題…• 沒有好或不好,只有合不合⽤用13年5月30⽇日星期四
  16. 16. 為何不同時使⽤用Emacs 和Vim ?by 程序员时髦值指南同时⽤用 Vim 和Emacs,这⼈人早被烧死了13年5月30⽇日星期四
  17. 17. Install Emacson Server ?13年5月30⽇日星期四
  18. 18. 為什麼要⽤用 Pymacs ?13年5月30⽇日星期四
  19. 19. 因為沒有⼈人會寫 lispemacs lisp13年5月30⽇日星期四
  20. 20. 因為沒有⼈人會寫 lisp• 想要 hack Emacs ⼜又不想學 lisp你就可以⽤用 Pymacs13年5月30⽇日星期四
  21. 21. How to install Pymacs• Python side• make install• Emacs side• M-x package-install RET pymacs RETEmacs 24.x +13年5月30⽇日星期四
  22. 22. Pymacs Debug要切換到 *Pymacs* 這個 Buffer13年5月30⽇日星期四
  23. 23. Pymacs 運作原理• 建⽴立 server process 跑到 loop 等待• 當接收到指令之後執⾏行,並回傳到emacs• 實際上是遞迴13年5月30⽇日星期四
  24. 24. Pymacs 的簡單應⽤用• pymacs-exec• (pymacs-exec "print Hello PyConTw")• 在 Python 的執⾏行環境裡⾯面執⾏行程式碼執⾏行 python 的 statement,回傳值永遠都是 nil13年5月30⽇日星期四
  25. 25. Hello WorldPython sidefrom Pymacs import lispinteractions = {}def hello_world():"Hello world from Python."lisp.insert("Hello from Python!")interactions[hello_world] = 13年5月30⽇日星期四
  26. 26. Hello WorldEmacs side• 讀取⼀一個名為 helloEmacs 的套件,並使⽤用 hm- 來當作前綴詞(pymacs-load "helloEmacs" "hm-")13年5月30⽇日星期四
  27. 27. 產⽣生出 lisp function• (hm-hello-world)hm-hello-world is an interactive Lisp function.(hm-hello-world &rest ARGUMENTS)It interfaces to a Python function.Hello world from Python.13年5月30⽇日星期四
  28. 28. M-x hm-hello-world(hm-hello-world)Hello from Python!13年5月30⽇日星期四
  29. 29. Sample - winklerfrom Pymacs import lispinteractions = {}def break_on_whitespace():start, end = lisp.point(), lisp.mark(True)words = lisp.buffer_substring(start,end).split()lisp.delete_region(start, end)lisp.insert(n.join(words))interactions[break_on_whitespace] = 13年5月30⽇日星期四
  30. 30. Sample - winkler resultHello PyCon TaiwanM-x winkler-break-on-whitespaceHelloPyConTaiwanMarkedfrom Pymacs import lispinteractions = {}def break_on_whitespace():start, end = lisp.point(), lisp.mark(True)words = lisp.buffer_substring(start, end).split()lisp.delete_region(start, end)lisp.insert(n.join(words))interactions[break_on_whitespace] = 13年5月30⽇日星期四
  31. 31. Live Demo13年5月30⽇日星期四
  32. 32. 到那邊問問題?• Pymacs 0.25• Emacswiki.org• stackoverflow.com• Emacs on Google Plus• freenode#emacs.tw• planet.emacsen.org13年5月30⽇日星期四
  33. 33. 13年5月30⽇日星期四
  34. 34. Happy HackingKeyboard13年5月30⽇日星期四
  35. 35. Thank you13年5月30⽇日星期四

×