Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programming Scheme(Racket) with VIM - How to get started

recently, I started programming Racket (formerly Scheme) in DrRacket. I quite fast I began to miss all the features of VIM in DrRacket, so I would like to use VIM for my scheme(racket) programming.

I know that Emacs might be the best choice for intense lisp programming, but all I want is write a scheme(racket) file check syntax and then run it.

Unfortunately, I could not figure out, how to invoke "racket" in the commandline on a file to get it doing the same as DrRacket.

I am running Ubuntu 10.10 Maverick Meerkat, VIM 7.3 and I downloaded and installed Racket from the official website.

Help to get started would be very appreciated.

like image 344
Markus1189 Avatar asked Mar 18 '11 13:03

Markus1189


People also ask

Is racket better than Scheme?

Racket is a fork of Scheme, the simple language at the core of this course for many years. Scheme was created primarily as an experiment in understanding how programming languages work. Racket retains its basic favor, but it also adds many, many features that make the language useful in the 21st century.


2 Answers

If you just want to load a file into Racket on the command-line and run it, I think that this should work:

$ racket -f file.scm -i 

The -i option would leave you at the REPL to test your code in file.scm.

However, you might want to take a look at this blog post:

http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/

You can set up a GNU screen session running the command-line Racket, and send s-expressions to it from Vim. There's a link to a bit of Vimscript which will make this automatic. I used this for a while with mit-scheme, and it was reasonably effective. It's not quite the as powerful as SLIME or DrRacket though. I just tested the steps described on OS X and it works with the command-line racket, it should work on Ubuntu, that's what I was using when I first used this method.

You might also want to take a look at this:

http://evalwhen.com/scmindent/index.html

... which has some information on better indentation in Vim for Lisp and Scheme code.

I eventually switched to Emacs, but don't let the Vim haters get you down. Paul Graham supposedly uses vi and he's gotta be one of the top 5 most prominent Lisp programmers.

http://paul.graham.usesthis.com/

like image 74
michiakig Avatar answered Sep 19 '22 18:09

michiakig


Several add-ons are available to make coding in Racket more satisfying with Vim.

  • Vim’s lisp mode (set lisp) -- improves some basics for indenting and w/e/b word-hopping.
  • vim-racket -- sizable set of vim-syntax recognition for functions and syntax
  • syntastic -- identify errors upon save (vim-racket sets makeprg for this to work)
  • Rainbow Parentheses -- set your own paren colors for maximal contrast!
  • vim-slime -- use with Tmux to connect Vim to a Racket REPL
  • surround -- wrap forms and elements in parens
  • vim-sexp for normal people
  • Molokai color scheme -- high contrast
  • VROD* -- K-based Vim documenation, and auto-completion of Racket functions
  • REPTL* -- very simple continuous rackunit test runner

I prefer slime over slimv for its simplicity.

If you are using Vundle, here is a way to install most of the add-ons mentioned:

Plugin 'tpope/vim-surround.git' Plugin 'kien/rainbow_parentheses.vim' Plugin 'scrooloose/syntastic.git' Plugin 'MicahElliott/vrod' Plugin 'guns/vim-sexp' Plugin 'tpope/vim-sexp-mappings-for-regular-people' Plugin 'wlangstroth/vim-racket' Plugin 'tomasr/molokai.git' 

Put those into your ~/.vimrc, and then invoke to install:

% vim +PluginInstall +qall 

Here is a screenshot showing off most of these:

enter image description here

(* disclosure: I wrote VROD and REPTL, and they are immature)

Also, here is a related blog post describing a Vim/SICP setup.

like image 23
Micah Elliott Avatar answered Sep 21 '22 18:09

Micah Elliott