Read, evaluate, print, loop. A simple tool at the end of it all. Most languages come with one. Node, Ruby, and Python all have one. Even Lisp and Haskell come with them. There are even attempts at Java and C# ones. However, the default REPL is a little lackluster. All it usually does is read, evaluate, print, and loop, after all. There’s no autocomplete and no syntax highlighting, two features I greatly enjoy.
or is there…
Ruby
For some reason, my install already had autocomplete enabled. If that
isn’t the case for you, create a file .irbrc
in the $HOME
directory and add the following line:
require 'irb/completions'
Suddenly, auto-complete! It also adds auto-indentation for blocks. Now, this is nice, but syntax highlighting would be nice, too. Unfortunately, there doesn’t seem to be a way to add this in a default Ruby install.
Fortunately, there is pry
.
Pry
Have you heard of pry yet? Not only is it a fantastic REPL
with auto-complete by default, but also syntax highlighting. It
also has a handful of functions built-in to ease developer life.
Want some documentation? show-doc
and show-method
are there
for you. Not enough? There are a number of plugins to help.
Throw a binding.pry
in your code, and instantly pause at that
line. The gem pry-nav
adds some commands to step, continue, etc.
like a proper debugger.
There are tonnes of other plugins, check them out.
Python
The story is very similar in python as well. Add a snippet to a
.pythonrc
file, and we have auto-complete.
try:
import readline
except ImportError:
print("Module readline not available.")
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
from imp import reload
NOTE: If you’re on Windows, you’ll have to
pip install pyreadline
, but don’t change the original snippet.
Syntax highlighting: Ruby has pry
, and Python has IPython
.
IPython
Recently, IPython split into a [few smaller projects]5], which is a good thing! This means that there is less crud on your system! (Unless you want the crud, no judging. jupyter does look cool.)
If you thought pry
had a lot of features, you have to check out
IPython
.
Sure, it has syntax highlighting, but there is so much more. So much more, in fact, that I’m not even going to explain it here. I’ll let them do that for themselves.
Is there an upgraded Node REPL out there? You bet. You could even make your own from all the NPM packages out there.
REPLs deserve upgrading, and you deserve an upgraded REPL.