更好的 repl(re.sub)
在習慣使用動態語言之后,很是熱衷于在 repl 下做各種嘗試驗證一些簡單的想法。多數動態語言都內置提供了 repl,比如 python 的 python ,ruby 的 irb ,php 的 php -a ,nodejs 的 node ,甚至 haskell 這樣的靜態語言也有 repl: ghci 。 只是這些自帶的 repl 都比較簡單,所以會有一些替代工具,提供 更好 的體驗:語法高亮,即時輸出,簡單的代碼補全和提示。
php
php 默認的是 php -a ,功能很差,要輸出內容還必須 echo。 boris 是更好的替代,不需輸入 echo 直接輸出,也有基本的語法高亮(只對輸出有高亮,輸入沒有)。boris 沒有代碼補全。
MAC 自帶的 php 缺乏一些必要的組件,使得 boris 無法使用,建議使用 brew 下的 php: brew install php 。
[1] boris> class A {[1] *> function t(){[1] *> return "test";[1] *> }[1] *> }// NULL[2] boris> $a = new A;// object(A)(//// )[3] boris> $a->t();// 'test'
登錄后復制
python
python 自帶的也很難用,但是 python 的替代工具要比 php 多,而且極其強大,強大到可以獨立作為一個工具使用,而不僅僅是 python 的 repl。
bpython 是一個相當優秀的替代,不僅提供了很好的高亮,也可以 tab 鍵智能補全和提示。建議當只是想做一些簡單的試驗的時候,用 bpython 代替 python。
bpython
ipython 的 terminal 看起來似乎沒有 bpython 好,不僅沒有語法高亮,代碼提示也很一般 1 。但是 ipython 是完全不同的一個工具,詳情看 官網 ,這是一個套件,支持交互式的數據可視化,ipython notebook 是一個強大的 python IDE,功能很類似 matlab(不妨參考之前的文章)。畢竟,一個可以招博士后的項目,絕非池中之物 2 。
ipython notebook 基于 jupyter ,功能豐富。jupyter 目前已支持 bash, haskell, julia, python, r, ruby, scala。 Try
jupyter
最近的 4.1 更新 中,更是提供了一些現代編輯器如 sublime text 和 atom 的功能,比如 Command palette,以及更強大的查找和替換。詳情請查看上面博文。
ruby
ruby 自帶的 irb 默認功能是挺簡單的,但是配置好 irbrc 后,也是可以實現常見的高亮和提示功能的。然而在 ruby 世界用 pry 的更多,pry 默認配置已經足夠好,還可以配置 pryrc,完全定制 pry 的樣式和功能。pry 提供了一些實用 插件 。甚至有 pry-theme 這樣的項目。ruby 世界對顏值的追求一向不落人后。
pry-rails-console
nodejs
nodejs 除了自帶的 node,也有一些第三方 repl 增強。 nesh 就是其中很優秀的一個。不得不說,node 世界最近發展迅速,開發者熱情高漲,插件、庫層出不窮。 nesh plugins
npm install -g nesh# Run neshnesh# Run nesh with CoffeeScriptnesh -c# Run nesh with ES6 through Babelnesh -b
登錄后復制
i.js 是一個受 ipython 啟發而開發的項目,但不是基于 jupyter。有興趣的不妨嘗試一下。
i.js screenshot
others
然而在 Linux 世界,還有很多命令行工具極其簡陋,比如 sqlite3,比如 ftp,連基本的向上方向鍵查看命令歷史的功能都沒有提供,一時也沒有好的替代,應該怎么辦呢?
rlwrap 正是解決這一問題的工具。
[0] % sqlite3 production.sqlite3SQLite version 3.8.4.1 2014-03-11 15:27:36Enter ".help" for usage hints.sqlite> .tablesalbums images usersarticles schema_migrationssqlite> ^[[A^[[A^[[A^[[A
登錄后復制
[1] % rlwrap sqlite3 production.sqlite3SQLite version 3.8.4.1 2014-03-11 15:27:36Enter ".help" for usage hints.sqlite> .tablesalbums images usersarticles schema_migrationssqlite> .tables
登錄后復制
使用 rlwrap,方向鍵可用了。
總結
以上是生活随笔為你收集整理的更好的 repl(re.sub)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fruncm server sql 无法
- 下一篇: 0pp0a77多大内存