安装和启动启动在 Windows 下正确安装 MIT Scheme 系统后,程序菜单里将有一个 MIT Scheme 目录,其中包含:
"C:\Program Files\MIT-GNU Scheme\bin\scheme.exe" --library "C:\Program Files\MIT-GNU Scheme\lib" Edwin系统的退出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 系统。 从交互循环进入 Edwin在交互方式下执行 (edit) 或 (edwin),将启动或返回 Edwin交互式执行中退出在提示符下键入下面表达式并回车:n ]=> (exit) 系统将要求确认。这样退出后所有在 Scheme 里已经做的事情都将丢掉了。 |
基本使用:命令行交互方式下回车,如果已输入了一个完整表达式,系统就会对其求值并输出结果在 Edwin 里 C-x C-e 求值光标左边的一个完整表达式,M-z 求值光标当时位于其中的整个定义式(一个定义式也就是一个表达式,其左括号从最左边开始) 命令行交互方式下的基本使用Edwin方式下的基本使用MIT-GNU-Scheme 文档 |
Scheme 文件操作编辑和装入程序文件:如果程序比较长,可以用系统外的编辑器编写好程序源文件,而后用 load 函数装入系统。下面是一个用绝对路径的实例: 1 ]=> (load "e:\\temp\\test1.scm") 求值这个表达式,可以看到文件装入的信息。load 函数还可以装入编译好的程序文件,详情见 Scheme 文档 “MIT Scheme User's Manual” 的 “3.2 Loading Files”。 用函数 cd 可以转换当前工作目录。下面是一个实例: 1 ]=> (cd "e:\\temp") 此后就可以直接用文件名装入这个目录下的文件了。 保存和恢复系统映像: 可以将 Scheme 系统的当前运行现场保存起来,以便将来回复这个现场。这样保存的现场称为一个“world image”或者一个“band”。实际上,Scheme 启动时也就是装入了一个默认的 band,装入编译器的启动方式就是装入另一个 band。 函数 save-disk 将当前现场存入文件。下例将现场存入当前目录下的文件 image1: 1 ]=> (disk-save "image1") 函数 disk-restore 恢复原保存在一个文件里的现场: 1 ]=> (disk-restore "image1") |
阅读 MIT Scheme 文档:“MIT Scheme Reference” 介绍 MIT Scheme 的详细功能,“MIT Scheme User's Manual” 介绍 MIT Scheme 的使用。“SOS Reference Manual” 介绍的 SOS 是 Scheme 的一个对象系统,“IMAIL User's Manual” 介绍的 IMAIL 是用 Scheme 做的一个邮件阅读器。下面简单介绍与前两个文档有关的若干问题。MIT Scheme 手册的主要内容是介绍这个 Scheme 系统提供的功能,包括预定义的变量(variable)、特殊形式(special form)和过程(procedure,函数)。例如
|
概述Edwin 是 MIT Scheme 系统的一个窗口式的编辑使用前端。其功能和使用方式都像著名编辑器 EMACS,使用方面的进一步细节可以参考 EMACS。本页简单介绍 Edwin 的使用。启动 Edwin 实际上是先启动 Scheme 系统再启动一个 Edwin 前端。Edwin 是一个用 Scheme 写的交互式编辑器。其特点是支持 Scheme 表达式的编辑和求值。 介绍 Edwin 的文档里常提到 buffer,这个概念类似于一般多窗口编辑器的编辑区。 两种不同执行模式在 Edwin 执行时,一个编辑区(称为一个 buffer)可能处于两种不同的运行模式:
建议大家在编辑模式下编写程序(函数的定义,所需基本数据的定义等),检查无误后(例如,函数能正常定义了)保存,然后在 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 有关的信息。网上可以找到许多相关信息。下面是一些有用链接: |
退出系统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 正向枚举这些表达式。这里列出了 EMACS 的一些常用命令(中文,在 Edwin 里都可用) |
调试如果正在进行的求值出错,系统将给出一些错误信息,并询问是否启动调试器(debuger)。回答 y 要求系统启动调试器,显示出一个新的调试器窗口;回答 n 回到原求值循环。(这部分内容将进一步建设) |
编辑技术 |
其他Edwin 前端是一个功能强大的编辑器,允许用 Scheme 对其功能进行任意的扩充。这方面情况与 EMACS 类似,只是这里用的扩充语言是 MIT Scheme(EMACS 用的是 EMACS Lisp)。请参考 MIT Scheme 文档和 EMACS 文档。 |
http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/emacs-commands.txt
程序 C-x C-z 挂起程序 C-c C-x 退出程序 C-c k 关闭buffer C-l 重画屏幕 C-g 结束命令,或者假死中恢复,也可以按3次ESC 文件 C-x C-s 保存 C-x C-w 另存为 C-x C-f 打开文件 C-x C-r 只读方式打开 C-x C-v 读入另外一个文件代替当前buffer的文件 C-x s 保存所有 C-x i 将文件的内容插入 M-x revert-buffer 恢复到原始状态 跳转 前/后 单位 C-f/b 字 M-f/b 词 C-a/e 行内 M-a/e 句 M-</> 文档 C-p/n 行间 M-{/} 段落 C-x ]/[ 页 C-x C-x 文件内,mark之间 M-g g 跳到指定行 M-x goto-char 跳到指定字符 编辑 M-u 后面单词变为大写 M-l 后面单词变为小写 M-c 后面单词的首字母变大写 M-/ 补全 C-j 从当前位置分成两行,相当于RET + tab M-( 插入() C-q tab 插入tab C-q C-m 插入^M M-; 插入注释 C-o 回车 删除 M-d 后一词 C-d 后一字 M-del 前一词 M-k 到句尾 M-" 前面的所有空白 M-z 删到指定字母处 C-k 删除到行尾 文本换位 C-t 字符 M-t 单词 C-x C-t 行 M-x transpose-* 其他命令 撤销 C-/ C-x u C-_ C-z 重做 C-g M-x undo C-g C-/ C-g C-z C-g C-_ 粘贴 C-y C-v tab/空格转换 M-x tabify M-x untabify 让选择的区块自动对齐 M-x indent-region 其他命令 C-u <数字> <命令> 重复命令n次 M-<数字> <命令> 同上 M-! 运行shell命令 C-u M-! 执行一条外部命令,并输出到光标位置 M-x cd 改变工作目录 M-x pwd 当前工作目录 C-" 启动输入法 M-` 菜单 F10 菜单 M-x eval-buffer 在.emacs的buffer中运行,重新加载emacs配置 查找替换 ---------------------------------------------------------------------- C-r 向上查找 C-s 向下查找 C-s C-w 向下查找,光标位置的单词作为查找字符串 C-s C-y 向下查找,光标位置到行尾作为查找字符串 C-s RET <查找字符串> RET 非递增查找 C-s RET C-w 不受换行、空格、标点影响 C-M-s 正则式向下查找 用向上查找命令就将上面命令的s替换为r M-% 替换 C-M-% 正则式替换 y 替换当前的字符串并移动到下一个字符串 n 不替换当前字符串,直接移动到下一个字符串 ! 进行全局替换,并要求不再显示 . 替换当前字符串,然后退出查找替换操作 q 退出查找替换操作,光标定位到操作开始时的位置 其他命令 M-x replace-* M-x search-* 窗口 C-x 0 关掉当前窗口 C-x 1 关掉其他窗口 C-x o 切换窗口 C-x 2 水平两分窗口 C-x 3 垂直两分窗口 C-x 5 2 新frame buffer C-x C-b 查看 C-x b 切换 C-x C-q 设为只读 C-x k 删除 C-x left/right 切换 翻页 C-v 下一页 M-v 上一页 选择 M-h 选择段落 C-x h 全部选择 普通区块 C-SPC M-x set-mark-command 单个位置set mark C-@ 同上 M-@ 对word进行set Mark M-w 先set Mark,移到光标,M-w就可以复制 C-w 剪切 矩形区块 用这些快捷键要先关闭cua-mode C-x r t 用串填充矩形区域 C-x r o 插入空白的矩形区域 C-x r y 插入之前删除的矩形区域, 粘贴时,矩形左上角对齐光标 C-x r k 删除矩形区域 C-x r c 将当前矩形区域清空 寄存器 ---------------------------------------------------------------------- 光标位置和窗口状态 C-x r SPC <寄存器名> 存贮光标位置 C-x r w <寄存器名> 保存当前窗口状态 C-x r f <寄存器名> 保存所有窗口状态 C-x r j <寄存器名> 光标跳转 文本和数字 C-x r s <寄存器名> 将连续区块拷贝到寄存器中 C-x r r <寄存器名> 将矩形区块拷贝到寄存器中 C-u <数字> C-x r n <寄存器名> 将数字拷贝到寄存器中 C-x r i <寄存器名> 在缓冲区中插入寄存器内容 M-x view-register 查看寄存器内容 M-x list-registers 查看寄存器列表 宏模式 C-x ( 开始一个宏的定义 C-x ) 结束一个宏的定义 C-x e 执行宏 M-x name-last-kbd-macro 给最后一个宏命名 M-x insert-kbd-macro 在当前文件中插入一个已定义并命名过的宏 书签 C-x r m <name> 设置书签 C-x r b <name> 跳转到书签 C-x r l 书签列表 M-x bookmark-delete 删除书签 M-x bookmark-load 读取存储书签文件 M-x bookmark-save 保存到文件 目录模式 ---------------------------------------------------------------------- C-x d M-x dired 启动目录模式 C-x C-d 简单目录 h 帮助 ? 简单帮助 请参考http://www.emacs.cn/Doc/Dired 帮助 C-h k 显示你将按下的键执行的function. C-h f 列出function的功能说明。 C-h b 列出目前所有的快捷键。 C-h m 列出目前的mode的特殊说明. C-c C-h 列出以C-c 开头的所有快捷键. 转抄自:http://www.cnblogs.com/Henrya2/archive/2009/02/21/1395615.html,特此感谢