Edwin 的基本使用

概述

Edwin 是 MIT Scheme 系统的一个窗口式的编辑使用前端。其功能和使用方式都像著名编辑器 EMACS,使用方面的进一步细节可以参考 EMACS。本页简单介绍 Edwin 的使用。

启动 Edwin 实际上是先启动 Scheme 系统再启动一个 Edwin 前端。Edwin 是一个用 Scheme 写的交互式编辑器。其特点是支持 Scheme 表达式的编辑和求值。

介绍 Edwin 的文档里常提到 buffer,这个概念类似于一般多窗口编辑器的编辑区。

两种不同执行模式

在 Edwin 执行时,一个编辑区(称为一个 buffer)可能处于两种不同的运行模式:

Edwin 模式
也就是编辑 Scheme 文件的模式。如果装入一个 .scm 文件,相应的 Edwin 的这个编辑区处于 Edwin 模式。在这种模式下可以编写 Scheme 程序,也可以对表达式求值。正常求出的值显示在最下面交互行,但不会显示出错信息,也不能进入调试系统
特殊的 REPL 模式
这时可以看到窗口下面状态条中显示 (REPL: lesten)。这时系统处于正常的 Scheme 交互模式,所有输出都显示在编辑器的窗口里,只不过是在 Edwin 里执行。在这种情况下可以看到所有系统输出(包括出错信息),也可以进入 debuger(是一个用 Scheme 写的交互式程序,它启动后打开另一个窗口)。
任何时候都可以用 M-x repl 回到或打开一个 REPL buffer。

启动 Edwin 后编辑器处于支持输入和求值 REPL 的模式。窗口下方黑条显示: --**-Ediwin: *Scheme*    (REPL: Listen) ----All---- 表示 Edwin 的模式,这时 Scheme 正在 REPL (Read-Evaluation-Print-Loop,读入-求值-打印循环) 中等待输入。上部大区域是交互窗口,可以在这里输入表达式并要求求值。

建议大家在编辑模式下编写程序(函数的定义,所需基本数据的定义等),检查无误后(例如,函数能正常定义了)保存,然后在 REPL 模式里装入(用 Scheme 语言的 load,见使用简介)并做各种试验和调试(输入并求值各种具体计算表达式)。

记号:

C-x,C-c 等表示按住 Ctrl 键的同时按 x 或 c 键;

M-p 等表示在按住 Meta 键的同时按 p键。在 PC 键盘上没有 Meta 键,可以直接用 Alt 键加上 p 键,或者先按 Esc 键再按 p 键。

帮助信息

在 Edwin 里按 Ctrl-h t,它会装入一个 tutorial 文件,其中讲述了各种常用命令。在 Windows 的 Scheme 程序菜单里的 Documentation 包含大量与 Scheme 有关的信息。

网上可以找到许多相关信息。下面是一些有用链接:
http://www.cnblogs.com/Henrya2/archive/2009/02/21/1395615.html
http://blog.csdn.net/msnlogo/archive/2009/04/05/4050176.aspx
http://www.blogjava.net/zhenyu/archive/2006/10/17/75657.html
http://harry.javaeye.com/blog/446418

退出系统

C-x z (表示按 Ctrl-x 后按 z 键):从 Edwin 中退到 Scheme 的命令交互状态。此时 Edwin 挂起,可用 (edit) 唤醒挂起的 Edwin,回到挂起前的状态。

C-x c :停止 Edwin 并回到 Scheme 的命令交互状态。

C-x C-z:停止 Edwin 并挂起 Scheme 系统。再次启动 Scheme 将唤醒挂起的 Scheme 系统,回到挂起前的系统状态。

C-x C-c:停止 Edwin 和 Scheme 系统。

求值 (exit) 退出 Scheme 系统。

简单编辑和执行

光标移动可以通过普通移光标键,或通过鼠标点击。用 Delete 或 Backspace 键删除字符。

在正常输入过程中,每次输入右括号 "(",环境将自动闪烁对应的左括号 ")"。

对于多行输入的表达式,换行后按 C-i,系统能将光标自动对齐到合适位置。对于各种复杂的 Scheme 表达式,例如 let, cond, 等等,Edwin 都定义了很好的对齐方式。

求值表达式的方式:将编辑光标(反色小块)移到表达式后面,按键 C-x C-e 。

被求值的表达式将由另一个线程求值,在求值过程中我们仍然可以做编辑工作。

C-c C-x 或 C-c C-u,用于杀掉正在进行的求值。

C-c C-b 中断当前求值,进入断点状态。

翻页等命令:

C-v:向下翻一屏   M-v:向上翻一屏
C-a:移动到行首   C-e:移动到行尾

两个常用操作

在 REPL 模式下,所有输入的历史都有记录。这使我们可以很方便地再次使用曾经输入过的表达式。 M-p 反向枚举曾经输入的表达式,M-n 正向枚举这些表达式。

这里列出了 Edwin 的常用命令(英文)

这里列出了 EMACS 的一些常用命令(中文,在 Edwin 里都可用)

调试

如果正在进行的求值出错,系统将给出一些错误信息,并询问是否启动调试器(debuger)。回答 y 要求系统启动调试器,显示出一个新的调试器窗口;回答 n 回到原求值循环。

(这部分内容将进一步建设)

编辑技术

其他

