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

Pymacs 初體驗

1,868 views

Published on

PyCon Taiwan 2013

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,868
On SlideShare
0
From Embeds
0
Number of Embeds
164
Actions
Shares
0
Downloads
14
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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⽇日星期四

×