Question: I have a simple readline shell written in Coffeescript:

```coffee
rl = require 'readline'
cli = rl.createInterface process.stdin, process.stdout, null
cli.setPrompt "hello> "

cli.on 'line', (line) ->
  console.log line
  cli.prompt()

cli.prompt()

```

Running this displays a prompt:

```
$ coffee cli.coffee 
hello> 

```

I would like to be able to hit `Ctrl-L` to clear the screen. Is this possible?

I have also noticed that I cannot hit `Ctrl-L` in either the **node** or **coffee** REPLs either.

I am running on Ubuntu 11.04.

Answer: 
You can watch for the keypress yourself and clear the screen.

```
process.stdin.on 'keypress', (s, key) ->
  if key.ctrl && key.name == 'l'
    process.stdout.write '\u001B[2J\u001B[0;0f'

```

Clearing is done with ASCII control sequences like those written here:
<http://ascii-table.com/ansi-escape-sequences-vt-100.php>

The first code `\u001B[2J` instructs the terminal to clear itself, and the second one `\u001B[0;0f` forces the cursor back to position 0,0.

### Note

The `keypress` event is no longer part of the standard Node API in Node `>= 0.10.x` but you can use the [keypress](https://github.com/TooTallNate/keypress) module instead.
You can clear screen using `console.log()` and escape sequences. 

```
cli.on 'line', (line) ->
  if line == 'cls'
    console.log("\033[2J\033[0f")
  else
    console.log line
cli.prompt()

```