# Touch Develop Editor

The Touch Develop editor.

### @parent js/contents
 

The Touch Develop editor is where you write and test your code. If you're new to Touch Develop, check out the [Touch Develop editor video](/getting-started/touchdevelop-editor).

To create a new Touch Develop script:

1. Go to the micro:bit website and click **Create Code** (along the top).

2. Under the Touch Develop editor heading, click **New project**.

3. Type a name for your script and click **create**.

An empty script with a [function](/js/function) called `main` is created.

## The Editor Menu Bar

The Touch Develop editor has a bar of options above the code area:

![](/static/mb/data-1.jpg)

* `my scripts` takes you back to a list of your scripts (My Scripts). The open script is automatically saved (in the cloud) when you leave the editor.
* `run` executes your script, showing you the results on the on-screen micro:bit device. See [run scripts in the browser](/js/simulator) for more about this.
* `compile` sends your script to an ARM compiler, which creates a file that you can run on your micro:bit. See [run scripts on your micro:bit](/device/usb) for more info.
* `undo` undoes changes that you made to your script.
* `search code...` search for functions in libraries such as the micro:bit library.
* `script` opens script options, where you can do things like publish and preview. See **script options** below.

Many of the above buttons aren't much use until you've written some code, so let's move on to the Code Keyboard.

## Code Keyboard

The Code Keyboard makes it easy to write code on a touch screen device or by using your mouse. You can also type code using your computer keyboard if you know what function or statement you want (see [Touch Develop documentation](/js/contents) for a complete list).

To open the Code Keyboard, click on a line of code:

![](/static/mb/data-2.jpg)

An on-screen keyboard appears, with buttons that vary depending on what's selected.

### Statements

The first row of the Code Keyboard has Touch Develop [statements](/js/statements) that you can insert into your code. These buttons are blue and include things like [var](/reference/variables/var), [if](/reference/logic/if), [for](/reference/loops/for) , and [while](/js/while). Click `more` to see additional statements.

### The BBC micro:bit, math, and code buttons

* `micro:bit`: click to see all the [micro:bit functions](/js/contents); click `more` to scroll left to right. The micro:bit functions are also grouped together behind the following category buttons: `basic`, `control`, `input`, `image`, `led`,  and`pins`
* `code`: click to access functions you've written (see [call a function](/js/call) for more info)
* `math`: click to see [math functions](/js/math); such as `abs` and `round`
* `bits`: click to see functions for bit-level manipulation of integers

### Editing code: add, copy, paste, and cut

In the coding area...

* **add**: to add a new line, click on a line and then click a **+** to add a new line above or below the current line
* **copy, paste, cut**: click on a line then click **copy** or **cut**. Then click on a new line, and click **paste**.

### Block editing

To copy, cut, or comment out a block of code (more than one line):

1. Click on a line of code.

2. Press and hold the `Shift` key, and then press the `Up arrow` or `Down arrow` key on your keyboard (this selects multiple lines).

3. Choose a block editing option like copy, cut, or [comment out](/js/comment).

### Script options

Click `script` (in the upper-right corner) to open the script options:

![](/static/mb/data-3.jpg)

Here you'll find options like...

* `script properties`: the script name, description, and whether or not the script is a library  (more info below)
* `publish`: share a script with other users by [publishing](/js/publishing) it
* `share`: share a link to a published script (see [publish as script](/js/publishing) for more info)
* `preview`: preview a documentation script
* `+` `add new`: add a new [function](/js/function), [global variable](/js/data), picture, or library to a script
* *code*: the functions in your script; click a function to open it in the editor
* *global vars*: the [global variables](/js/data) in your script; click a variable to go to that variable
* *libraries*: the libraries added to your script
* *art*: picture and video resources added to your script

### Script properties

To edit a script's properties, click `script` (in the upper-right corner), and then click the script name or script properties.

![](/static/mb/data-4.png)

* `name`: the script's name (60 character limit)
* `description`: a description of what your script does along with #hashtags for search (for example, #game or #maker). Hashtags are especially important if you publish your script (200 character limit).
* `this script is a library`: click this check box to turn a script into a library

### Comments

Comments are notes within your scripts. To learn how to insert comments into your scripts, see [Comments](/js/comment). You can format your comments using [markdown syntax](/js/markdown).

### Share your scripts

Share your scripts with other people by publishing them. See [publish a script](/js/publishing) for more info.

### See also

[publish a script](/js/publishing), [Touch Develop documentation](/js/contents)

