见识一下传说中的MIT新生入门手册hhh
Contents
Materials
- Structure and Interpretation of Computer Programs
官网 -
Electronic versions with newly typeset mathematics and figures
里面的侧边栏还有很多资料(省了我的功夫hhh
Environment
Scheme Implementation
书里用的是MIT-Scheme
不过Racket的REPL更加棒,而且它有个SICP包提供对SICP的支持(在REPL模式下启用这个包:
racket -i -p neil/sicp -l xrepl),还有个挺好用的IDE:DrRacket
Vim Configuration
实现的功能跟这篇博客几乎差不多(该文文末有视频展示)
不过实现的方法几乎完全不同hhh
实时解释程序
首先安装插件vimshell(该插件依赖于另一个插件vimproc)
然后在配置文件
~/.vimrc里添加以下几行
1 2 3 |
set splitright command SICP VimShellInteractive racket -i -p neil/sicp -l xrepl vnoremap <F6> :'<,'>VimShellSendString<CR> |
于是在Vim里运行
:SICP则会在右分屏开启Racket的REPL模式作为Interpreter
左分屏用来编辑代码,通过
<Shift+v>框选代码后,按
<F6>即可发送代码到右分屏的Interpreter,并自动执行(超方便)
(Racket和vimshell其实不完全兼容,偶尔会遇到错误,这时通过
:bd和
:SICP重启Vimshell直到没事为止🙂顶多几次就好了hhh已报issue暂未解决🙂)
括号高亮
首先安装插件rainbow
然后在配置文件
~/.vimrc里添加一行
let g:rainbow_active = 1
括号补全
首先安装插件auto-pairs
然后在配置文件
~/.vimrc里添加一行
autocmd filetype lisp,scheme,art let g:AutoPairs = {'(':')'}
缩进
vim本身的缩进也不坏,不过有时会有些问题(而且我比较喜欢if的then语句和else语句跟条件语句对齐)
执行以下语句
1 2 |
wget -P ~/.local/bin https://github.com/ds26gte/scmindent/blob/master/scmindent.rkt chmod +x ~/.local/bin/scmindent.rkt |
然后在配置文件
~/.vimrc里添加一行
autocmd filetype lisp,scheme,art setlocal equalprg=scmindent.rkt
于是在Vim里通过
<Shift+v>框选代码后,按
=即可调整缩进
看着无数的巨坑,建博客易写博客难啊~~