当前位置: 首页 > news >正文

安装Emacs并设置racket环境

最近在阅读sicp这本书,书中的代码是使用scheme实现的。之前阅读的时候是使用Dr.Racket来完成写练习的,可我觉得与其这样,不如一步到位,使用emacs+lisp解释器来的比较快。

安装emacs

直接点击官方教程点我查看,上面讲解的十分清楚,基本上不同系统的安装方式大同小异,下载后点击运行,还是很简单的吧。

安装lisp解释器

lisp有无数种实现的版本,这里我使用的是Racket,因为我之前电脑上就有Dr.Racket所以不用下载,如果你没有的话,可以点击Racket下载地址,选择合适系统的版本进行下载,当然你也可以选择其他lisp方言的实现版本,例如Petite Chez Scheme下载地址。下载完解压即可。

下载完毕后,你可以得到这样的一些程序

Racket基本程序

接着设置将上图解释器所在的文件夹路径设置到系统路径中(windows=环境变量,mac/linux=$path),接着在终端敲击racket --version 来检查是否设置成功。如果出现以下信息,你就成功了。

检查Racket是否成功设置

安装一些必要而有效的插件

我们需要安装简单的几个插件来帮助我们高效的编写和运行代码。

设置插件源

和linux安装软件类似,这里我们设置MELPA的安装源,这样我们就可以一键安装代码了,十分方便。
鉴于国外访问速度很慢,我们这里使用国内的镜像源,这里要感谢一直维护自由软件的人,否则这些工具的设置与配置哪里会有这么容易和便捷:)

emacs中所有的配置都在~/.emacs这个文件中,对于windows,就是在C盘的个人目录文件夹下。我们可以通过编辑这个文件来对emacs进行一些自定义的配置。打开.emacs文件,在文件的末尾加上以下配置,设置我们的插件安装源。

 ;; melpa 安装源
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://elpa.emacs-china.org/melpa/")
             t)
(package-initialize)

这样就可以方便的安装插件了。

安装Racket-mode

Racket-mode很好用,执行代码,高亮,提示,反正我觉得该有的都OK,下面就进行安装。
使用以下命令M-x package-install <ret> racket-mode,M代表alt组合键的意思,ret代表回车,所以该命令实际上就是

  • alt+x打开命令模式
  • 输入package-install (可以用空格键/tab来提示),回车
  • 再输入要安装的插件名racket-mode,回车确认,等待安装完毕。

插件安装

怎么样,很简单吧。

安装完毕后,在配置文件.emacs配置文件中增加以下代码的配置

;;racket配置,设置解释器,自动补全,代码执行等
(require 'racket-mode)
(setq racket-racket-program "racket")
(setq racket-raco-program "raco")
(add-hook 'racket-mode-hook
          (lambda ()
            (define-key racket-mode-map (kbd "C-x C-j") 'racket-run)))
(setq tab-always-indent 'complete) 

安装ParEdit

ParEdit是一款让你半结构化编辑lisp的插件,例如括号的自动补全,s-表达式的转移,提取等等,还是很方便的。
同样使用M-x package-install <ret> paredit-mode 进行安装即可。

具体的使用方法不是本篇文章的重点,可以参考以下几篇文章

  • Emacs Paredit插件
  • scheme编程环境的设置
  • 官方卡片指南

Hello World

全部设置完毕后,我们新建一个文件(ctrl+x 回车 i 回车 输入文件名),输入以下代码

#! /usr/bin/env racket

#lang racket

(displayln "Hello World!")

接着使用F5 执行 S-表达式,成功的打印的出Hello World

Hello World

至此,安装Emacs并设置racket环境就完毕啦

参考资料

  • Emacs Quick Start
  • Emacs Paredit插件
  • scheme编程环境的设置
  • Paredit 官方卡片指南
  • Emacs简单教程系列
  • 从零开始——Emacs 安装配置使用教程

转载于:https://www.cnblogs.com/invoker-/p/8997881.html

相关文章:

  • 记录一次我的造成的生产事故
  • JavaScript三(对象思想)
  • IDEA搭建工程
  • python学习笔记-day7-2-【python从mysql数据库导数据到excel,读excel,修改excel】
  • linux下实现多台服务器同步文件(inotify-tools+rsync实时同步文件安装和配置)
  • Python实用笔记 (15)函数式编程——装饰器
  • LuoguP3621 [APIO2007]风铃
  • Python变量和基本数据类型
  • Transaction rolled back because it has been marked as rollback-only
  • 微信网页版的onclick事件不起作用
  • 记录MongoDB常用查询
  • Linux环境下mysql的root密码忘记解决方法(2种)
  • Oracle入门《Oracle介绍》第一章1-3 Oracle 逻辑组件
  • Vue2.0 的漫长学习ing-3-4
  • SDN学习笔记mininet+ryu开篇
  • C++类的相互关联
  • ESLint简单操作
  • Node项目之评分系统(二)- 数据库设计
  • Redis在Web项目中的应用与实践
  • Spring框架之我见(三)——IOC、AOP
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • uni-app项目数字滚动
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 技术发展面试
  • 我建了一个叫Hello World的项目
  • 我是如何设计 Upload 上传组件的
  • 线性表及其算法(java实现)
  • 移动端唤起键盘时取消position:fixed定位
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Java总结 - String - 这篇请使劲喷我
  • ​520就是要宠粉,你的心头书我买单
  • # include “ “ 和 # include < >两者的区别
  • #NOIP 2014# day.1 T2 联合权值
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()
  • (二)pulsar安装在独立的docker中,python测试
  • (二)windows配置JDK环境
  • (分布式缓存)Redis分片集群
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)一些感悟
  • .Net 8.0 新的变化
  • .NET面试题(二)
  • .NET命令行(CLI)常用命令
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • [\u4e00-\u9fa5] //匹配中文字符
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [Assignment] C++1
  • [BT]BUUCTF刷题第9天(3.27)
  • [bzoj 3534][Sdoi2014] 重建
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [C++进阶篇]STL中vector的使用