在习惯使用动态语言之后,很是热衷于在 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,方向键可用了。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php的repl是什么,更好的 repl相关推荐

  1. REPL (read-evaluate-print-loop)概念-读取评估打印循环

    2019独角兽企业重金招聘Python工程师标准>>> 概述 在REPL中,用户输入一个或多个表达式(而不是整个编译单元),REPL评估它们并显示结果.名称read-eval-pri ...

  2. Apache Spark源码走读之16 -- spark repl实现详解

    欢迎转载,转载请注明出处,徽沪一郎. 概要 之所以对spark shell的内部实现产生兴趣全部缘于好奇代码的编译加载过程,scala是需要编译才能执行的语言,但提供的scala repl可以实现代码 ...

  3. 常见编程语言对REPL支持情况小结[转]

    文章转载自http://www.nowamagic.net/librarys/veda/detail/2462 最近跟一个朋友聊起编程语言的一些特性,他有个言论让我略有所思:"不能REPL的 ...

  4. REPL----------------------什么是repl?以及如何理解

    REPL 一.概念 REPL - 交互式解释器环境. R(read).E(evaluate).P(print).L(loop) 输入值,交互式解释器会读取输入内容并对它求值,再返回结果,并重复此过程. ...

  5. mac node repl_如何使用Node.js REPL

    mac node repl The author selected the Open Internet/Free Speech Fund to receive a donation as part o ...

  6. 科技爱好者周刊(第 193 期):前端与后端,谁更难?

    这里记录每周值得分享的科技内容,周五发布.([通知] 下周欢度春节,周刊暂停,2月11日恢复.) 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容. ...

  7. nodejs菜鸟笔记[不定时更]

    node.js笔记[不定时更] 创建第一个应用 npm介绍 本地安装与全局安装 本地安装 全局安装 卸载.更新模块 npm常用命令 使用淘宝NPM镜像 Node.js REPL(交互式解释器) 使用变 ...

  8. python repl_asyncio REPL(Python 3.8)

    前言首发于微信公众号「Python之美」(微信号 python_cn) 我最近都在写一些Python 3.8的新功能介绍的文章,在自己的项目中也在提前体验新的Python版本.为什么我对这个Pytho ...

  9. 利用mem数组完成MM32 的 MicroPython中UART1的(REPL)的交互

    简 介: 利用了UART中的CSR的RXVAL标志位,可以判断有新的byte从REPL中获得,通过查询该标志位,可以实现通过REPL(UART1)上位机发送的信息.进而可以提高软件调试效率.在程序中添 ...

最新文章

  1. 浅谈Android引用计数(2)
  2. 编写优秀Bug报告的艺术 ----转载自CSDN(imlogic的专栏)
  3. 推荐九种天然食物脑黄金
  4. 如何查看oracle用户级别,用户级别的Oracle 导入导出
  5. HOSTNAME问题 和yum配置163源的操作 安装lsb_release,KSH,CSH
  6. android 导航动画,安利一个Android导航库
  7. Java 随心笔记7
  8. 删除PHP配置文件中的注释行
  9. python 类 字典_python基础类型—字典
  10. JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
  11. c语言一维数组程序题,C语言程序设计 练习题参考答案 第四章 一维数组
  12. 转自《我的2017,熠熠生辉》的沙发评论
  13. 2022智慧工地劳务实名制系统——工地人员高效管理黑科技
  14. Java实现MySql分页查询
  15. Java 12 新特性
  16. cscd期刊计算机排名,计算机CSCD核心期刊.pdf
  17. vscode常用插件-Auto Close Tag
  18. 微信中无法直接下载秒借类金融贷款APP的解决方案
  19. 最新美团代付源码+支持多模板/多支付通道/全开源
  20. STM32的升级--ICP/ISP/IAP以及Ymodem协议分析

热门文章

  1. 主干(trunk)、分支(branch )、标记(tag) 用法示例 + 图解
  2. Windows10下载安装docker
  3. 真实场景的双目立体匹配(Stereo Matching)获取深度图详解
  4. SIM900A发送数据到新浪云服务器
  5. Spec2Vec快速入门
  6. 2018年5月28日 情绪、信念与身体 总得写点什么
  7. 前端需要的这些你都学会了吗?
  8. Gabor滤波器特征提取原理讲解及c++实现
  9. 塞规公差带图_塞规和卡规公差表
  10. android如何用真机测试,android studio如何使用真机测试app