Edwin 前端是一个功能强大的编辑器,允许用 Scheme 对其功能进行任意的扩充。这方面情况与 EMACS 类似,只是这里用的扩充语言是 MIT Scheme(EMACS 用的是 EMACS Lisp)。请参考 MIT Scheme 文档和 EMACS 文档。

Edwin 的基本使用相关推荐

  1. 乔布斯一生都在模仿的偶像:两度从哈佛大学退学的发明家Edwin H. Land

    乔布斯逝世之后有人将之比作爱迪生,福特和贝尔,然而却很少有人提及乔布斯自己心中的偶像.事实上,乔布斯的事业和奋斗就是走的他当初的偶像之路--一位曾两度从哈佛大学退学的发明家 Edwin H. Land ...

  2. MIT Scheme 使用 Edwin

    MIT Scheme 的基本使用:http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/mit_scheme.htm 安装过程 安装bre ...

  3. matlab去雾算法论文,基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码.doc...

    本文主要介绍基于Retinex理论的雾霭天气图像增强及其实现.并通过编写两个程序来实现图像的去雾功能. 1 Rentinex理论 Retinex(视网膜Retina"和大脑皮层Cortex& ...

  4. 【SICP练习】84 练习2.56

    这道题的代码略长啊.不过我也是因此而知道Edwin上的代码居然可以复制到word上,以前还想当然的以为不能复制的,毕竟在Edwin上粘贴用的Ctrl+Y,而不是Ctrl+V.在这里我就只将书上没有的代 ...

  5. 2020年企业业务营收同比增长23.0%,华为的数字化转型实践之道

    近日,在华为分析师大会期间,华为举办"共创行业新价值"主题峰会,与来自全球的400多名行业分析师.财经分析师.各行业意见领袖及媒体现场参会,分享了对行业趋势的洞察,解决方案在具体行 ...

  6. 数据维度爆炸怎么办?详解5大常用的特征选择方法

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Edwin Jarvis,cnblog博客整理 在许多机器学习相关 ...

  7. 详解GCN、GAT、凸优化、贝叶斯、MCMC、LDA

    如果你准备发AI方向的论文,或准备从事科研工作或已在企业中担任AI算法岗的工作.那么我真诚的向大家推荐,贪心学院<高阶机器学习研修班>,目前全网上应该找不到类似体系化的课程.课程精选了四大 ...

  8. 同一天,数学和计算机界“诺奖”分别揭晓

    当地时间3月18日,挪威自然科学与文学院官网宣布,数学界最负盛名的奖项之一 --2020年阿贝尔奖授予以色列希伯来大学的希勒尔·弗斯滕贝格(Hillel Furstenberg)和美国耶鲁大学的格雷戈 ...

  9. 语言输出换行符号是什么_世界上最难的5种编程语言

    作者 | Lokajit Tikayatray 译者 | Rayden 策划 | 蔡芳芳 我们平时都在谈论 C.C ++.Java.Python 等编程语言,其实还有些语言不仅对于大多数软件开发人员来 ...

  10. R语言绘图:28个实用程序包

    本文转载自" 阿虎定量笔记",作者郑连虎,转载己获授权.其他人转载请联系原作者,点我跳转原文. 全文注释 # 示例参考帮助文档 # 我用Rstudio重现了所有示例 # 初识R语言 ...

最新文章

  1. [转]ASP.NET中常用输出JS脚本的类
  2. 架构——大师言语汇总
  3. 哈希表的C实现(三)---传说中的暴雪版
  4. Oracle 1204 RAC failover 测试 (五)
  5. Android application 中使用 provided aar 并没有那么简单
  6. (转)elasticsearch6.0版本安装head插件
  7. python网课期中答案_中国大学python编程答案网课MOOC考试期末慕课答案
  8. 谷歌浏览器怎么更新升级
  9. 安卓案例:绑定和解绑服务
  10. 文字不间断滚动(转)
  11. 两个系统交互方式有几种_创新性OriginOS系统,打造个性化交互方式,很给力
  12. JWPlayer Uncaught Error: Invalid SRT file
  13. PCL点云库:ICP算法
  14. iPhone安装ipa的方法(iTunes,PP助手)
  15. 【寒江雪】Go实现策略模式
  16. 集合数据结构线程并发库
  17. Qt:Label插入图片
  18. 量子计算机有生之年,对话哈佛大学教授Lukin:量子计算将在我们有生之年普及!...
  19. 我们公司的短信接口被刷了,瞬间损失两万,怎么解决?(短信接口被盗刷系列1)
  20. 基于php_thinkphp_vue养生馆保健品购物商城网站(源码+系统+mysql数据库+Lw文档)

热门文章

  1. Linux 实用指令 -- 关机、重启和用户登录注销、用户管理
  2. LOJ10099矿场搭建
  3. 计算机中组策略编辑,组策略编辑器用法-如何使用组策略
  4. STM32 CubeMx(七)SPI串行同步通信与外部FLASH(W25Q128)的读写和TFT液晶屏
  5. luogu P1724 东风谷早苗
  6. 虚拟汽车加油问题 (贪心算法)
  7. FS2120双节锂电池保护 IC
  8. (离散)令R={m|m=a+b√2,a,b∈Q,+为普通加法},定义映射g:R→  R 为g(a+b√2)= a-b√2,试证:g是/R,+/到/R,+/的自同构映射
  9. MFC建立简单绘图板
  10. Electron常见问题 30 - 深度填坑之阴影问题