

 AWS Cloud9 is no longer available to new customers. Existing customers of AWS Cloud9 can continue to use the service as normal. [Learn more](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

# Working with the AWS Cloud9 IDE
<a name="ide"></a>

An *integrated development environment (IDE)* provides a set of coding productivity tools such as a source code editor, a debugger, and build tools.

**Important**  
We recommend the following best practices for using your AWS Cloud9:   
Use **source control and backup** your environment frequently. AWS Cloud9 does not perform automatic backups. 
Perform regular **updates of software** on your environment. AWS Cloud9 does not perform automatic software updates. 
 **Turn on AWS CloudTrail** in your AWS account to track activity in your environment. For more information, see [Logging AWS Cloud9 API calls with AWS CloudTrail](cloudtrail.md) 
Only share your environments with **trusted users**. Sharing your environment may put your AWS access credentials at risk. For more information, see [Working with shared environment in AWS Cloud9](share-environment.md) 

Learn how to work with the AWS Cloud9 IDE by reading one or more of these topics.

**Topics**
+ [Tour the IDE](tour-ide.md)
+ [Language support](language-support.md)
+ [Enhanced language support](enhanced-lang-support.md)
+ [Menu commands reference](menu-commands.md)
+ [Finding and Replacing Text](find-replace-text.md)
+ [Previewing files](file-preview.md)
+ [Previewing running applications](app-preview.md)
+ [Working with File Revisions](file-revisions.md)
+ [Working with Image Files](images.md)
+ [Working with Builders, Runners, and Debuggers](build-run-debug.md)
+ [Working with Custom Environment Variables](env-vars.md)
+ [Working with project settings](settings-project.md)
+ [Working with user settings](settings-user.md)
+ [Working with AWS Project and User Settings](settings-aws.md)
+ [Working with Keybindings](settings-keybindings.md)
+ [Working with themes](settings-theme.md)
+ [Managing initialization scripts](settings-init-script.md)
+ [MacOS Default Keybindings Reference](keybindings-default-apple-osx.md)
+ [MacOS Vim Keybindings Reference](keybindings-vim-apple-osx.md)
+ [MacOS Emacs Keybindings Reference](keybindings-emacs-apple-osx.md)
+ [MacOS Sublime Keybindings Reference](keybindings-sublime-apple-osx.md)
+ [Windows / Linux Default Keybindings Reference](keybindings-default-windows-linux.md)
+ [Windows / Linux Vim Keybindings Reference](keybindings-vim-windows-linux.md)
+ [Windows / Linux Emacs Keybindings Reference](keybindings-emacs-windows-linux.md)
+ [Windows / Linux Sublime Keybindings Reference](keybindings-sublime-windows-linux.md)
+ [Commands reference](commands.md)

# Tour of the AWS Cloud9 IDE
<a name="tour-ide"></a>

This topic provides a basic tour of the AWS Cloud9 integrated development environment (IDE). To take full advantage of this tour, follow the steps shown below in sequence.

**Topics**
+ [Prerequisites](#tour-ide-prereqs)
+ [Step 1: Menu bar](#tour-ide-menu-bar)
+ [Step 2: Dashboard](#tour-ide-dashboard)
+ [Step 3: Environment window](#tour-ide-environment)
+ [Step 4: Editor, tabs, and panes](#tour-ide-editor)
+ [Step 5: Console](#tour-ide-console)
+ [Step 6: Open files section](#tour-ide-open-files)
+ [Step 7: Gutter](#tour-ide-gutter)
+ [Step 8: Status bar](#tour-ide-status-bar)
+ [Step 9: Outline window](#tour-ide-outline)
+ [Step 10: Go window](#tour-ide-go)
+ [Step 11: Immediate tab](#tour-ide-immediate)
+ [Step 12: Process list](#tour-ide-process-list)
+ [Step 13: Preferences](#tour-ide-preferences)
+ [Step 14: Terminal](#tour-ide-terminal)
+ [Step 15: Debugger window](#tour-ide-debugger)
+ [Final thoughts](#tour-ide-cleanup)

## Prerequisites
<a name="tour-ide-prereqs"></a>

To go on this tour, you must have an AWS account and an open AWS Cloud9 development environment. To learn how to do these things, you can follow the steps in [Getting started with AWS Cloud9](tutorials-basic.md). Alternatively, you can explore separate related topics such as [Setting up AWS Cloud9](setting-up.md) and [Working with environments in AWS Cloud9](environments.md).

**Warning**  
Having an AWS Cloud9 development environment might result in charges to your AWS account. These include possible charges for Amazon EC2 if you are using an EC2 environment. For more information, see [Amazon EC2 Pricing](https://aws.amazon.com/ec2/pricing/).

## Step 1: Menu bar
<a name="tour-ide-menu-bar"></a>

The *menu bar*, at the top edge of the IDE, contains common commands for working with files and code and changing IDE settings. You can also preview and run code from the menu bar.

![\[The menu bar in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-menu-bar.png)


You can hide the menu bar by choosing the arrow at its edge, as follows.

![\[Hiding the menu bar in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-hide-menu-bar.png)


You can show the menu bar again by choosing the arrow in the middle of where the menu bar was earlier, as follows.

![\[Showing the menu bar again in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-show-menu-bar.png)


Compare your results to the following.

![\[Hiding and showing the menu bar in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-hide-show-menu-bar.gif)


You can use the IDE to work with a set of files in the next several sections in this tutorial. To set up these files, choose **File**, **New File**.

Next, copy the following text into the `Untitled1` editor tab.

```
fish.txt
--------
A fish is any member of a group of organisms that consist of
all gill-bearing aquatic craniate animals that lack limbs with
digits. They form a sister group to the tunicates, together
forming the olfactores. Included in this definition are
lampreys and cartilaginous and bony fish as well as various
extinct related groups.
```

To save the file, choose **File**, **Save**. Name the file `fish.txt`, and then choose **Save**.

Repeat these instructions, saving the second file as `cat.txt`, with the following contents.

```
cat.txt
-------
The domestic cat is a small, typically furry, carnivorous mammal.
They are often called house cats when kept as indoor pets or
simply cats when there is no need to distinguish them from
other felids and felines. Cats are often valued by humans for
companionship and for their ability to hunt.
```

There are often several ways to do things in the IDE. For example, to hide the menu bar, instead of choosing the arrow at its edge, you can choose **View**, **Menu Bar**. To create a new file, instead of choosing **File, New File** you can press `Alt-N` (for Windows/Linux) or `Control-N` (for MacOS). To reduce this tutorial's length, we only describe one way to do things. As you get more comfortable with the IDE, feel free to experiment and figure out the way that works best for you.

## Step 2: Dashboard
<a name="tour-ide-dashboard"></a>

The *dashboard* gives you quick access to each of your environments. From the dashboard, you can create, open, and change the setting for an environment.

To open the dashboard, on the menu bar, choose **AWS Cloud9**, **Go To Your Dashboard**.

![\[Opening the AWS Cloud9 dashboard\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-go-dashboard.png)


To view the settings for your environment, choose the title inside of the **my-demo-environment** card. To go back to the dashboard, use your web browser's back button or the navigation breadcrumb called **Environments**.

To open to the IDE for your environment, choose **Open IDE** inside of the **my-demo-environment** card.

**Note**  
It can take a few moments for the IDE to display again.

## Step 3: Environment window
<a name="tour-ide-environment"></a>

The **Environment** window shows a list of your folders and files in the environment. You can also show different types of files, such as hidden files.

To show or hide the contents of the **Environment** window, choose the **Environment** button.

To show or hide the **Environment** window and the **Environment** button, choose **Window**, **Environment** on the menu bar.

![\[The Environment window in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-environment-window.png)


To show or hide hidden files, in the **Environment** window, choose the gear icon, and then choose **Show Hidden Files**.

![\[Showing hidden files using the Environment window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-show-hidden-files.png)


## Step 4: Editor, tabs, and panes
<a name="tour-ide-editor"></a>

The *editor* is where you can do things such as write code, run a terminal session, and change IDE settings. Each instance of an open file, terminal session, and so on is represented by a *tab*. Tabs can be grouped into *panes*. Tabs are shown at the edge of their pane.

![\[Tabs at the edge of a pane in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-tab-buttons.png)


To show or hide tabs, choose **View**, **Tab Buttons** on the menu bar.

To open a new tab, choose the **\$1** icon at the edge of the row of tabs. Then choose one of the available commands, for example, **New File**, as follows.

![\[New tab with commands to choose, such as New File\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-new-file.png)


To display two panes, choose the icon that looks like a drop-down menu, which is at the edge of the row of tabs. Then choose **Split Pane in Two Rows**, as follows.

![\[Showing two panes by splitting one pane into two rows\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-split-pane-two-rows.png)


To return to a single pane, choose the drop-down menu icon again, and then choose the single square icon, as follows.

![\[Showing a single pane\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-single-pane-view.png)


## Step 5: Console
<a name="tour-ide-console"></a>

The *console* is an alternate place for creating and managing tabs. By default, it contains a Terminal tab, but can also contain other types of tabs.

![\[AWS Cloud9 console\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-console.png)


To show or hide the console, choose **View**, **Console** on the menu bar.

To expand or shrink the console, choose the resize icon, which is at the edge of the console, as follows.

![\[Expanding the size of the console display\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-console-resize.png)


## Step 6: Open files section
<a name="tour-ide-open-files"></a>

The **Open Files** section shows a list of all files that are currently open in the editor. **Open Files** is part of the **Environment** window.

![\[Open Files section in the Environment window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-open-files.png)


To show or hide the **Open Files** section, choose **View**, **Open Files** on the menu bar.

To switch between open files, choose the file of interest from the list.

## Step 7: Gutter
<a name="tour-ide-gutter"></a>

The *gutter*, at the edge of each file in the editor, shows things like line numbers and contextual symbols as you work with files.

![\[Gutter in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-gutter.png)


To show or hide the gutter, choose **View**, **Gutter** on the menu bar.

## Step 8: Status bar
<a name="tour-ide-status-bar"></a>

The *status bar*, at the edge of each file in the editor, shows things like line and character numbers, file type preference, space and tab settings, and related editor settings.

![\[Status bar in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-status-bar.png)


To show or hide the status bar, choose **View**, **Status Bar** on the menu bar.

To go to a specific line number, choose a tab with the file of interest. Then in the status bar, choose the line and character number (it should be something like **7:45**). Type a line number (like `4`), and then press `Enter`, as follows.

![\[Going to specific line numbers using the AWS Cloud9 IDE status bar\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-go-to-line.png)


![\[Going to specific line numbers using the AWS Cloud9 IDE status bar\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-go-to-line.gif)


To change the file type preference, in the status bar, choose a different file type. For example, for **cat.txt**, choose **Ruby** to see the syntax colors change. To go back to plain text colors, choose **Plain Text**, as follows.

![\[Changing file type preference in the AWS Cloud9 IDE status bar\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-text-color.png)


![\[Changing file type preference in the AWS Cloud9 IDE status bar\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-text-color.gif)


## Step 9: Outline window
<a name="tour-ide-outline"></a>

You can use the **Outline** window to quickly go to a specific file location.

To show or hide the **Outline** window and the **Outline** button, choose **Window**, **Outline** on the menu bar.

To see how the **Outline** window works, create a file named `hello.rb`. Copy the following code into the file and save it.

```
def say_hello(i)
  puts "Hello!"
  puts "i is #{i}"
end

def say_goodbye(i)
  puts "i is now #{i}"
  puts "Goodbye!"
end

i = 1
say_hello(i)
i += 1
say_goodbye(i)
```

To show or hide the contents of the **Outline** window, choose the **Outline** button.

In the **Outline** window, choose **say\$1hello(i)**, and then choose **say\$1goodbye(i)**, as follows.

![\[Outline window in AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-outline.png)


![\[Outline window in AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-outline.gif)


## Step 10: Go window
<a name="tour-ide-go"></a>

You can use the **Go** window to open a file in the editor, go to a symbol's definition, run a command, or go to a line in the active file in the editor.

![\[Go window.\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-go-window-first.png)


To show the contents of the **Go** window, choose the **Go** button (the magnifying glass icon).

To show or hide the **Go** window and the **Go** button, choose **Window**, **Go** on the menu bar.

With the **Go** window open, you can:
+ Type a forward slash (`/`) followed by part or all of a file name. In the list of matching files that displays, choose a file to open it in the editor. For example, typing `/fish` lists `fish.txt`, while typing `/.txt` lists both `fish.txt` and `cat.txt`.
**Note**  
File search is scoped only to non-hidden files and non-hidden folders in the **Environment** window.
+ Type an at symbol (`@`) followed by the name of a symbol. In the list of matching symbols that displays, choose a symbol to go to it in the editor. For example, with the `hello.rb` file open and active in the editor, type `@hello` to list `say_hello(i)`, or type `@say` to list both `say_hello(i)` and `say_goodbye(i)`.
**Note**  
If the active file in the editor is part of a supported language project, symbol search is scoped to the current project. Otherwise, symbol search is scoped only to the active file in the editor. For more information, see [Enhanced TypeScript support and features](projects.md).
+ Type a dot (`.`) followed by the name of a command. In the list of commands that displays, choose a command to run it. For example, typing `.closetab` and then pressing `Enter` closes the current tab in the editor. For a list of available commands, see the [Commands reference for the AWS Cloud9 IDE](commands.md).
+ Type a colon (`:`) followed by a number to go to that line number in the active file in the editor. For example, with the `hello.rb` file open and active in the editor, type `:11` to go to line 11 in that file.

![\[Go window in AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-go-window.png)


To see the keybindings for each of these actions based on the current keyboard mode and operating system, see each of the available **Go To** commands on the **Go** menu in the menu bar.

## Step 11: Immediate tab
<a name="tour-ide-immediate"></a>

The **Immediate** tab enables you to test small snippets of JavaScript code. To see how the **Immediate** tab works, do the following.

1. Open an **Immediate** tab by choosing **Window**, **New Immediate Window** on the menu bar.

1. Run some code in the **Immediate** tab. To try this, type the following code into the window, pressing `Shift-Enter` after typing line 1 and again after line 2. Press `Enter` after line 3. (If you press `Enter` instead of `Shift-Enter` after you type line 1 or line 2, the code will run earlier than you want it to.)

   ```
   for (i = 0; i <= 10; i++) { // Press Shift-Enter after typing this line.
     console.log(i)            // Press Shift-Enter after typing this line.
   }                           // Press Enter after typing this line. The numbers 0 to 10 will be printed.
   ```  
![\[Running code in the Immediate tab\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-immediate.png)

## Step 12: Process list
<a name="tour-ide-process-list"></a>

The **Process List** shows all of the running processes. You can stop or even forcibly stop processes that you don't want to run anymore. To see how the **Process List** window works, do the following.

1. Show the **Process List** by choosing **Tools**, **Process List** on the menu bar.

1. Find a process. In the **Process List**, type the name of the process.

1. Stop or forcibly stop a process. In the list of processes, choose the process, and then choose **Kill** or **Force Kill**.

![\[Process list in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-process-list.png)


## Step 13: Preferences
<a name="tour-ide-preferences"></a>

 *Preferences* include the following settings.
+ Settings for the current environment only, such as whether to use soft tabs in the editor, the file types to ignore, and code completion behaviors for languages such as PHP and Python.
+ Your user settings across each of your environments, such as colors, fonts, and editor behaviors.
+ Your keybindings, such as which shortcut key combinations you prefer to use to work with files and the editor.
+ The IDE's overall theme.

To show preferences, choose **AWS Cloud9**, **Preferences** on the menu bar. Something like the following is displayed.

![\[Showing preferences in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-preferences.png)


## Step 14: Terminal
<a name="tour-ide-terminal"></a>

You can run one or more *terminal* sessions in the IDE. To start a terminal session, choose **Window**, **New Terminal** on the menu bar. Or, choose the "plus" icon next to the Console tabs and choose **New Terminal**.

You can try running a command in the terminal. For example, in the terminal, type `echo $PATH` and then press `Enter` to print the value of the `PATH` environment variable.

You can also try running additional commands. For example, try commands such as the following.
+  ** `pwd` ** to print the path to the current directory.
+  ** `aws --version` ** to print version information about the AWS CLI.
+  ** `ls -l` ** to print information about the current directory.

![\[Using the terminal in the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-terminal.gif)


## Step 15: Debugger window
<a name="tour-ide-debugger"></a>

You can use the **Debugger** window to debug your code. For example, you can step through running code a portion at a time, watch the values of variables over time, and explore the call stack.

**Note**  
This procedure is similar to [Step 2: Basic tour of the IDE](tutorials-basic.md#tutorial-tour-ide) from either of the [basic IDE tutorials](tutorials-basic.md).

To show or hide the **Debugger** window and the **Debugger** button, choose **Window**, **Debugger** on the menu bar.

For this tutorial, you can experiment with the **Debugger** window and some JavaScript code by doing the following.

1. Check the Node.js installation in your environment by running the following command in a terminal session: **`node --version`**. If Node.js is installed, the Node.js version number is shown in the output, and you can skip ahead to step 3 in this procedure ("Write some JavaScript code...").

1. If you need to install Node.js, do the following.

   1. Run the following two commands, one at a time, to be sure your environment has the latest updates and then download Node Version Manager (nvm). (nvm is a simple Bash shell script that is useful for installing and managing Node.js versions. For more information, see [Node Version Manager](https://github.com/creationix/nvm/blob/master/README.md) on GitHub.)

      For Amazon Linux:

      ```
      sudo yum -y update
      curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
      ```

      For Ubuntu Server:

      ```
      sudo apt update
      curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
      ```

   1. Use a text editor to update your shell profile file (for example, `~/.bashrc`) to enable nvm to load. For example, in the **Environment** window of the IDE, choose the gear icon, and then choose **Show Home in Favorites**. Repeat this step and choose **Show Hidden Files** as well.

   1. Open the `~/.bashrc` file.

   1. Type or paste the following code at the end of the file to enable nvm to load.

      For Amazon Linux:

      ```
      export NVM_DIR="/home/ec2-user/.nvm"
      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm.
      ```

      For Ubuntu Server:

      ```
      export NVM_DIR="/home/ubuntu/.nvm"
      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm.
      ```

   1. Save the file.

   1. Close that terminal session and start a new one. Then run the following command to install the latest version of Node.js.

      ```
      nvm install node
      ```

1. Write some JavaScript code to debug. For example, create a file, add the following code to the file, and save it as `hello.js`.

   ```
   var i;
   
   i = 10;
   
   console.log("Hello!");
   console.log("i is " + i);
   
   i += 1;
   
   console.log("i is now " + i);
   console.log("Goodbye!");
   ```

1. Add some breakpoints to the code. For example, in the gutter, choose the margin next to lines 6 and 10. A red circle is displayed next to each of these line numbers, as follows.  
![\[Adding breakpoints to code in the Debugger window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-breakpoints.png)

1. Now you're ready to debug the JavaScript code. To try this, do the following.

   1. To show or hide the contents of the **Debugger** window, choose the **Debugger** button, as shown in the next step.

   1. Watch the value of the variable named `i` while the code is running. In the **Debugger** window, for **Watch Expressions**, choose **Type an expression here**. Type the letter `i`, and then press `Enter`, as follows.  
![\[Debugger window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-watch-expression.png)

   1. Begin running the code. Choose **Run**, **Run With**, **Node.js**, as follows.  
![\[Debugger window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-run-with.png)

   1. The code pauses running on line 6. The **Debugger** window shows the value of `i` in **Watch Expressions**, which is currently `10`.  
![\[Debugger window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-breakpoint-hit.png)

   1. In the **Debugger** window, choose **Resume**, which is the blue arrow icon, as follows.  
![\[Resuming debugging in the Debugger window\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-resume.png)

   1. The code pauses running on line 10. The **Debugger** window now shows the new value of `i`, which is currently `11`.

   1. Choose **Resume** again. The code runs to the end. The output is printed to the console's **hello.js** tab, as follows.  
![\[hello.js tab with debug output\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-debugger-output.png)

Compare your results to the following.

![\[Using the debugger\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-debugger.gif)


## Final thoughts
<a name="tour-ide-cleanup"></a>

**Warning**  
Remember that having an AWS Cloud9 development environment might result in charges to your AWS account. These include possible charges for Amazon EC2 if you are using an EC2 environment. For more information, see [Amazon EC2 Pricing](https://aws.amazon.com/ec2/pricing/).  
There are additional topics in the parent section (*[Working with the IDE](ide.md)*) that you might want to explore. However, when you are finished touring the AWS Cloud9 IDE and no longer need the environment, be sure to delete it and its associated resources, as described in [Deleting an Environment](delete-environment.md).

# Language support in the AWS Cloud9 IDE
<a name="language-support"></a>

The AWS Cloud9 IDE supports many programming languages. The following table lists the languages that are supported and to what level.


****  

| Language | Syntax highlighting 1  | Run UI 2  | Outline view | Code hints and linting | Code completion | Debugging 3  | 
| --- | --- | --- | --- | --- | --- | --- | 
|  C\$1\$1  |  ✓  |  ✓  |  ✓  |  |  ✓ 5   |  ✓ 4   | 
|  C\$1  |  ✓  |  |  ✓  |  |  ✓ 5   |  | 
|  CoffeeScript  |  ✓  |  ✓  |  |  |  |  | 
|  CSS  |  ✓  |  |  |  |  ✓  |  | 
|  Dart  |  ✓  |  |  |  |  |  | 
|  Go  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓ 4   |  ✓ 4   | 
|  Haskell  |  ✓  |  |  |  |  |  | 
|  HTML  |  ✓  |  ✓  |  ✓  |  |  ✓  |  | 
|  Java6  |  ✓  | ✓ |  ✓  | ✓ |  ✓   | ✓ | 
|  JavaScript  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓  |  | 
|  Node.js  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓   | 
|  PHP  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓ 7   |  ✓  | 
|  Python  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓ 8   |  ✓  | 
|  Ruby  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓ 5   |  | 
|  Shell script  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓ 5   |  | 
|  TypeScript9  |  ✓  |  ✓  |  ✓  |  ✓  |  ✓   |  | 

 **Notes** 

 1 The AWS Cloud9 IDE provides syntax highlighting for many more languages. For a complete list, in the menu bar of the IDE, choose **View, Syntax**.

 2 You can run programs or scripts at the click of a button for languages marked with a **✓**, without using the command line. For languages not marked with a **✓** or not displayed on the **Run, Run With** menu bar in the IDE, you can create a runner for that language. For instructions, see [Create a Builder or Runner](build-run-debug.md#build-run-debug-create-builder-runner).

 3 You can use the IDE's built-in tools to debug programs or scripts for languages marked with a **✓**. For instructions, see [Debug Your Code](build-run-debug.md#build-run-debug-debug).

 4 This feature is in an experimental state for this language. It is not fully implemented and is not documented or supported.

 5 This feature supports only local functions for this language.

 6 Enhanced support for *Java SE 11* features can be activated in AWS Cloud9 EC2 development environments with 2 GiB or more of memory. For more information, see [Enhanced support for Java development](enhanced-java.md).

 7 To specify paths for AWS Cloud9 to use for completion of custom PHP code, in the AWS Cloud9 IDE turn on the **Project, PHP Support, Enable PHP code completion** setting in **Preferences**, and then add the paths to the custom code to the **Project, PHP Support, PHP Completion Include Paths** setting.

 8 To specify paths for AWS Cloud9 to use for completion of custom Python code, in the AWS Cloud9 IDE turn on the **Project, Python Support, Enable Python code completion** setting in **Preferences**, and then add the paths to the custom code to the **Project, Python Support, PYTHONPATH** setting.

 9 The AWS Cloud9 IDE provides additional support for some programming languages, such as TypeScript (version 3.7.5 supported in the AWS Cloud9 IDE), within the context of a language project. For more information, see [Working with Language Projects](projects.md).

## Supported programming language versions in the AWS Cloud9 Integrated Development Environment (IDE)
<a name="programming-language-support"></a>

The table below outlines which versions of programming languages are supported on specific AMIs in the AWS Cloud9 IDE. Ubuntu 18 went EOL in 2023 and as a result the programming language versions cannot be updated in AWS Cloud9.


****  

| *Language* | *Amazon Linux 2023*  | *Amazon Linux 2*  | *Ubuntu 18* | *Ubuntu 22* | 
| --- | --- | --- | --- | --- | 
|  Python3  |  3.9  |  3.8  |  3.6  |  3.10  | 
|  TypeScript  |  3.7.5  |  3.7.5  |  3.7.5  |  3.7.5  | 
|  PHP  |  8.2  |  8.2  |  7.2  |  8.1  | 
|  Ruby  |  3.2  |  3.0  |  3.0  |  3.2  | 
|  Java  |  11, 17  |  11  |  11  |  11, 17  | 
|  Python2  |  N/A  |  2.7  |  N/A  |  N/A  | 
|  C\$1\$1\$1  |  23  | 17 |  17  |  23  | 
|  Go  |  1.20  |  1.20  |  1.9  |  1.21  | 
| CoffeeScript |  2.7  |  2.7  |  2.7  |  2.7  | 

\$1You can run the following command to compile C\$1\$1 files using the version of the programming language you want to use: 

```
g++ -std=c++[version-number] "$file" -o "$file.o"
```

# Enhanced language support in the AWS Cloud9 IDE
<a name="enhanced-lang-support"></a>

AWS Cloud9 provides enhanced support to improve your development experience when coding with the following languages:
+ **Java**: Extensions allow provide features such as code completion, linting for errors, context-specific actions, and debugging options.
+ **Typescript**: *Language projects* offer access to enhanced productivity features for TypeScript.

**Topics**
+ [Enhanced Java support](enhanced-java.md)
+ [Enhanced TypeScript support](projects.md)

# Enhanced support for Java development
<a name="enhanced-java"></a>

AWS Cloud9 provides enhanced language support to improve your development experience when working with Java. Key productivity features include code completion, linting for errors, code lenses, and debugging options such as breakpoints and stepping.

**Important**  
Enhanced productivity features are available only for AWS Cloud9 development environments that are connected to Amazon EC2 instances.   
Moreover, to ensure an optimal IDE experience when using enhanced language support for Java, the Amazon EC2 compute instance that backs your AWS Cloud9 environment requires **2 GiB** or more of memory. If AWS Cloud9 detects that your EC2 compute instance doesn't have sufficient RAM, you're not offered the option to activate enhanced features for Java. 

## Activating and customizing enhanced Java support
<a name="activating-java-support"></a>

The option to activate enhanced support for Java is automatically displayed if the following conditions are met:
+ Your AWS Cloud9 environment is connected to an Amazon EC2 instance with 2 GiB or more of memory.
+ You're working with a file associated with Java development. AWS Cloud9 checks the following file names and extensions: `*.java`, `*.gradle` (associated with the Gradle build tool), and `pom.xml` (associated with the Apache Maven build tool).
+ You're working in an AWS Cloud9 environment that was created after **December 11, 2020**. At present, it's not possible to use Java productivity features in development environments that were created before this date.

If these conditions are met, a dialog box displays to ask you whether you want to activate the extra productivity features for coding and debugging Java. If you choose **Activate**, you can start using the features in the IDE.

![\[Code completion with\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/working_with_java_rework.png)


**Note**  
Amazon EC2 instances which are launched when you create an AWS Cloud9 environment have *Amazon Coretto 11* already installed. Amazon Coretto is no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK). This means you can start developing and running Java applications in AWS Cloud9 out-of-the-box.

You can also manually activate and deactivate enhanced language and debugging support using the AWS Cloud9 interface. Choose **Preferences**, **Java Support**, **Enhanced Java Support**.

![\[Manually activating and deactivating enhanced Java support\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/activate_java_extensions_update.png)


The enhanced support for Java development in AWS Cloud9 is provided by two extensions to the IDE: 
+ Language Support for Java(TM) by Red Hat
+ Debugger for Java

The AWS Cloud9 interface gives you access to wide range of settings that customize these extensions' performance. To change extension settings, choose **Preferences**, **Java Support**.

For detailed information on these settings, see the installed versions' ReadMe pages in the extensions' GitHub repositories:
+ [Language Support for Java(TM) by Red Hat](https://github.com/redhat-developer/vscode-java/tree/v1.8.0)
+ [Debugger for Java](https://github.com/microsoft/vscode-java-debug/tree/0.40.1)

## Feature highlights
<a name="key-java-features"></a>

After you've activated enhanced Java support, you can use a range of productivity-boosting features.

** Code completion**

With code completion, the editor makes context-aware suggestions based on the code you're typing. For example, if you type the dot (".") operator after an object name, the editor displays the methods or properties available for that object. 

![\[Code completion with\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/code-complete-java.png)


**Code lenses**

Code lens allow you to access context-specific actions directly in the source code. For Java development, code lenses facilitate unit testing by allowing you to run and debug specific methods. 

![\[Accessing code lenses\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/context-specific-actions.png)


**Code linting**

Code linting describes how the editor highlights potential errors in your code before you've even built it. For example, the linting tool call out if you're trying to use an uninitialized variable or trying to assign a value to a variable that's expecting a different type. 

![\[Linting highlight errors before you build your code\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/linting.png)


**Debugging options**

You can implement breakpoints and watch expressions. Set your breakpoints in the source code and display the debugger pane to define relevant conditions. 

![\[Debugging options\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/debugging_options.png)


**Debugging using configuration files**

You can also control your debugging configuration by using launch configurations and tasks which AWS Cloud9 supports via the `launch.json` and `tasks.json` configuration files. For examples of launch configurations and how they can be used, see [Java debug configuration.](https://github.com/microsoft/vscode-java-debug/blob/main/Configuration.md)

**Java commands**

You can run commands from the AWS Cloud9 command panel by pressing **Ctrl\$1.** or **F1**. Then filter the relevant commands by entering "java".

![\[Listing available Java commands\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/java_commands.png)


**Quick fixes**

With quick fixes, you can resolve errors caused by using undeclared variables or undefined methods by creating stubs for the missing elements. 

![\[Implementing a quick fix\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/quick_fix_java.png)


**Refactoring**

Refactoring allows you to restructure your code without changing its behavior. To access options such as organizing imports or creating constructors, open the context (right-click) menu for the item and choose **Refactoring**.

![\[Refactoring feature\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/refactoring_java.png)


**Renaming**

Renaming is a refactoring feature that allows you to easily modify the names of selected variables, functions, and classes everywhere that they appear in the code with a single action. To change a name, open the context (right-click) menu for the item and choose **Rename**. Renaming affects every instance of the name in your code. 

![\[Renaming a class name\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/renaming_refactoring_java.png)


## Optional tools for Java development
<a name="optional-tools"></a>

The extensions that provide enhanced Java support include features that allow you to integrate the Gradle and Maven automation tools into your project development. These tools aren't pre-installed in your AWS Cloud9 development environment. For more information on installing and using these optional build tools, see the following resources:
+ **Gradle**: [Getting started guide](https://docs.gradle.org/current/userguide/userguide.html)
+ **Maven**: [Maven in 5 minutes](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)

## Problems tab for Java extension
<a name="problems-panel"></a>

You can view and troubleshoot issues with your java project within your AWS Cloud9 environment in the Problems tab of the AWS Cloud9 IDE. To display the Problems tab from the AWS Cloud9 IDE, select **View** and choose **Problems** from the menu bar.

![\[Opening the problems tab\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/problems-panel.png)


You can also open the Problems tab by selecting the **\$1** icon within the console and choosing **Open Problems**. When you select a problem from the tab, it opens the affected file and displays the issue details.

# Enhanced TypeScript support and features
<a name="projects"></a>

The AWS Cloud9 IDE allows you to use *language projects* to access enhanced productivity features for TypeScript. A language project is a collection of related files, folders, and settings in the IDE for an AWS Cloud9 development environment.

To use the IDE to create a language project in your environment, see [Create a Language Project](#projects-create).

## Available project productivity features
<a name="projects-features"></a>

The AWS Cloud9 IDE provides the following project productivity features for TypeScript.

### Autocomplete
<a name="projects-features-autocomplete"></a>

As you type in a file in the editor, a list of symbols is displayed at the insertion point for that context, if any symbols are available there.

To insert a symbol from the list at the insertion point, if the symbol isn't already chosen, choose it by using your up arrow or down arrow key, and then press `Tab`.

Before you press `Tab`, you might see a screentip that contains information about the symbol you chose, if information is available.

To close the list without inserting a symbol, press `Esc`.

### Gutter Icons
<a name="projects-features-gutter-icons"></a>

Icons might appear in the gutter for the active file. These icons highlight possible issues such as warnings and errors in code before you run it.

For more information about an issue, pause your pointer on the issue's icon.

### Quick Fixes
<a name="projects-features-quick-fixes"></a>

In the active file in the editor, you can display information about coding errors and warnings, with possible fixes that you can automatically apply to that code. To display error or warning information and possible fixes, choose any part of the code that has a red dotted underline (for errors), or a gray dotted underline (for warnings). Or, with the cursor resting on code that has a red or gray dotted underline, press `Option-Enter` (for macOS), or `Alt-Enter` (for Linux or Windows). To apply a proposed fix, choose the fix in the list, or use the arrow keys to select the fix and then press `Enter`. To turn choosing quick fixes with mouse clicks on or off, choose **AWS Cloud9**, **Preferences**, **User Settings**, **Language**, **Hints & Warnings**, **Show Available Quick Fixes on Click**.

### Find References
<a name="projects-features-find-refs"></a>

In the active file in the editor, you can display all references to the symbol at the insertion point, if the IDE has access to those references.

To do this, at the insertion point anywhere within the symbol, run the ** `Find References` ** command. For example:
+ Right-click at the insertion point, and then choose **Find References**.
+ On the menu bar, choose **Go, Find References**.
+ Press `Shift-F3` by default for macOS, Windows, or Linux.

If references are available, a pane opens on top of the active file, next to that symbol. The pane contains a list of the files where the symbol is referenced. The pane displays the first reference in the list. To display a different reference, choose that reference in the list.

To close the pane, choose the close (**X**) icon in the pane, or press `Esc`.

The ** `Find References` ** command might be disabled, or might not work as expected, under the following conditions:
+ There are no references to that symbol in the active file's project.
+ The IDE can't find some or all of that symbol's references in the active file's project.
+ The IDE doesn't have access to one or more locations where that symbol is referenced in the active file's project.

### Go to Definition
<a name="projects-features-go-to-def"></a>

In the active file in the editor, you can go from a symbol to where that symbol is defined, if the IDE has access to that definition.

To do this, at the insertion point anywhere within the symbol, run the ** `Jump to Definition` ** command. For example:
+ Right-click at the insertion point, and then choose **Jump to Definition**.
+ On the menu bar, choose **Go, Jump to Definition**.
+ Press `F3` by default for macOS, Windows, or Linux.

If the definition is available, the insertion point switches to that definition, even if that definition is in a separate file.

The ** `Jump to Definition` ** command might be disabled, or might not work as expected, under the following conditions:
+ The symbol is a primitive symbol for that language.
+ The IDE can't find the definition's location in the active file's project.
+ The IDE doesn't have access to the definition's location in the active file's project.

### Go to Symbol
<a name="projects-features-go-to-symbol"></a>

You can go to a specific symbol within a project, as follows.

1. Make one of the files in the project active by opening it in the editor. If the file is already open, choose its tab in the editor to make that file the active one.

1. Run the ** `Go to Symbol` ** command. For example:
   + Choose the **Go** window button (magnifying glass icon). In the **Go to Anything** box, type `@`, and then start typing the symbol.
   + On the menu bar, choose **Go, Go To Symbol**. In the **Go** window, start typing the symbol after **@**.
   + Press `Command-2` or `Command-Shift-O` by default for macOS, or `Ctrl-Shift-O` by default for Windows or Linux. In the **Go** window, start typing the symbol after **@**.

   For example, to find all symbols in the project named `toString`, start typing `@toString` (or start typing `toString` after **@**, if **@** is already displayed).

1. If you see the symbol you want in the **Symbols** list, choose it by clicking it. Or use your up arrow or down arrow key to select it, and then press `Enter`. The insertion point then switches to that symbol.

If the symbol that you want to go to isn't in the active file's project, this procedure might not work as expected.

## Create a Language Project
<a name="projects-create"></a>

Use the following procedure to create a language project that will work with supported project productivity features in the AWS Cloud9 IDE.

**Note**  
We recommend that you use supported project productivity features on files that are part of a language project. Although you can use some supported project productivity features on a file that isn't part of a project, those features might behave with unexpected results.  
For example, you might use the IDE to search for references and definitions from within a file at the root level of an environment that isn't part of a project. The IDE might then search only across files at that same root level. This might result in no references or definitions found, even though those references or definitions actually exist in language projects elsewhere across the same environment.

### Create a TypeScript Language Project
<a name="projects-create-typescript"></a>

1. Ensure you have TypeScript installed in the environment. For more information, see [Step 1: Install required tools](sample-typescript.md#sample-typescript-install) in the [TypeScript tutorial for AWS Cloud9](sample-typescript.md).

1. From a terminal session in the IDE for the environment, switch to the directory where you want to create the project. If the directory doesn't exist, create it and then switch to it. For example, the following commands create a directory named `my-demo-project` at the root of the environment (in `~/environment`), and then switch to that directory.

   ```
   mkdir ~/environment/my-demo-project
   cd ~/environment/my-demo-project
   ```

1. At the root of the directory where you want to create the project, run the TypeScript compiler with the ** `--init` ** option.

   ```
   tsc --init
   ```

   If this command is successful, the TypeScript compiler creates a `tsconfig.json` file in the root of the directory for the project. You can use this file to define various project settings, such as TypeScript compiler options and specific files to include or exclude from the project.

   For more information about the `tsconfig.json` file, see the following:
   +  [tsconfig.json Overview](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) on the TypeScript website.
   +  [tsconfig.json Schema](http://json.schemastore.org/tsconfig) on the json.schemastore.org website.

# Menu bar commands reference for the AWS Cloud9 IDE
<a name="menu-commands"></a>

The following lists describe the default menu bar commands in the AWS Cloud9 IDE. If the menu bar isn't visible, choose the thin bar along the top edge of the IDE to show it.
+  [AWS Cloud9 menu](#menu-commands-cloud9) 
+  [File menu](#menu-commands-file) 
+  [Edit menu](#menu-commands-edit) 
+  [Find menu](#menu-commands-find) 
+  [View menu](#menu-commands-view) 
+  [Go menu](#menu-commands-goto) 
+  [Run menu](#menu-commands-run) 
+  [Tools menu](#menu-commands-tools) 
+  [Window menu](#menu-commands-window) 
+  [Support menu](#menu-commands-support) 
+  [Preview menu](#menu-commands-preview) 
+  [Other menu bar commands](#menu-commands-other) 

## AWS Cloud9 menu
<a name="menu-commands-cloud9"></a>


| Command | Description | 
| --- | --- | 
|   **Preferences**   |  Do one of the following: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/menu-commands.html) See [Working with Project Settings](settings-project.md), [Working with User Settings](settings-user.md), [Working with Keybindings](settings-keybindings.md), [Working with Themes](settings-theme.md), and [Working with Initialization Scripts](settings-init-script.md).  | 
|   **Go To Your Dashboard**   |  Open the AWS Cloud9 console in a separate web browser tab. See [Creating an Environment](create-environment.md), [Opening an Environment](open-environment.md), [Changing Environment Settings](change-environment.md), and [Deleting an Environment](delete-environment.md).  | 
|   **Welcome Page**   |  Open the **Welcome** tab.  | 
|   **Open Your Project Settings**   |  Open the `project.settings` file for the current environment. See [Working with Project Settings](settings-project.md).  | 
|   **Open Your User Settings**   |  Open the `user.settings` file for the current user. See [Working with User Settings](settings-user.md).  | 
|   **Open Your Keymap**   |  Open the `keybindings.settings` file for the current user. See [Working with Keybindings](settings-keybindings.md).  | 
|   **Open Your Init Script**   |  Open the `init.js` file for the current user. See [Working with Initialization Scripts](settings-init-script.md).  | 
|   **Open Your Stylesheet**   |  Open the `styles.css` file for the current user. See [Working with Themes](settings-theme.md).  | 

## File menu
<a name="menu-commands-file"></a>


****  

| Command | Description | 
| --- | --- | 
|   **New File**   |  Create a new file.  | 
|   **New From Template**   |  Create a new file, based on the chosen file template.  | 
|   **Open**   |  Show and go to the **Navigate** window.  | 
|   **Open Recent**   |  Open the chosen file.  | 
|   **Save**   |  Save the current file.  | 
|   **Save As**   |  Save the current file with a different file name, location, or both.  | 
|   **Save All**   |  Save all unsaved files.  | 
|   **Revert to Saved**   |  Discard changes for current file since it was last saved.  | 
|   **Revert All to Saved**   |  Discard changes for all unsaved files since they were last saved.  | 
|   **Show File Revision History**   |  View and manage changes to the current file in the editor. See [Working with File Revisions](file-revisions.md).  | 
|   **Upload Local Files**   |  Show the **Upload Files** dialog box, which enables you to drag files from your local computer into the environment.  | 
|   **Download Project**   |  Combine the files in the environment into a .zip file, which you can download to your local computer.  | 
|   **Line Endings**   |  Use **Windows** (carriage return plus line feed) or **Unix** (line feed only) line endings.  | 
|   **Close File**   |  Close the current file.  | 
|   **Close All Files**   |  Close all open files.  | 

## Edit menu
<a name="menu-commands-edit"></a>


| Command | Description | 
| --- | --- | 
|   **Undo**   |  Undo the last action.  | 
|   **Redo**   |  Redo the last undone action.  | 
|   **Cut**   |  Move the selection to the clipboard.  | 
|   **Copy**   |  Copy the selection to the clipboard.  | 
|   **Paste**   |  Copy the clipboard's contents to the selection point.  | 
|   **Keyboard Mode**   |  The set of keybindings to use, such as `Default`, `Vim`, `Emacs`, or `Sublime`. See [Working with Keybindings](settings-keybindings.md).  | 
|   **Selection, Select All**   |  Select all selectable content.  | 
|   **Selection, Split Into Lines**   |  Add a cursor at the end of the current line.  | 
|   **Selection, Single Selection**   |  Clear all previous selections.  | 
|   **Selection, Multiple Selections, Add Cursor Up**   |  Add a cursor one line above the active cursor. If a cursor is already added, add another cursor above that one.  | 
|   **Selection, Multiple Selections, Add Cursor Down**   |  Add a cursor one line below the active cursor. If a cursor is already added, add another cursor below that one.  | 
|   **Selection, Multiple Selections, Move Active Cursor Up**   |  Add a second cursor one line above the active cursor. If a second cursor is already added, move the second cursor up one line.  | 
|   **Selection, Multiple Selections, Move Active Cursor Down**   |  Add a second cursor one line below the active cursor. If a second cursor is already added, move the second cursor down one line.  | 
|   **Selection, Multiple Selections, Add Next Selection Match**   |  Include more matching selections that are after the selection.  | 
|   **Selection, Multiple Selections, Add Previous Selection Match**   |  Include more matching selections that are before the selection.  | 
|   **Selection, Multiple Selections, Merge Selection Range**   |  Add a cursor at the end of the current line.  | 
|   **Selection, Select Word Right**   |  Include the next word to the right of the cursor in the selection.  | 
|   **Selection, Select Word Left**   |  Include the next word to the left of the cursor in the selection.  | 
|   **Selection, Select to Line End**   |  Include from the cursor to the end of the current line in the selection  | 
|   **Selection, Select to Line Start**   |  Include from the beginning of the current line to the cursor in the selection.  | 
|   **Selection, Select to Document End**   |  Include from the cursor down to the end of the current file in the selection.  | 
|   **Selection, Select to Document Start**   |  Include from the cursor up to the beginning of the current file in the selection.  | 
|   **Line, Indent**   |  Indent the selection one tab.  | 
|   **Line, Outdent**   |  Outdent the selection one tab.  | 
|   **Line, Move Line Up**   |  Move the selection up one line.  | 
|   **Line, Move Line Down**   |  Move the selection down one line.  | 
|   **Line, Copy Lines Up**   |  Copy the contents of the line, and paste the copied contents one line up.  | 
|   **Line, Copy Lines Down**   |  Copy the contents of the line, and paste the copied contents one line down.  | 
|   **Line, Remove Line**   |  Delete the contents of the current line.  | 
|   **Line, Remove to Line End**   |  Delete from the cursor to the end of the current line.  | 
|   **Line, Remove to Line Start**   |  Delete from the beginning of the current line up to the cursor.  | 
|   **Line, Split Line**   |  Move the contents of the cursor to the end of the line, to its own line.  | 
|   **Text, Remove Word Right**   |  Delete the word to the right of the cursor.  | 
|   **Text, Remove Word Left**   |  Delete the word to the left of the cursor.  | 
|   **Text, Align**   |  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned.  | 
|   **Text, Transpose Letters**   |  Transpose the selection.  | 
|   **Text, To Upper Case**   |  Change the selection to all uppercase.  | 
|   **Text, To Lower Case**   |  Change the selection to all lowercase.  | 
|   **Comment, Toggle Comment**   |  Add line comment characters at the start of each selected line, or remove them if they are there.  | 
|   **Code Folding, Toggle Fold**   |  Fold code, or remove code folding if it is there.  | 
|   **Code Folding, Unfold**   |  Unfold the selected code.  | 
|   **Code Folding, Fold Other**   |  Fold all possibly foldable elements, except for the current selection scope.  | 
|   **Code Folding, Fold All**   |  Fold all possibly foldable elements.  | 
|   **Code Folding, Unfold All**   |  Unfold code folding for the entire file.  | 
|   **Code Formatting, Apply Code Formatting**   |  Reformat the selected JavaScript code.  | 
|   **Code Formatting, Open Language & Formatting Preferences**   |  Open the **Project Settings** section of the **Preferences** tab to programming language settings.  | 

## Find menu
<a name="menu-commands-find"></a>

For more information, see [Finding and Replacing Text](find-replace-text.md).


| Command | Description | 
| --- | --- | 
|   **Find**   |  Show the find and replace bar for the current document, with focus on the **Find** expression.  | 
|   **Find Next**   |  Go to the next match in the current document for the find query you entered last.  | 
|   **Find Previous**   |  Go to the previous match in the current document for the find query you entered last.  | 
|   **Replace**   |  Show the find and replace bar for the current document, with focus on the **Replace With** expression.  | 
|   **Replace Next**   |  Replace the next match for **Find** with **Replace With** in the find and replace bar for the current document .  | 
|   **Replace Previous**   |  Replace the previous match for **Find** with **Replace With** in the find and replace bar for the current document.  | 
|   **Replace All**   |  Replace all matches for **Find** with **Replace With** in the find and replace bar for the current document.  | 
|   **Find in Files**   |  Show the find and replace bar for multiple files.  | 

## View menu
<a name="menu-commands-view"></a>


| Command | Description | 
| --- | --- | 
|   **Editors**   |  Show the chosen editor.  | 
|   **Open Files**   |  Show the **Open Files** list in the **Environment** window, or hide if shown.  | 
|   **Problems**   |  Show any problems in the Java projects for the environment in the **Problems** panel in the terminal. You can select the problem to open the target file.  | 
|   **Menu Bar**   |  Show the menu bar, or hide if shown.  | 
|   **Tab Buttons**   |  Show tabs, or hide if shown.  | 
|   **Gutter**   |  Show the gutter, or hide if shown.  | 
|   **Status Bar**   |  Show the status bar, or hide if shown.  | 
|   **Console**   |  Show the **Console** window, or hide if shown.  | 
|   **Layout, Single**   |  Show a single pane.  | 
|   **Layout, Vertical Split**   |  Show two panes, top and bottom.  | 
|   **Layout, Horizontal Split**   |  Show two panes, side by side.  | 
|   **Layout, Cross Split**   |  Show four panes of equal size.  | 
|   **Layout, Split 1:2**   |  Show one pane on the left and two panes on the right.  | 
|   **Layout, Split 2:1**   |  Show two panes on the left and one pane on the right.  | 
|   **Font Size, Increase Font Size**   |  Increase the font size.  | 
|   **Font Size, Decrease Font Size**   |  Decrease the font size.  | 
|   **Syntax**   |  Show the syntax type for the current document.  | 
|   **Themes**   |  Show the IDE theme type.  | 
|   **Wrap Lines**   |  Wrap words to the edge of the current pane, or stop wrapping words if they are already wrapping.  | 
|   **Wrap To Print Margin**   |  Wrap words to the edge of the current print margin, or stop wrapping words if they are already wrapping.  | 

## Go menu
<a name="menu-commands-goto"></a>


| Command | Description | 
| --- | --- | 
|   **Go To Anything**   |  Show the **Go** window in **Go to Anything** mode.  | 
|   **Go To Symbol**   |  Show the **Go** window in **Go to Symbol** mode.  | 
|   **Go To File**   |  Show the **Go** window in **Go to File** mode.  | 
|   **Go To Command**   |  Show the **Go** window in **Go to Command** mode.  | 
|   **Go To Line**   |  Show the **Go** window in **Go to Line** mode.  | 
|   **Next Error**   |  Go to the next error.  | 
|   **Previous Error**   |  Go to the previous error.  | 
|   **Word Right**   |  Go one word to the right.  | 
|   **Word Left**   |  Go one word to the left.  | 
|   **Line End**   |  Go to the end of the current line.  | 
|   **Line Start**   |  Go to the start of the current line.  | 
|   **Jump to Definition**   |  Go to the definition of the variable or function at the cursor.  | 
|   **Jump to Matching Brace**   |  Go to the matching symbol in the current scope.  | 
|   **Scroll to Selection**   |  Scroll the selection into better view.  | 

## Run menu
<a name="menu-commands-run"></a>


| Command | Description | 
| --- | --- | 
|   **Run**   |  Run or debug the current application.  | 
|   **Run Last**   |  Run or debug the last run file.  | 
|   **Run With**   |  Run or debug using the chosen runner. See [Working with Builders, Runners, and Debuggers](build-run-debug.md).  | 
|   **Run History**   |  View run history.  | 
|   **Run Configurations**   |  Choose a run configuration to run or debug with, or create or manage run configurations. See [Working with Builders, Runners, and Debuggers](build-run-debug.md).  | 
|   **Show Debugger at Break**   |  When running code reaches a breakpoint, show the **Debugger** window.  | 
|   **Build**   |  Build the current file.  | 
|   **Cancel Build**   |  Stop building the current file.  | 
|   **Build System**   |  Build using the chosen build system.  | 
|   **Show Build Result**   |  Show the related build result.  | 
|   **Automatically Build Supported Files**   |  Automatically build supported files.  | 
|   **Save All on Build**   |  When building, save all related unsaved files.  | 

## Tools menu
<a name="menu-commands-tools"></a>


| Command | Description | 
| --- | --- | 
|   **Strip Trailing Space**   |  Trim whitespace at the ends of lines.  | 
|   **Preview, Preview File**   |  Preview the current document in a preview tab.  | 
|   **Preview, Preview Running Application**   |  Preview the current application in a separate web browser tab.  | 
|   **Preview, Configure Preview URL**   |  Open the **Project Settings** section of the **Preferences** tab to the **Run & Debug, Preview URL** box.  | 
|   **Preview, Show Active Servers**   |  Show a list of available active server addresses in the **Process List** dialog box.  | 
|   **Process List**   |  Show the **Process List** dialog box.  | 
|   **Show Autocomplete**   |  Show the code completion context menu.  | 
|   **Rename Variable**   |  Start a rename refactor for the selection.  | 
|   **Toggle Macro Recording**   |  Start keystroke recording, of stop if it is already recording.  | 
|   **Play Macro**   |  Play previously recorded keystrokes.  | 

## Window menu
<a name="menu-commands-window"></a>


| Command | Description | 
| --- | --- | 
|   **Go**   |  Show the **Go** window, or hide if shown.  | 
|   **New Terminal**   |  Open a new **Terminal** tab.  | 
|   **New Immediate Window**   |  Open a new **Immediate** tab.  | 
|   **Share**   |  Show the **Share this environment** dialog box.  | 
|   **Installer**   |  Show the **AWS Cloud9 Installer** dialog box.  | 
|   **Collaborate**   |  Show the **Collaborate** window, or hide if shown.  | 
|   **Outline**   |  Show the **Outline** window, or hide if shown.  | 
|   **AWS Resources**   |  Show the **AWS Resources** window, or hide if shown.  | 
|   **Environment**   |  Show the **Environment** window, or hide if shown.  | 
|   **Debugger**   |  Show the **Debugger** window, or hide if shown.  | 
|   **Navigation, Tab to the Right**   |  Go one tab right.  | 
|   **Navigation, Tab to the Left**   |  Go one tab left.  | 
|   **Navigation, Next Tab in History**   |  Go to the next tab.  | 
|   **Navigation, Previous Tab in History**   |  Go to the previous tab.  | 
|   **Navigation, Move Tab to Right**   |  Move the current tab right. If the tab is already at the far right, create a split tab there.  | 
|   **Navigation, Move Tab to Left**   |  Move the current tab left. If the tab is already at the far left, create a split tab there.  | 
|   **Navigation, Move Tab to Up**   |  Move the current tab up one pane. If the tab is already at very top, create a split tab there.  | 
|   **Navigation, Move Tab to Down**   |  Move the current tab down one pane. If the tab is already at the very bottom, create a split tab there.  | 
|   **Navigation, Go to Pane to Right**   |  Go one pane right.  | 
|   **Navigation, Go to Pane to Left**   |  Go one pane left.  | 
|   **Navigation, Go to Pane to Up**   |  Go one pane up.  | 
|   **Navigation, Go to Pane to Down**   |  Go one pane down.  | 
|   **Navigation, Switch Between Editor and Terminal**   |  Switch between the editor and the **Terminal** tab .  | 
|   **Navigation, Next Pane in History**   |  Go to the next pane.  | 
|   **Navigation, Previous Pane in History**   |  Go to the previous pane.  | 
|   **Saved Layouts, Save**   |  Save the current layout. To switch to this layout later, choose **Saved Layouts, LAYOUT-ID**.  | 
|   **Saved Layouts, Save and Close All**   |  Save the current layout, and then close all tabs and panes.  | 
|   **Saved Layouts, Show Saved Layouts in File Tree**   |  Show all saved layouts in the **Environment** window.  | 
|   **Tabs, Close Pane**   |  Close the current pane.  | 
|   **Tabs, Close All Tabs In All Panes**   |  Close all open tabs in all panes.  | 
|   **Tabs, Close All But Current Tab**   |  Close all open tabs in the current pane, except the current tab.  | 
|   **Tabs, Split Pane in Two Rows**   |  Split the current pane into two panes, top and bottom.  | 
|   **Tabs, Split Pane in Two Columns**   |  Split the current pane into two panes, left and right.  | 
|   **Presets, Full IDE**   |  Switch to full IDE mode.  | 
|   **Presets, Minimal Editor**   |  Switch to minimal editor mode.  | 
|   **Presets, Sublime Mode**   |  Switch to Sublime mode.  | 

## Support menu
<a name="menu-commands-support"></a>


| Command | Description | 
| --- | --- | 
|   **Welcome Page**   |  Open the **Welcome** tab.  | 
|   **Get Help (Community)**   |  Opens the AWS Cloud9 online community website in a separate web browser tab.  | 
|   **Read Documentation**   |  Opens the *AWS Cloud9 User Guide* in a separate web browser tab.  | 

## Preview menu
<a name="menu-commands-preview"></a>


| Command | Description | 
| --- | --- | 
|   **Preview File**   |  Preview the current document in a preview tab.  | 
|   **Preview Running Application**   |  Preview the current application in a separate web browser tab.  | 
|   **Configure Preview URL**   |  Open the **Project Settings** section of the **Preferences** tab to the **Run & Debug, Preview URL** box.  | 
|   **Show Active Servers**   |  Show a list of available active server addresses in the **Process List** dialog box.  | 

## Other menu bar commands
<a name="menu-commands-other"></a>


| Command | Description | 
| --- | --- | 
|   **Run**   |  Run or debug the current application.  | 
|   **Share**   |  Opens the **Share this environment** dialog box.  | 
|   **Preferences** (gear icon)  |  Open the **Preferences** tab.  | 

# Finding and Replacing Text in the AWS Cloud9 IDE
<a name="find-replace-text"></a>

You can use the find and replace bar in the AWS Cloud9 Integrated Development Environment (IDE) to find and replace text in a single file or multiple files.
+  [Find Text in a Single File](#find-replace-text-find-single) 
+  [Replace Text in a Single File](#find-replace-text-replace-single) 
+  [Find Text in Multiple Files](#find-replace-text-find-multiple) 
+  [Replace Text in Multiple Files](#find-replace-text-replace-multiple) 
+  [Find and Replace Options](#find-replace-text-replace-options) 

## Find Text in a Single File
<a name="find-replace-text-find-single"></a>

1. Open the file you want to find text in. If the file is already open, choose the file's tab to make the file active.

1. On the menu bar, choose **Find, Find**.

1. In the find and replace bar, for **Find**, type the text you want to find.

1. To specify additional find options, see [Find and Replace Options](#find-replace-text-replace-options).

1. If there are any matches, **0 of 0** in the **Find** box changes to non-zero numbers. If there are any matches, the editor goes to the first match. If there is more than one match, to go to the next match, choose the right arrow in the **Find** box or choose **Find, Find Next** on the menu bar. To go to the previous match, choose the left arrow in the **Find** box or choose **Find, Find Previous** on the menu bar.

## Replace Text in a Single File
<a name="find-replace-text-replace-single"></a>

1. Open the file you want to replace text in. If the file is already open, choose the file's tab to make the file active.

1. On the menu bar, choose **Find, Replace**.

1. In the find and replace bar, for **Find**, type the text you want to find.

1. For **Replace With**, type the text you want to replace the text in **Find** with.

1. To specify additional find and replace options, see [Find and Replace Options](#find-replace-text-replace-options).

1. If there are any matches, **0 of 0** in the **Find** box changes to non-zero numbers. If there are any matches, the editor goes to the first match. If there is more than one match, to go to the next match, choose the right arrow in the **Find** box or choose **Find, Find Next** on the menu bar. To go to the previous match, choose the left arrow in the **Find** box or choose **Find, Find Previous** on the menu bar.

1. To replace the current match with the text in **Replace With** and then go to the next match, choose **Replace**. To replace all matches with the text in **Replace With**, choose **Replace All**.

## Find Text in Multiple Files
<a name="find-replace-text-find-multiple"></a>

1. On the menu bar, choose **Find, Find in Files**.

1. In the find and replace bar, for **Find**, type the text you want to find.

1. To specify additional find options, see [Find and Replace Options](#find-replace-text-replace-options).

1. In the box to the right of the **Find** button (the box with `*.*, -.*`), type any set of files to include or exclude in the find. For example:
   + Blank, `*`, or `*.*`: Find all files.
   +  `my-file.txt`: Find only the file named `my-file.txt`.
   +  `my*`: Find only files with file names starting with `my`.
   +  `my*.txt`: Find only files with file names starting with `my` and that have the file extension `.txt`.
   +  `my*.htm*`: Find all files with file names starting with `my` and a file extension starting with `.htm`.
   +  `my*.htm, my*.html`: Find all files with file names starting with `my` and the file extension `.htm` or `.html`.
   +  `-my-file.txt`: Do not search the file named `my-file.txt`.
   +  `-my*`: Do not search any files starting with `my`.
   +  `-my*.htm*`: Do not search any files with file names starting with `my` and a file extension starting with `.htm`.
   +  `my*.htm*, -my*.html`: Search all files with file names starting with `my` and a file extension starting with `.htm`. However, do not search any files with file names starting with `my` and a file extension of `.html`.

1. In the drop-down list next to the preceding box, choose one of the following to further restrict the find to only specific locations:
   +  **Environment**: Find only files in the **Environment** window.
   +  **Project (excludes .gitignore'd)**: Find any file in the environment, except for files or file types listed in the `.gitignore` file in the environment, if a `.gitignore` file exists.
   +  **Selection:**: Find only files that are currently selected in the **Environment** window.
**Note**  
To further restrict the find to only a single folder, choose a folder in the **Environment** window and then choose **Selection**. Alternatively, you can right-click the folder in the **Environment** window, and then choose **Search In This Folder** on the context menu.
   +  **Favorites**: Find only files in the **Favorites** list in the **Environment** window.
   +  **Active File**: Find only the active file.
   +  **Open Files**: Find only files in the **Open Files** list in the **Environment** window.

1. Choose **Find**.

1. To go to a file containing matches, double-click the file name on the **Search Results** tab. To go to a specific match, double-click the match in the **Search Results** tab.

## Replace Text in Multiple Files
<a name="find-replace-text-replace-multiple"></a>

1. On the menu bar, choose **Find, Find in Files**.

1. In the find and replace bar, for **Find**, type the text you want to find.

1. To specify additional find options, see [Find and Replace Options](#find-replace-text-replace-options).

1. In the box to the right of the **Find** button (the box with `*.*, -.*`), type any set of files to include or exclude in the find. For example:
   + Blank, `*`, or `*.*`: All files.
   +  `my-file.txt`: Only the file named `my-file.txt`.
   +  `my*`: Only files with file names staring with `my`.
   +  `my*.txt`: Only files with file names starting with `my` and that have the file extension `.txt`.
   +  `my*.htm*`: All files with file names starting with `my` and a file extension starting with `.htm`.
   +  `my*.htm, my*.html`: All files with file names starting with `my` and the file extension `.htm` or `.html`.
   +  `-my-file.txt`: Do not search the file named `my-file.txt`.
   +  `-my*`: Do not search any files starting with `my`.
   +  `-my*.htm*`: Do not search any files with file names starting with `my` and a file extension starting with `.htm`.
   +  `my*.htm*, -my*.html`: Search all files with file names starting with `my` and a file extension starting with `.htm`. However, do not search any files with file names starting with `my` and a file extension of `.html`.

1. In the drop-down list next to the preceding box, choose one of the following to further restrict the find to only specific locations:
   +  **Environment**: Only files in the **Environment** window.
   +  **Project (excludes .gitignore'd)**: Any file in the environment, except for files or file types listed in the `.gitignore` file in the environment, if a `.gitignore` file exists.
   +  **Selection: /**: Only files that are currently selected.
   +  **Favorites**: Only files in the **Favorites** list in the **Environment** window.
   +  **Active File**: Only the active file.
   +  **Open Files**: Only files in the **Open Files** list in the **Environment** window.

1. For **Replace With**, type the text you want to replace **Find** with.

1. Choose **Replace**.
**Note**  
The replace operation happens immediately across all files in scope. This operation cannot be easily undone. If you want to see what will be changed before you start the replace operation, choose **Find** instead.

1. To go to a file containing replacements, double-click the file name in the **Search Results** tab. To go to a specific replacement, double-click the replacement in the **Search Results** pane.

## Find and Replace Options
<a name="find-replace-text-replace-options"></a>

Choose any of the following buttons on the find and replace bar to modify find and replace operations.

![\[Searching in a single file\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-search-single.png)


![\[Searching in multiple files\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-search-multiple.png)

+  **Regular Expressions**: Find text matching the specified regular expression in **Find** or **Find in Files**. See [Writing a regular expression pattern](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Writing_a_regular_expression_pattern) in the *JavaScript Regular Expressions* topic on the Mozilla Developer Network.
+  **Match Case**: Find text matching the specified casing in **Find** or **Find in Files**.
+  **Whole Words**: Use standard word character rules to find text in **Find** or **Find in Files**.
+  **Wrap Around**: For a single file only, do not stop at the end or beginning of the file when going to the next or previous match.
+  **Search Selection**: For a single file only, find only in the selection.
+  **Show in Console**: For multiple files, show the **Search Results** tab in the **Console** instead of the active pane.
+  **Preserve Case**: For a single file only, preserve casing as applicable when replacing text.

# Previewing files in the AWS Cloud9 IDE
<a name="file-preview"></a>

You can use the AWS Cloud9 IDE to preview the files in a AWS Cloud9 development environment from within the IDE.
+  [Open a file for preview](#file-preview-file-open) 
+  [Reload a file preview](#file-preview-file-reload) 
+  [Change the file preview type](#file-preview-file-preview-type) 
+  [Open a file preview in a separate web browser tab](#file-preview-file-open-tab) 
+  [Switch to a different file preview](#file-preview-file-switch) 

## Open a file for preview
<a name="file-preview-file-open"></a>

Choose one of the following options in the AWS Cloud9 IDE to open a file preview tab within the environment:
+ In the **Environment** window, open the context (right-click) menu for the file you want to preview, and then choose **Preview**.
**Note**  
Although you can use this approach to preview any file, preview works best with files that have the following file extensions:  
 `.htm` 
 `.html` 
 `.pdf` 
 `.svg` 
 `.xhtml` 
Any file containing content in Markdown format.
+ Open a file with one of the following file extensions:
  +  `.pdf` 
  +  `.svg` 
+ With the file you want to preview already open and active, on the menu bar, choose **Preview, Preview File FILE\$1NAME**. Or choose **Tools, Preview, Preview File FILE\$1NAME**, where **FILE\$1NAME** is the name of the file you want to preview.
**Note**  
These commands only work with the following file types:  
 `.htm` 
 `.html` 
 `.markdown` 
 `.md` 
 `.pdf` 
 `.svg` 
 `.txt`: Preview works best if the file's content is in Markdown format.
 `.xhtml`: Preview works best if the file contains or references content presentation information.

**Note**  
The **Preview Settings** menu in the file preview tab is currently not functional and choosing any of its menu commands will have no effect.

## Reload a file preview
<a name="file-preview-file-reload"></a>

On the file preview tab, choose the **Refresh** button (the circular arrow).

## Change the file preview type
<a name="file-preview-file-preview-type"></a>

On the file preview tab, choose one of the following from the preview type list:
+  **Browser**: Previews the file in a web browser format, for the following file types only:
  +  `.htm` 
  +  `.html` 
  +  `.pdf` 
  +  `.svg` 
  +  `.xhtml`: Preview works best if the file contains or references content presentation information.
+  **Raw Content (UTF-8)**: Previews the file's original contents in Unicode Transformation Format 8-bit (UTF-8) format. This might display unexpected content for some file types.
+  **Markdown**: Previews any file containing Markdown format. Attempts to preview any other file type, but might display unexpected content.

## Open a file preview in a separate web browser tab
<a name="file-preview-file-open-tab"></a>

On the file preview tab, choose **Pop Out Into New Window**.

## Switch to a different file preview
<a name="file-preview-file-switch"></a>

On the file preview tab, type the path to a different file path in the address bar. The address bar is located between the **Refresh** button and the preview type list.

# Previewing running applications in the AWS Cloud9 IDE
<a name="app-preview"></a>

You can use the AWS Cloud9 Integrated Development Environment (IDE) to preview a running application from within the IDE.

## Run an application
<a name="app-preview-run-app"></a>

Before you can preview your application from within the IDE, your application must be running in the AWS Cloud9 development environment. It must use HTTP over the following ports:
+ `8080`
+ `8081`
+ `8082`

All of the above ports must use the IP address of `127.0.0.1` `localhost`, or `0.0.0.0`.

**Note**  
You aren't required to run your application using HTTP over port `8080`, `8081`, or `8082` with the IP address of `127.0.0.1`, `localhost`, or `0.0.0.0`. However, if you don't do so, you can't preview your running application from within the IDE.

**Note**  
The preview application is run within the IDE and is loaded inside an iframe element. Some application servers might by default block requests that come from iframe elements, such as the X-Frame-Options header. If your preview application isn't displayed in the preview tab, make sure that your application server doesn't prohibit displaying the content in iframes. 

To write code to run your application on a specific port and IP address, see your application's documentation.

To run your application, see [Run Your Code](build-run-debug.md#build-run-debug-run).

To test this behavior, add the following JavaScript code to a file that's named `server.js` in the root of your environment. This code runs a server using a file that's named Node.js.

**Note**  
In the following example, `text/html` is the `Content-Type` of the returned content. To return the content in a different format, specify a different `Content-Type`. For example, you can specify `text/css` for a CSS file format.

```
var http = require('http');
var fs = require('fs');
var url = require('url');

http.createServer( function (request, response) {
  var pathname = url.parse(request.url).pathname;
  console.log("Trying to find '" + pathname.substr(1) + "'...");

  fs.readFile(pathname.substr(1), function (err, data) {
    if (err) {
      response.writeHead(404, {'Content-Type': 'text/html'});
      response.write("ERROR: Cannot find '" + pathname.substr(1) + "'.");
      console.log("ERROR: Cannot find '" + pathname.substr(1) + "'.");
    } else {
      console.log("Found '" + pathname.substr(1) + "'.");
      response.writeHead(200, {'Content-Type': 'text/html'});
      response.write(data.toString());
    }
    response.end();
  });
}).listen(8080, 'localhost'); // Or 8081 or 8082 instead of 8080. Or '127.0.0.1' instead of 'localhost'.
```

In the root of your environment, you can add the following Python code to a file with a name such as `server.py`. In the following example, a server is run using Python.

```
import os
import http.server
import socketserver

ip = 'localhost' # Or '127.0.0.1' instead of 'localhost'.
port = '8080' # Or '8081' or '8082' instead of '8080'.
Handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer((ip, int(port)), Handler)
httpd.serve_forever()
```

In the root of your environment, add the following HTML code to a file that's named `index.html`.

```
<html>
  <head>
    <title>Hello Home Page</title>
  </head>
  <body>
    <p style="font-family:Arial;color:blue">Hello, World!</p>
  </body>
</html>
```

To see the HTML output of this file on the application preview tab, run `server.js` with Node.js or `server.py` file with Python. Then, follow the steps in the next section to preview it. On the application preview tab, add `/index.html` to the end of the URL, and then press `Enter`.

## Preview a running application
<a name="app-preview-preview-app"></a>

Before you preview your application, confirm the following:
+ Your application runs using the HTTP protocol over port `8080`, `8081`, or `8082`.
+ Your application's IP address in the environment is `127.0.0.1`, `localhost`, or `0.0.0.0`. 
+ Your application code file is open and active in the AWS Cloud9 IDE.

After you confirm all of these details, choose one of the following options from the menu bar:
+  **Preview, Preview Running Application** 
+  **Tools, Preview, Preview Running Application** 

Either one of these options opens an application preview tab within the environment, and then displays the application's output on the tab.

**Note**  
If the application preview tab displays an error or is blank, follow the troubleshooting steps in [Application preview tab displays an error or is blank](troubleshooting.md#troubleshooting-app-preview). If when you attempt to preview an application or file, you get the following notice *"Preview functionality is disabled because your browser has third-party cookies disabled"*, follow the troubleshooting steps in [Application preview or file preview notice: "Third-party cookies disabled"](troubleshooting.md#troubleshooting-preview).

**Note**  
If the application isn't already running, an error appears on the application preview tab. To resolve this issue, run or restart the application, and then choose the menu bar command again.  
Suppose that, for example, your application can't run on any of the ports or IPs mentioned. Or, your application must run on more than one of these ports at the same time. For example, your application must run on ports `8080` and `3000` at the same time. If that's the case, then the application preview tab might display an error or might be blank. This is because the application preview tab within the environment works only with the preceding ports and IPs. Moreover, the application works with only a single port at a time.  
We don't recommend sharing the URL in the application preview tab with others. (The URL is in the following format: `https://12a34567b8cd9012345ef67abcd890e1.vfs.cloud9.us-east-2.amazonaws.com/`. In this format, `12a34567b8cd9012345ef67abcd890e1` is the ID that AWS Cloud9 assigns to the environment. `us-east-2` is the ID for the AWS Region for the environment.) This URL works only when the IDE for the environment is open and the application is running in the same web browser.  
If you attempt to visit the IP of `127.0.0.1`, `localhost`, or `0.0.0.0` by using the application preview tab in the IDE or in a separate web browser tab outside of the IDE, the AWS Cloud9 IDE by default attempts to go to your local computer, instead of the instance or your own server that's connected to the environment.

For instructions on how to provide others with a preview of your running application outside of the IDE, see [Share a running application over the internet](app-preview-share.md).

# Reload an application preview
<a name="app-preview-app-reload"></a>

To reload an application preview, choose the following option:

On the application preview tab, choose the **Refresh** button (the circular arrow).

**Note**  
This command doesn't restart the server. It only refreshes the contents of the application preview tab.

# Change the application preview type
<a name="app-preview-app-preview-type"></a>

To change the application preview type, choose the following option:

On the application preview tab, choose one of the following from the preview type list:
+  **Browser**: Previews the output in a web browser format.
+  **Raw Content (UTF-8)**: Attempts to preview the output in Unicode Transformation Format 8-bit (UTF-8) format, if applicable.
+  **Markdown**: Attempts to preview the output in the Markdown format, if applicable.

# Open an application preview in a separate web browser tab
<a name="app-preview-app-open-tab"></a>

To open an application preview in a separate web browser tab, choose the following option:

On the application preview tab, choose **Pop Out Into New Window**.

**Note**  
****The AWS Cloud9 IDE must also be running in at least one other tab in the same web browser. Otherwise, the application preview isn't displayed in a separate web browser tab.  
The AWS Cloud9 IDE must also be running in at least one other tab in the same web browser. Otherwise, the application preview isn't displayed in a separate web browser tab. If the application preview tab displays an error or is blank, follow the troubleshooting steps in [Application preview or file preview notice: "Third-party cookies disabled"](troubleshooting.md#troubleshooting-preview).

# Switch to a different preview URL
<a name="app-preview-url-switch"></a>

To switch to a different preview URL, choose the following option:

On the application preview tab, enter the path to a different URL in the address bar. The address bar is located between the **Refresh** button and the preview type list.

# Share a running application over the internet
<a name="app-preview-share"></a>

After you preview your running application, you can make it available to others over the internet.

If an Amazon EC2 instance is connected to your environment, follow these steps. Otherwise, consult your server's documentation.

**Topics**
+ [Step 1: Get the ID and the IP address of the instance](#app-preview-share-get-metadata)
+ [Step 2: Set up the security group for the instance](#app-preview-share-security-group)
+ [Step 3: Set up the subnet for the instance](#app-preview-share-subnet)
+ [Step 4: Share your running application's URL](#app-preview-share-url)

## Step 1: Get the ID and the IP address of the instance
<a name="app-preview-share-get-metadata"></a>

In this step, you note the instance ID and public IP address for the Amazon EC2 instance that's connected to the environment. You need the instance ID in a later step to allow incoming application requests. Then, share the public IP address to others so that they can access the running application.

1. Get the Amazon EC2 instance's ID. To get this, do one of the following:
   + In a terminal session in the AWS Cloud9 IDE for the environment, run the following command to get the Amazon EC2 instance's ID.

     ```
     curl http://169.254.169.254/latest/meta-data/instance-id
     ```

     The instance ID is in the following format: `i-12a3b456c789d0123`. Make a note of this instance ID.
   + In the IDE for the environment, on the menu bar, choose your user icon, and then choose **Manage EC2 Instance**.  
![\[Choosing to manage the instance from the AWS Cloud9 IDE\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/console-manage-instance.png)

     In the Amazon EC2 console that displays, make a note of the instance ID that displays in the **Instance ID** column. The instance ID is in this format: `i-12a3b456c789d0123`.

1. Get the Amazon EC2 instance's public IP address. To get this, do one of the following:
   + In the IDE for the environment, on the menu bar, choose **Share**. In the **Share this environment** dialog box, make a note of the public IP address in the **Application** box. The public IP address is in this format: `192.0.2.0`.
   + In a terminal session in the IDE for the environment, run the following command to get the Amazon EC2 instance's public IP address.

     ```
     curl http://169.254.169.254/latest/meta-data/public-ipv4
     ```

     The public IP address is in this format: `192.0.2.0`. Make a note of this public IP address.
   + In the IDE for the environment, on the menu bar, choose your user icon, and then choose **Manage EC2 Instance**. In the Amazon EC2 console that displays, on the **Description** tab, make a note of the public IP address for the **IPv4 Public IP** field. The public IP address is in this format: `192.0.2.0`.
**Note**  
Your application's public IP address might change anytime the instance for your application restarts. To prevent your IP address from changing, allocate an Elastic IP address. Then, assign that address to the running instance. For instructions, see [Allocating an Elastic IP Address](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-allocating) and [Associating an Elastic IP Address with a Running Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating) in the *Amazon EC2 User Guide*. Allocating an Elastic IP address might cause your AWS account to incur charges. For more information, see [Amazon EC2 Pricing](https://aws.amazon.com/ec2/pricing/).

## Step 2: Set up the security group for the instance
<a name="app-preview-share-security-group"></a>

In this step, on the Amazon EC2 console, set up the Amazon EC2 security group for the instance that's connected to the environment. Set it up to allow incoming HTTP requests over port 8080, 8081, or 8082.

**Note**  
You aren't required run using HTTP over port `8080`, `8081`, or `8082`. If you don't do this, you can't preview your running application from within the IDE. For more information, see [Preview a running application](app-preview.md#app-preview-preview-app). Otherwise, if you're running on a different protocol or port, substitute it in this step.  
For an additional layer of security, set up a network access control list (ACL) for a subnet in a VPC that the instance can use. For more information about security groups and network ACLs, see the following:  
 [Step 3: Set up the subnet for the instance](#app-preview-share-subnet) 
 [Security](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html) in the *Amazon VPC User Guide*
 [Security Groups for Your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) in the *Amazon VPC User Guide*
 [Network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) in the *Amazon VPC User Guide*

1. In the IDE for the environment, on the menu bar, choose your user icon, and then choose **Manage EC2 Instance**. Then skip ahead to step 3 in this procedure.

1. If choosing **Manage EC2 Instance** or other steps in this procedure returns in errors, sign in to the Amazon EC2 console using the credentials for an administrator in your AWS account. Then, complete the following instructions. If you can't do this, check with your AWS account administrator.

   1. Sign in to the AWS Management Console at [https://console.aws.amazon.com/](https://console.aws.amazon.com/) if you're not already signed in.

   1. Open the Amazon EC2 console. To do this, in the navigation bar, choose **Services**. Then, choose **EC2**.

   1. In the navigation bar, choose the AWS Region where your environment is located.

   1. If the **EC2 Dashboard** is displayed, choose **Running Instances**. Otherwise, in the service navigation pane, expand **Instances** if it isn't already expanded and choose **Instances**.

   1. In the list of instances, select the instance with an **Instance ID** that matches the instance ID that you noted earlier.

1. In the **Description** tab for the instance, choose the security group link that's next to **Security groups**.

1. With the security group displayed, look on the **Inbound** tab. If there's a rule with **Type** set to **Custom TCP Rule** and **Port Range** set to **8080**, **8081**, or **8082**, choose **Cancel**, and skip ahead to [Step 3: Set up the subnet for the instance](#app-preview-share-subnet). Otherwise, choose **Edit**.

1. In the **Edit inbound rules** dialog box, choose **Add Rule**.

1. For **Type**, choose **Custom TCP Rule**.

1. For **Port Range**, enter `8080`, `8081`, or `8082`.

1. For **Source**, choose **Anywhere**.
**Note**  
By choosing **Anywhere** for **Source**, you're allowing incoming requests from any IP address. To restrict this to specific IP addresses, choose **Custom** and then enter the IP address range. Alternatively, choose **My IP** to restrict requests to be only from your IP address.

1. Choose **Save**.

## Step 3: Set up the subnet for the instance
<a name="app-preview-share-subnet"></a>

Use the Amazon EC2 and Amazon VPC consoles to set up a subnet for the Amazon EC2 instance that's connected to the environment. Then, allow incoming HTTP requests over port 8080, 8081, or 8082.

**Note**  
You aren't required to run using HTTP over port `8080`, `8081`, or `8082`. However, if you don't, you can't preview your running application from within the IDE. For more information, see [Preview a running application](app-preview.md#app-preview-preview-app). Otherwise, if you're running on a different protocol or port, substitute it in this step.  
This step describes how to set up a network ACL for a subnet in an Amazon VPC that the instance can use. This isn't required but is recommended. Setting up a network ACL adds an additional layer of security. For more information about network ACLs, see the following:  
 [Security](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html) in the *Amazon VPC User Guide*
 [Network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) in the *Amazon VPC User Guide*

1. On the Amazon EC2 console, in the service navigation pane, expand **Instances** if it isn't already expanded, and choose **Instances**.

1. In the list of instances, select the instance with an **Instance ID** that matches the instance ID that you noted earlier.

1. In the **Description** tab for the instance, note the value of **Subnet ID**. The subnet ID is in the following format: `subnet-1fab8aEX`.

1. Open the Amazon VPC console. To do this, in the AWS navigation bar, choose **Services** and then choose **VPC**.

   For this step, we recommend that you sign in to the Amazon VPC console using an administrator's credentials in your AWS account. If you can't do this, check with your AWS account administrator.

1. If the **VPC Dashboard** is displayed, choose **Subnets**. Otherwise, in the service navigation pane, choose **Subnets**.

1. In the list of subnets, select the subnet with a **Subnet ID** value that matches the one that you noted earlier.

1. On the **Summary** tab, choose the network ACL link that's next to **Network ACL**.

1. In the list of network ACLs, select the network ACL. (There is only one network ACL.)

1. Look on the **Inbound Rules** tab for the network ACL. If a rule already exists where **Type** is set to **HTTP\$1 (8080)**, **HTTP\$1 (8081)**, or **HTTP\$1 (8082)**, skip ahead to [Step 4: Share your running application's URL](#app-preview-share-url). Otherwise, choose **Edit**.

1. Choose **Add another rule**.

1. For **Rule \$1**, enter a number for the rule (for example, `200`).

1. For **Type**, choose **Custom TCP Rule**.

1. For **Port Range**, type `8080`, `8081`, or `8082`.

1. For **Source**, type the range of IP addresses to allow incoming requests from. For example, to allow incoming requests from any IP address, enter `0.0.0.0/0`.

1. With **Allow / Deny** set to **ALLOW**, choose **Save**.

## Step 4: Share your running application's URL
<a name="app-preview-share-url"></a>

After your application is running, you can share your application with others by providing your application's URL. For this, you need the public IP address that you noted earlier. To write your application's full URL, make sure to start your application's public IP address with the correct protocol. Next, if your application port isn't the default port for the protocol that it uses, add the port number information. The following is an example application URL: `http://192.0.2.0:8080/index.html` using HTTP over port 8080.

If the resulting web browser tab displays an error, or the tab is blank, follow the troubleshooting steps in [Can't display your running application outside of the IDE](troubleshooting.md#troubleshooting-app-sharing).

**Note**  
Your application's public IP address might change anytime the instance for your application restarts. To prevent your IP address from changing, allocate an Elastic IP address, and then assign that address to the running instance. For instructions, see [Allocating an Elastic IP Address](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-allocating) and [Associating an Elastic IP Address with a Running Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating) in the *Amazon EC2 User Guide*. Allocating an Elastic IP address might cause your AWS account to incur charges. For more information, see [Amazon EC2 Pricing](https://aws.amazon.com/ec2/pricing/).  
You're not required to run your application using HTTP over port `8080`, `8081`, or `8082`. However, if you don't, you can't preview your running application from within the IDE. For more information, see [Preview a running application](app-preview.md#app-preview-preview-app).  
Suppose that, for example, requests that originate from a VPN that blocks traffic over the requested protocol or port. Then, those requests to access your application's URL might fail. Request must be made from a different network that allows traffic over the requested protocol and port. For more information, contact your network administrator.  
We don't recommend sharing the URL in your application preview tab in the IDE with others. (This URL is in the following format: `https://12a34567b8cd9012345ef67abcd890e1.vfs.cloud9.us-east-2.amazonaws.com/`. In this format, `12a34567b8cd9012345ef67abcd890e1` is the ID that AWS Cloud9 assigns to the environment. `us-east-2` is the ID of the AWS Region for the environment.) This URL works only when the IDE for the environment is open and the application is running in the same web browser.

# Working with File Revisions in the AWS Cloud9 IDE
<a name="file-revisions"></a>

You can use the **File Revision History** pane in the AWS Cloud9 Integrated Development Environment (IDE) to view and manage changes to a file in an AWS Cloud9 EC2 development environment. The **File Revision History** pane is not available for files in an AWS Cloud9 SSH development environment.

![\[The File Revision History pane\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-file-revision.gif)


To show the **File Revision History** pane for a file, open the file in the editor. Then, on the menu bar, choose **File, Show File Revision History**.

The **File Revision History** pane begins tracking a file's revision history in the IDE after you first open the file in the editor in an environment, and only for that environment. The **File Revision History** pane tracks a file's revisions only from the editor itself. It does not track a file's revisions made in any other way (for example by the terminal, Git, or other file revision tools).

You cannot edit a file while the **File Revision History** pane is displayed. To hide the pane, choose **File, Show Revision History** again, or choose the **X** (**Close timeslider**) in the corner of the pane.

To jump to a version of the file that is associated with a file save action, choose a **File Saved on** dot above the revision slider.

![\[File save points in the File Revision History pane\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-file-revision-save.png)


To go forward or backward one version from the currently selected version of the file on the revision slider, choose one of the step arrows (**Step revision forward** or **Step revision backward**).

![\[Moving forward and backward through file versions in the File Revision History pane\]](http://docs.aws.amazon.com/cloud9/latest/user-guide/images/ide-file-revision-move.png)


To go forward automatically one version of the file at a time from the beginning to end of the revision history, choose the play button (**Playback file history**).

To make the currently selected version of the file the latest version in the revision history, choose **Revert**.

# Working with Images Files in the AWS Cloud9 IDE
<a name="images"></a>

You can use the AWS Cloud9 Integrated Development Environment (IDE) to view and edit image files.
+  [View or Edit an Image](#images-view-edit) 
+  [Resize an Image](#images-resize) 
+  [Crop an Image](#images-crop) 
+  [Rotate an Image](#images-rotate) 
+  [Flip an Image](#images-flip) 
+  [Zoom an Image](#images-zoom) 
+  [Smooth an Image](#images-smooth) 

## View or Edit an Image
<a name="images-view-edit"></a>

In the AWS Cloud9 IDE, open the file for the image you want to view or edit. Supported image file types include the following:
+  `.bmp` 
+  `.gif` (view only)
+  `.ico` (view only)
+  `.jpeg` 
+  `.jpg` 
+  `.png` 
+  `.tiff` 

## Resize an Image
<a name="images-resize"></a>

1. Open the image file in the IDE.

1. On the image editing bar, choose **Resize**.

1. To change the image width, type a new **Width** in pixels. Or choose "**-**" or "**\$1**" next to **Width** to change the current width one pixel at a time.

1. To change the image height, type a new **Height** in pixels. Or choose "**-**" or "**\$1**" next to **Height** to change the current height one pixel at a time.

1. To maintain the image ratio of width to height, leave **Maintain Aspect Ratio** checked.

1. To confirm the image's new size, on the image editing bar, see the width (**W**) and height (**H**) measurements in pixels.

1. Choose **Resize**.

1. To discard the resizing, on the menu bar, choose **Edit**, **Undo**. To keep the new size, choose **File**, **Save**.

## Crop an Image
<a name="images-crop"></a>

1. Open the image file in the IDE.

1. Drag the pointer over the portion of the image that you want to keep.

1. To confirm the selection's dimensions, on the image editing bar, see the **Selection** dimensions, as follows:
   + The distance in pixels from the original image's left edge to the left edge of the selection (**L**)
   + The distance in pixels from the original image's top edge to the top edge of the selection (**T**)
   + The selection's width in pixels (**W**)
   + The selection's height in pixels (**H**)

1. On the image editing bar, choose **Crop**.

1. To discard the crop, on the menu bar, choose **Edit**, **Undo**. To keep the new cropped image, choose **File**, **Save**.

## Rotate an Image
<a name="images-rotate"></a>

1. Open the image file in the IDE.

1. To rotate the image counterclockwise, on the image editing bar, choose **Rotate 90 Degrees Left**.

1. To rotate the image clockwise, on the image editing bar, choose **Rotate 90 Degrees Right**.

1. To discard the rotation, on the menu bar, choose **Edit**, **Undo**. To keep the new rotated image, choose **File**, **Save**.

## Flip an Image
<a name="images-flip"></a>

1. Open the image file in the IDE.

1. To flip the image horizontally, on the image editing bar, choose **FlipH**.

1. To flip the image vertically, on the image editing bar, choose **FlipV**.

1. To discard the flip, on the menu bar, choose **Edit**, **Undo**. To keep the new flipped image, choose **File**, **Save**.

## Zoom an Image
<a name="images-zoom"></a>

1. Open the image file in the IDE.

1. On the image editing bar, choose one of the available zoom factors (for example, **75%**, **100%**, or **200%**).

## Smooth an Image
<a name="images-smooth"></a>

1. Open the image file in the IDE.

1. On the image editing bar, select **Smooth** to reduce the amount of pixelation in the image. To discard the smoothing, deselect **Smooth**.

1. On the menu bar, choose **File**, **Save**.

# Working with Builders, Runners, and Debuggers in the AWS Cloud9 IDE
<a name="build-run-debug"></a>

A *builder* instructs the AWS Cloud9 Integrated Development Environment (IDE) how to build a project's files. A *runner* instructs the AWS Cloud9 IDE how to run files of a specific type. A runner can use a *debugger* to help find any problems in the source code of the files.

You can use the AWS Cloud9 IDE to build, run, and debug your code in the following ways:
+ Use a builder to build your project's files. For more information, see [Build Your Project's Files](#build-run-debug-build).
+ Use a runner to run (and optionally, to debug) your code. For more information, see [Built-In Build, Run, and Debug Support](#build-run-debug-supported) and [Run Your Code](#build-run-debug-run).
+ Change a built-in runner to run (and optionally, to debug) your code in a different way from how it was originally defined. For more information, see [Change a Built-In Runner](build-run-debug-change-runner.md).
+ Use a runner to run (and optionally, to debug) your code with a custom combination of file name, command line options, debug mode, current working directory, and environment variables. For more information, see [Create a Run Configuration](build-run-debug-create-run-config.md).
+ Create your own builder or runner. For more information, see [Create a Builder or Runner](#build-run-debug-create-builder-runner).

## Built-In Build, Run, and Debug Support
<a name="build-run-debug-supported"></a>

The AWS Cloud9 IDE provides built-in support for building, running, and debugging code for several languages. For a complete list, see [Language Support](language-support.md).

Built-in build support is available on the menu bar with the **Run**, **Build System** and **Run**, **Build** menu commands. To add support for a programming language or tool that isn't listed, see [Create a Builder or Runner](#build-run-debug-create-builder-runner).

Built-in run support is available with the **Run** button, and on the menu bar with the **Run**, **Run With** and **Run**, **Run Configurations** menu commands. To add support for a programming language or tool that isn't listed, see [Create a Builder or Runner](#build-run-debug-create-builder-runner) and [Create a Run Configuration](build-run-debug-create-run-config.md).

Built-in debug support is available through the **Debugger** window. To display the **Debugger** window, choose the **Debugger** button. If the **Debugger** button is not visible, choose **Window**, **Debugger** on the menu bar.

## Build Your Project's Files
<a name="build-run-debug-build"></a>

1. Open a file that corresponds to the code you want to build.

1. On the menu bar, choose **Run, Build System**, and then choose the name of the builder to use, if it isn't already chosen. If the builder you want to use isn't listed, stop this procedure, complete the steps in [Create a Builder or Runner](#build-run-debug-create-builder-runner), and then return to this procedure.

1. Choose **Run, Build**.

## Run Your Code
<a name="build-run-debug-run"></a>

1. Open a file that corresponds to the code you want to run, if the file isn't already open and selected.

1. On the menu bar, choose one of the following:
   + To run the code with the closest matching built-in runner, choose **Run, Run**. If AWS Cloud9 cannot find one, this command is disabled.
   + To run the code with the run configuration that AWS Cloud9 last used, choose **Run, Run Last**.
   + To run the code with a specific runner, choose **Run, Run With**, and then choose the name of the runner. If the runner you want to use isn't listed, stop this procedure, complete the steps in [Create a Builder or Runner](#build-run-debug-create-builder-runner), and then return to this procedure.
   + To run the code with a specific runner with a custom combination of file name, command line options, debug mode, current working directory, and environment variables, choose **Run, Run Configurations**, and then choose the run configuration's name. In the run configuration tab that is displayed, choose **Runner: Auto**, choose the runner you want to use, and then choose **Run**. If the runner you want to use isn't listed, stop this procedure, complete the steps in [Create a Builder or Runner](#build-run-debug-create-builder-runner), and then return to this procedure.

## Debug Your Code
<a name="build-run-debug-debug"></a>

1. On the run configuration tab for your code, choose **Run in Debug Mode**. The bug icon turns to green on a white background. For more information, see [Run Your Code](#build-run-debug-run) and [Create a Run Configuration](build-run-debug-create-run-config.md).

1. Set any breakpoints in your code you want to pause at during the run, as follows:

   1. Open each file that you want to set a breakpoint in.

   1. At each point in a file where you want to set a breakpoint, choose the blank area in the gutter to the left of the line number. A red circle appears.

      To remove a breakpoint, choose the existing breakpoint in the gutter.

      To disable a breakpoint instead of removing it, in the **Debugger** window, in **Breakpoints**, clear the box that corresponds to the breakpoint you want to disable. To enable the breakpoint again, select the box you cleared.

      To disable all breakpoints at once, in the **Debugger** window, choose **Deactivate All Breakpoints**. To enable all breakpoints again, choose **Activate All Breakpoints**.

      If the **Debugger** window isn't visible, choose the **Debugger** button. If the **Debugger** button isn't visible, on the menu bar choose **Window**, **Debugger**.

1. Set any watch expressions for which you want to get the value at the point where a run pauses, as follows:

   1. In the **Debugger** window, in **Watch Expressions**, choose **Type an expression here**.

   1. Type the expression you want to watch, and then press `Enter`.

      To change an existing watch expression, right-click the watch expression, and then choose **Edit Watch Expression**. Type the change, and then press `Enter`.

      To remove an existing watch expression, right-click the watch expression, and then choose **Remove Watch Expression**.

1. Run your code as described in [Run Your Code](#build-run-debug-run).

Whenever a run pauses, you can also pause your pointer on any displayed piece of code (for example, a variable) to show any available information about it in a tooltip.

# Change a Built-In Runner
<a name="build-run-debug-change-runner"></a>

This step shows how you can change a Built-In Runner to run (and optionally, to debug) your code in a different way from how it was originally defined.

1. On the menu bar, choose **Run, Run With**, and then choose the built-in runner you want to change.

1. Stop the runner from trying to run your code by choosing, **Stop** on the run configuration tab that displays.

1. Choose **Runner: My Runner**, where **My Runner** is the name of the runner you want to change, and then choose **Edit Runner**.

1. On the **My Runner.run** tab that is displayed, change the runner's current definition. See [Define a Builder or Runner](build-run-debug-define-builder-runner.md).

1. Choose **File, Save As**. Save the file with the same name (**My Runner.run**) in the `my-environment/.c9/runners` directory, where `my-environment` is the name of your AWS Cloud9 development environment.

**Note**  
Any changes you make to a built-in runner apply only to the environment you made those changes in. To apply your changes to a separate environment, open the other environment, and then follow the preceding steps to open, edit, and save those same changes to that built-in runner.

# Create a Run Configuration
<a name="build-run-debug-create-run-config"></a>

This step shows how you can a runner to run (and optionally, to debug) your code with a custom combination of file name, command line options, debug mode, current working directory, and environment variables.

On the menu bar, choose **Run, Run Configurations, New Run Configuration**. On the run configuration tab that is displayed, do the following:

1. In the box next to **Run** and **Restart**, type the name that will display on the **Run, Run Configurations** menu for this run configuration.

1. In the **Command** box, type any custom command line options you want to use.

1. To have this run configuration use the runner's predefined debugging settings, choose **Run in Debug Mode**. The bug icon will turn to green on a white background.

1. To have this run configuration use a specific working directory, choose **CWD**, choose the directory to use, and then choose **Select**.

1. To have this run configuration use specific environment variables, choose **ENV**, and then type the name and value of each environment variable.

To use this run configuration, open the file the corresponds to the code you want to run. Choose **Run, Run Configurations** on the menu bar, and then choose this run configuration's name. In the run configuration tab that displays, choose **Runner: Auto**, choose the runner you want to use, and then choose **Run**.

**Note**  
Any run configuration you create applies only to the environment you created that run configuration in. To add that run configuration to a separate environment, open the other environment, and then follow the preceding steps to create the same run configuration in that environment.

## Create a Builder or Runner
<a name="build-run-debug-create-builder-runner"></a>

This step shows how you can create your own builder or runner.

1. To create a builder, on the menu bar, choose **Run, Build System, New Build System**. To create a runner, on the menu bar, choose **Run, Run With, New Runner**.

1. On the builder tab (labeled **My Builder.build**) or runner tab (labeled **My Runner.run**) that is displayed, define the builder or runner. See [Define a Builder or Runner](build-run-debug-define-builder-runner.md).

1. After you define the builder or runner, choose **File, Save As**. For a builder, save the file with the `.build` extension in the `my-environment/.c9/builders` directory, where `my-environment` is the name of your environment. For a runner, save the file with the `.run` file extension in the `my-environment/.c9/runners` directory, where `my-environment` is the name of your environment. The file name you specify will be the name that is displayed on the **Run, Build System** menu (for a builder) or the **Run, Run With** menu (for a runner). Therefore, unless you specify a different file name, by default the display name will be **My Builder** (for a builder) or **My Runner** (for a runner).

To use this builder or runner, see [Build Your Project's Files](#build-run-debug-build) or [Run Your Code](#build-run-debug-run).

**Note**  
Any builder or runner you create applies only to the environment you created that builder or runner in. To add that run builder or runner to a separate environment, open the other environment, and then follow the preceding steps to create the same builder or runner in that environment.

# Define a Builder or Runner
<a name="build-run-debug-define-builder-runner"></a>

This topic shows how you can define a builder or runner. Before you define a builder or runner, make sure you have [created a builder or runner](build-run-debug.md#build-run-debug-create-builder-runner).



On the builder or runner tab that is displayed, use JSON to define the runner or builder. Start with the following code as a template.

For a builder, start with this code.

```
{
  "cmd": [],
  "info": "",
  "env": {},
  "selector": ""
}
```

For a runner, start with this code.

```
{
  "cmd": [],
  "script": "",
  "working_dir": "",
  "info": "",
  "env": {},
  "selector": "",
  "debugger": "",
  "debugport": ""
}
```

In the preceding code:
+  `cmd`: Represents a comma-separated list of strings for AWS Cloud9 to run as a single command.

  When AWS Cloud9 runs this command, each string in the list will be separated by a single space. For example, AWS Cloud9 will run `"cmd": [ "ls", "$file", "$args"]` as `ls $file $args`, where AWS Cloud9 will replace `$file` with the full path to the current file and `$args` with any arguments entered after the file name. For more information, see the list of supported variables later in this section.
+  `script`: Represents a bash script (which can also be specified as an array of lines as needed for readability) that the runner executes in the terminal.
+  `working_dir`: Represents the directory that the runner will run from.
+  `info`: Represents any string of text you want to display to the user at the beginning of the run. This string can contain variables, for example `Running $project_path$file_name...`, where AWS Cloud9 will replace `$project_path` with the directory path of the current file and `$file_name` with the name portion of the current file. See the list of supported variables later in this section.
+  `env`: Represents any array of command line arguments for AWS Cloud9 to use, for example:

  ```
  "env": {
    "LANG": "en_US.UTF-8",
    "SHLVL": "1"
  }
  ```
+  `selector`: Represents any regular expression that you want AWS Cloud9 to use to identify the file names that apply to this runner. For example, you could specify `source.py` for Python files.
+  `debugger`: Represents the name of any available debugger you want AWS Cloud9 to use that is compatible with this runner. For example, you could specify `v8` for the V8 debugger.
+  `debugport`: Represents the port number you want AWS Cloud9 to use during debugging. For example, you could specify `15454` for the port number to use.

The following table shows the variables you can use.


****  

|  **Variable**  |  **Description**  | 
| --- | --- | 
|   `$file_path`   |  The directory of the current file, for example, `/home/ec2-user/environment` or `/home/ubuntu/environment`.  | 
|   `$file`   |  The full path to the current file, for example, `/home/ec2-user/environment/hello.py` or `/home/ubuntu/environment/hello.py`.  | 
|   `$args`   |  Any arguments entered after the file name, for example, `"5" "9"`.  | 
|   `$file_name`   |  The name portion of the current file, for example, `hello.py`.  | 
|   `$file_extension`   |  The extension of the current file, for example, `py`.  | 
|   `$file_base_name`   |  The name of the current file without the file extension, for example, `hello`.  | 
|   `$packages`   |  The full path to the packages folder.  | 
|   `$project`   |  The full path to the current project folder.  | 
|   `$project_path`   |  The directory of the current project file, for example, `/home/ec2-user/environment/` or `/home/ubuntu/environment/`.  | 
|   `$project_name`   |  The name of the current project file without the file extension, for example, `my-demo-environment`.  | 
|   `$project_extension`   |  The extension of the current project file.  | 
|   `$project_base_name`   |  The name of the current project file without the extension.  | 
|   `$hostname`   |  The hostname of the environment, for example, `192.0.2.0`.  | 
|   `$hostname_path`   |  The hostname of the environment with the relative path to the project file, for example, `https://192.0.2.0/hello.js`.  | 
|   `$url`   |  The full URL to access the environment, for example, `https://192.0.2.0.`.  | 
|   `$port`   |  The port assigned to the environment, for example, `8080`.  | 
|   `$ip`   |  The IP address to run a process against the environment, for example, `0.0.0.0`.  | 

As an example, the following builder file named `G++.build` defines a builder for GCC that runs the ** `g++` ** command with the `-o` option to compile the current file (for example, `hello.cpp`) into an object module. Then it links the object module into a program with the same name as the current file (for example, `hello`). Here the equivalent command is `g++ -o hello hello.cpp`.

```
{
  "cmd": [ "g++", "-o", "$file_base_name", "$file_name" ],
  "info": "Compiling $file_name and linking to $file_base_name...",
  "selector": "source.cpp"
}
```

As another example, the following runner file named `Python.run` defines a runner that uses Python to run the current file with any arguments that were provided. For example, if the current file is named `hello.py` and the arguments `5` and `9` were provided, the equivalent command is `python hello.py 5 9`.

```
{
  "cmd": [ "python", "$file_name", "$args" ],
  "info": "Running $file_name...",
  "selector": "source.py"
}
```

Finally, the following runner file named `Print Run Variables.run` defines a runner that simply outputs the value of each available variable and then stops.

```
{
  "info": "file_path = $file_path, file = $file, args = $args, file_name = $file_name, file_extension = $file_extension, file_base_name = $file_base_name, packages = $packages, project = $project, project_path = $project_path, project_name = $project_name, project_extension = $project_extension, project_base_name = $project_base_name, hostname = $hostname, hostname_path = $hostname_path, url = $url, port = $port, ip = $ip"
}
```

# Working with Custom Environment Variables in the AWS Cloud9 IDE
<a name="env-vars"></a>

The AWS Cloud9 Integrated Development Environment (IDE) supports setting custom environment variables. You can set custom environment variables in the AWS Cloud9 IDE in the following ways.
+  [Set Command-Level Custom Environment Variables](#env-vars-command-level) 
+  [Set Custom User Environment Variables in \$1/.bash\$1profile](#env-vars-bash-profile) 
+  [Set Local Custom Environment Variables](#env-vars-local) 
+  [Set Custom User Environment Variables in \$1/.bashrc](#env-vars-bashrc) 
+  [Set Custom Environment Variables in the ENV List](#env-vars-env-list) 

## Set Command-Level Custom Environment Variables
<a name="env-vars-command-level"></a>

You can set command-level custom environment variables as you run a command in your AWS Cloud9 development environment. To test this behavior, create a file named `script.sh` with the following code:

```
#!/bin/bash

echo $MY_ENV_VAR
```

If you run the following command, the terminal displays `Terminal session`:

```
MY_ENV_VAR='Terminal session' sh ./script.sh
```

If you set the custom environment variable by using multiple approaches described in this topic, then when you try to get the custom environment variable's value, this setting takes priority over all of the others.

## Set Custom User Environment Variables in \$1/.bash\$1profile
<a name="env-vars-bash-profile"></a>

You can set custom user environment variables in the `~/.bash_profile` file in your environment. To test this behavior, add the following code to the `~/.bash_profile` file in your environment:

```
export MY_ENV_VAR='.bash_profile file'
```

If you then run `sh ./script.sh` from the command line, the terminal displays `.bash_profile file`. (This assumes you created the `script.sh` file as described earlier.)

## Set Local Custom Environment Variables
<a name="env-vars-local"></a>

You can set local custom environment variables in a terminal session by running the ** `export` ** command. To test this behavior, run the following command in a terminal session:

```
export MY_ENV_VAR='Command line export'
```

If you then run `sh ./script.sh` from the command line, the terminal displays `Command line export`. (This assumes you created the `script.sh` file as described earlier.)

If you set the same custom environment variable with the ** `export` ** command and in your `~/.bash_profile` file, then when you try to get the custom environment variable's value, the ** `export` ** command setting takes priority.

## Set Custom User Environment Variables in \$1/.bashrc
<a name="env-vars-bashrc"></a>

You can set custom user environment variables in the `~/.bashrc` file in your environment. To test this behavior, add the following code to the `~/.bashrc` file in your environment:

```
export MY_ENV_VAR='.bashrc file'
```

If you then run `sh ./script.sh` from the command line, the terminal displays `.bashrc file`. (This assumes you created the `script.sh` file as described earlier.)

If you set the same custom environment variable with the ** `export` ** command and in your `~/.bashrc` file, then when you try to get the custom environment variable's value, the ** `export` ** command setting takes priority.

## Set Custom Environment Variables in the ENV List
<a name="env-vars-env-list"></a>

You can set custom environment variables in the **ENV** list on the **Run** tab.

To test this behavior, do the following:

1. On the menu bar, choose **Run**, **Run Configurations**, **New Run Configuration**.

1. On the **[New] - Idle** tab, Choose **Runner: Auto**, and then choose **Shell script**.

1. Choose **ENV**, and then type `MY_ENV_VAR` for **Name** and `ENV list` for **Value**.

1. For **Command**, type `./script.sh`.

1. Choose the **Run** button. the runner tab displays `ENV list`. (This assumes you created the `script.sh` file as described earlier.)

If you set the same custom environment variable in your `~/.bash_profile` file, with the ** `export` ** command, in your `~/.bashrc` file, and in the **ENV** list, then when you try to get the custom environment variable's value, the `~/.bash_profile` file setting takes first priority, followed by the ** `export` ** command setting, the `~/.bashrc` file setting, and the **ENV** list setting.

**Note**  
The **ENV** list is the only approach for getting and setting custom environment variables by using code, separate from a shell script.

# Working with project settings in the AWS Cloud9 IDE
<a name="settings-project"></a>

 *Project settings*, which apply only to the current AWS Cloud9 development environment, include the following kinds of settings:
+ Code editor settings, such as whether to use soft tabs and new file line ending
+ File types to ignore
+ The types of hints and warnings to display or suppress
+ Code and formatting settings for programming languages such as JavaScript, PHP, Python, and Go
+ The types of configurations to use when running and building code

Although project settings apply to only a single environment, you can apply the project settings for one environment to any other environment.
+  [View or change project settings](#settings-project-view) 
+  [Apply the current project settings for an environment to another environment](#settings-project-apply) 
+  [Customize your project settings](settings-project-change.md) 

## View or change project settings
<a name="settings-project-view"></a>

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. To view the project settings for the current environment, on the **Preferences** tab, in the side navigation pane, choose **Project Settings**.

1. To change the current project settings for the environment, change the settings that you want in the **Project Settings** pane.

For more information about how you can make changes in your project settings, see [Customize your project settings](settings-project-change.md).

## Apply the current project settings for an environment to another environment
<a name="settings-project-apply"></a>

1. In both the source and target environment, on the menu bar of the AWS Cloud9 IDE, choose **AWS Cloud9, Open Your Project Settings**.

1. In the source environment, copy the contents of the **project.settings** tab that's displayed.

1. In the target environment, overwrite the contents of the **project.settings** tab with the copied contents from the source environment.

1. In the target environment, save the **project.settings** tab.

# Customize your project settings
<a name="settings-project-change"></a>

These sections describe the kinds of project settings that you can change on the **Preferences** tab's **Project Settings** pane.
+  [EC2 instance](#settings-project-change-ec2-instance) 
+  [Code editor (Ace)](#settings-project-change-code-editor-ace) 
+  [Find in files](#settings-project-change-find-in-files) 
+  [Hints and warnings](#settings-project-change-hints-and-warnings) 
+  [JavaScript support](#settings-project-change-javascript-support) 
+  [Build](#settings-project-change-build) 
+  [Run and debug](#settings-project-change-run-and-debug) 
+  [Run configurations](#settings-project-change-run-configurations) 
+  [Code formatters](#settings-project-change-code-formatters) 
+  [TypeScript support](#settings-project-change-typescript-support) 
+  [PHP support](#settings-project-change-php-support) 
+  [Python support](#settings-project-change-python-support) 
+  [Go support](#settings-project-change-go-support) 

## EC2 instance
<a name="settings-project-change-ec2-instance"></a>

** **Stop my environment** **  
Choose when to automatically stop your environment's Amazon EC2 instance (if used) after you close all web browser instances that are connected to the IDE for that environment. You can choose a range of time periods from a week to 30 minutes. You can also choose never to automatically stop the Amazon EC2 instance after exiting the AWS Cloud9 IDE.  
If you want to stop the instance even sooner than 30 minutes after finishing with the IDE, you can [stop it manually using the console interface](stopping-instance-manually.md).

## Code editor (Ace)
<a name="settings-project-change-code-editor-ace"></a>

** **Soft tabs** **  
If selected, inserts the specified number of spaces instead of a tab character each time you press `Tab`.

** **Autodetect tab size on load** **  
If selected, AWS Cloud9 attempts to guess the tab size.

** **New file line endings** **  
The type of line endings to use for new files.  
Valid options include the following:  
+  **Windows (CRLF)** to end lines with a carriage return and then a line feed.
+  **Unix (LF)** to end lines with just a line feed.

** **On save, strip whitespace** **  
If selected, AWS Cloud9 attempts to remove what it considers to be unnecessary spaces and tabs from a file each time that file is saved.

## Find in files
<a name="settings-project-change-find-in-files"></a>

** **Ignore these Files** **  
When finding in files, the types of files that AWS Cloud9 ignores.

** **Maximum number of files to search (in 1000)** **  
When finding in files, the maximum number of files, in multiples of 1,000, that AWS Cloud9 finds in the current scope.

## Hints and warnings
<a name="settings-project-change-hints-and-warnings"></a>

** **Warning Level** **  
The minimum level of messages to enable.  
Valid values include the following:  
+  **Info** to enable informational, warning, and error messages.
+  **Warning** to enable just warning and error messages.
+  **Error** to enable just error messages.

** **Mark Missing Optional Semicolons** **  
If enabled, AWS Cloud9 flags in a file each time it notices a semicolon that could be used in code, but that isn't used.

** **Mark Undeclared Variables** **  
If enabled, AWS Cloud9 flags in a file each time it notices an undeclared variable in code.

** **Mark Unused Function Arguments** **  
If enabled, AWS Cloud9 flags in a file each time it notices an unused argument in a function.

** **Ignore Messages Matching Regex** **  
AWS Cloud9 will not display any messages matching the specified regular expression. For more information, see [Writing a regular expression pattern](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Writing_a_regular_expression_pattern) in the *JavaScript Regular Expressions* topic on the Mozilla Developer Network.

## JavaScript support
<a name="settings-project-change-javascript-support"></a>

** **Customize JavaScript warnings with .eslintrc** **  
If enabled, AWS Cloud9 uses an `.eslintrc` file to determine which JavaScript warnings to enable or disable. For more information, see [Configuration File Formats](http://eslint.org/docs/user-guide/configuring#configuration-file-formats) on the ESLint website.

** **JavaScript library code completion** **  
The JavaScript libraries that AWS Cloud9 uses to attempt to suggest or do automatic code completion.

** **Format Code on Save** **  
If enabled, AWS Cloud9 attempts to format the code in a JavaScript file every time that file is saved.

** **Use builtin JSBeautify as code formatter** **  
If enabled, AWS Cloud9 uses its internal implementation of JSBeautify to attempt to increase the readability of code in files.

** **Custom code formatter** **  
The command for AWS Cloud9 to attempt to run when formatting code in a JavaScript file.

## Build
<a name="settings-project-change-build"></a>

** **Builder path in environment** **  
The path to any custom build configurations.

## Run and debug
<a name="settings-project-change-run-and-debug"></a>

** **Runner path in environment** **  
The path to any custom run configurations.

** **Preview URL** **  
The URL to use to preview applications for the environment.

## Run configurations
<a name="settings-project-change-run-configurations"></a>

The custom run configurations for this environment.

** **Remove selected configs** **  
Deletes the selected run configurations.

** **Add new config** **  
Creates a new run configuration.

** **Set as default** **  
Sets the selected run configuration as the default run configuration.

## Code formatters
<a name="settings-project-change-code-formatters"></a>

** **JSBeautify settings** **  
Settings for increasing the readability of code in files.    
** **Format Code on Save** **  
If enabled, AWS Cloud9 attempts to apply JSBeautify settings whenever code files are saved.  
** **Use JSBeautify for JavaScript** **  
If enabled, AWS Cloud9 attempts to apply JSBeautify settings whenever JavaScript files are saved.  
** **Preserve empty lines** **  
If enabled, AWS Cloud9 doesn't remove empty lines in code files.  
** **Keep array indentation** **  
If enabled, AWS Cloud9 preserves the indentation of element declarations in arrays in code files.  
** **JSLint strict whitespace** **  
If enabled, AWS Cloud9 attempts to apply JSLint whitespace rules in code files. For more information, see "Whitespace" in [JSLint Help](http://jslint.com/help.html).  
** **Braces** **  
Specifies the alignment of braces in code.  
Valid values include the following:  
+  **Braces with control statement** to move each beginning and end brace to align with its related control statement, as needed.

  For example, this code is formatted as so:

  ```
  for (var i = 0; i < 10; i++) { if (i == 5) { console.log("Halfway done.") }}
  ```

  Turns into this code when the file is saved:

  ```
  for (var i = 0; i < 10; i++) {
     if (i == 5) {
        console.log("Halfway done.")
     }
  }
  ```
+  **Braces on own line** to move each brace to its own line, as needed.

  For example, this code is formatted as so:

  ```
  for (var i = 0; i < 10; i++) { if (i == 5) { console.log("Halfway done.") }}
  ```

  Turns into this code when the file is saved:

  ```
  for (var i = 0; i < 10; i++) {if (i == 5)
    {
       console.log("Halfway done.")
    }
    }
  ```
+  **End braces on own line** to move each end brace to its own line, as needed.

  For example, this code is formatted as so:

  ```
  for (var i = 0; i < 10; i++) {
    if (i == 5) { console.log("Halfway done.") }
  }
  ```

  Turns into this code when the file is saved:

  ```
  for (var i = 0; i < 10; i++) {
     if (i == 5) {
        console.log("Halfway done.")
     }
  }
  ```  
** **Preserve inline blocks** **  
If enabled, AWS Cloud9 doesn't attempt to move the beginning and ending braces for inline blocks to separate lines, if those braces are on the same line.  
** **Space before conditionals** **  
If enabled, AWS Cloud9 adds a space before each conditional declaration, as needed.  
** **Unescape strings** **  
If enabled, AWS Cloud9 converts escaped strings to their unescaped equivalents. For example, converts `\n` to a newline character and converts `\r` to a carriage return character.  
** **Indent inner HTML** **  
If enabled, AWS Cloud9 indents `<head>` and `<body>` sections in HTML code.

## TypeScript support
<a name="settings-project-change-typescript-support"></a>

** **Format Code on Save** **  
If enabled, AWS Cloud9 attempts to format TypeScript code whenever TypeScript files are saved.

** **Custom code formatter** **  
The path to any custom code formatting configuration for TypeScript code.

## PHP support
<a name="settings-project-change-php-support"></a>

** **Enable PHP code completion** **  
If enabled, AWS Cloud9 attempts to complete PHP code.

** **PHP completion include paths** **  
Locations that AWS Cloud9 uses to attempt to help complete PHP code. For example, if you have custom PHP files that you want AWS Cloud9 to use for completion, and those files are somewhere in the `~/environment` directory, add `~/environment` to this path.

** **Format Code on Save** **  
If enabled, AWS Cloud9 attempts to format PHP code whenever PHP files are saved.

** **Custom code formatter** **  
The path to any custom code formatting configuration for PHP code.

## Python support
<a name="settings-project-change-python-support"></a>

** **Enable Python code completion** **  
If enabled, AWS Cloud9 attempts to complete Python code. To set the paths for AWS Cloud9 to use to complete Python code, use the **PYTHONPATH** setting.

** **Python version** **  
Specifies the version of Python to use.

** **Pylint command line options** **  
Options for AWS Cloud9 to use for Pylint with Python code. For more information, see the [Pylint User Manual](https://pylint.readthedocs.io/en/latest/) on the Pylint website.

** **PYTHONPATH** **  
The paths to Python libraries and packages for AWS Cloud9 to use. For example, if you have custom Python libraries and packages in the `~/environment` directory, add `~/environment` to this path.

** **Format Code on Save** **  
If enabled, AWS Cloud9 attempts to format Python code whenever Python files are saved.

** **Custom code formatter** **  
The path to any custom code formatting configuration for Python code.

## Go support
<a name="settings-project-change-go-support"></a>

** **Enable Go code completion** **  
If enabled, AWS Cloud9 attempts to complete Go code.

** **Format Code on Save** **  
If enabled, AWS Cloud9 attempts to format Go code whenever Go files are saved.

** **Custom code formatter** **  
The path to any custom code formatting configuration for Go code.

# Manually stopping your environment's EC2 instance
<a name="stopping-instance-manually"></a>

The [EC2 Instance](settings-project-change.md#settings-project-change-ec2-instance) setting allows you to automatically stop your environment's Amazon EC2 instance as quickly as 30 minutes after you close all web browser instances that are connected to the IDE.

You also can manually stop the instance immediately using the console.

To manually stop an environment's EC2 instance, choose the following steps:

1. After you closed all web browser instances that are connected to the IDE, choose **Your environments** in the AWS Cloud9 console.

1. Choose the button in the top-right of the pane that shows details of the environment that you were using, and choose **View details**.

1. In **Environment details**, under **EC2 Instance**, choose **Go To Instance**.

1. In the Amazon EC2 console, under **Instance state**, choose the check box to select your environment's instance. The **Instance state** might indicate that the instance is still running.

1. Choose **Instance state** and select **Stop instance**.

1. When prompted for confirmation, choose **Stop**. It can take a few minutes for the instance to stop.

# Working with user settings in the AWS Cloud9 IDE
<a name="settings-user"></a>

*User settings* are settings that apply across each AWS Cloud9 development environment that's associated with your AWS Identity and Access Management (IAM user). They include the following settings:
+ General user interface settings such as enabling animations and marking changed tabs
+ File system navigation settings
+ File find and search settings
+ Color schemes for terminal sessions and output
+ Additional code editor settings, such as font sizes, code folding, full line selection, scrolling animations, and font sizes

As you change your user settings, AWS Cloud9 pushes those changes to the cloud and associates them with your IAM user. AWS Cloud9 also continually scans the cloud for changes to user settings that are associated with your IAM user, and applies those settings to your current environment. You can use this to experience the same look and feel no matter what AWS Cloud9 environment you're working in.

**Note**  
To store and retrieve your IDE settings, AWS Cloud9 uses the internal APIs `GetUserSettings` and `UpdateUserSettings`.

You can share your user settings with other users, as follows:
+  [View or change your user settings](#settings-user-view) 
+  [Share your user settings with another user](#settings-user-share) 
+  [Customize your user settings](settings-user-change.md) 

## View or change your user settings
<a name="settings-user-view"></a>

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. To view your user settings across each of your environments, on the **Preferences** tab, in the side navigation pane, choose **User Settings**.

1. In the **User Settings** pane, change your user settings across each of your environments.

1. To apply your changes to any other of your environments, simply open that environment. If that environment is already open, refresh the web browser tab for that environment.

For more information about how you can make changes in your user settings, see [Customize your user settings](settings-user-change.md).

## Share your user settings with another user
<a name="settings-user-share"></a>

1. In both the source and target environment, on the menu bar of the AWS Cloud9 IDE, choose **AWS Cloud9, Open Your User Settings**.

1. In the source environment, copy the contents of the **user.settings** tab that's displayed.

1. In the target environment, overwrite the contents of the **user.settings** tab with the copied contents from the source environment.

1. In the target environment, save the **user.settings** tab.

# Customize your user settings
<a name="settings-user-change"></a>

These sections describe the kinds of user settings that you can change in the **User Settings** pane on the **Preferences** tab:
+  [General](#settings-user-change-general) 
+  [User interface](#settings-user-change-user-interface) 
+  [Collaboration](#settings-user-change-collaboration) 
+  [Tree and Go Panel](#settings-user-change-tree-and-navigate) 
+  [Find in files](#settings-user-change-find-in-files) 
+  [Meta data](#settings-user-change-meta-data) 
+  [Watchers](#settings-user-change-watchers) 
+  [Terminal](#settings-user-change-terminal) 
+  [Output](#settings-user-change-output) 
+  [Code editor (Ace)](#settings-user-change-code-editor-ace) 
+  [Input](#settings-user-change-input) 
+  [Hints and warnings](#settings-user-change-hints-and-warnings) 
+  [Run and debug](#settings-user-change-run-and-debug) 
+  [Preview](#settings-user-change-preview) 
+  [Build](#settings-user-change-build) 

## General
<a name="settings-user-change-general"></a>

** **Reset to Factory Settings** **  
If you choose the **Reset to Default** button, AWS Cloud9 resets all of your user settings to the AWS Cloud9 default user settings. To confirm, choose **Reset settings**.  
You can't undo this action.

** **Warn Before Exiting** **  
Whenever you attempt to close the IDE, AWS Cloud9 asks you to confirm that you want to exit.

## User interface
<a name="settings-user-change-user-interface"></a>

** **Enable UI Animations** **  
AWS Cloud9 uses animations in the IDE.

** **Use an Asterisk (\$1) to Mark Changed Tabs** **  
AWS Cloud9 adds an asterisk (**\$1**) to tabs that have changes but their content isn't saved yet.

** **Display Title of Active Tab as Browser Title** **  
AWS Cloud9 changes the title of the associated web browser tab to the title of the active tab (for example, **Untitled1**, **hello.js**, **Terminal**, **Preferences**).

** **Automatically Close Empty Panes** **  
Whenever you reload an environment, AWS Cloud9 automatically closes any panes it considers are empty.

** **Environment Files Icon and Selection Style** **  
The icon AWS Cloud9 uses for environment files, and the file selection behaviors AWS Cloud9 uses.  
Valid values include:  
+  **Default** – AWS Cloud9 uses default icons and default file selection behaviors.
+  **Alternative** – AWS Cloud9 uses alternative icons and alternative file selection behaviors.

## Collaboration
<a name="settings-user-change-collaboration"></a>

** **Disable collaboration security warning** **  
When a read/write member is added to an environment, AWS Cloud9 doesn't display the security warning dialog box.

** **Show Authorship Info** **  
AWS Cloud9 underlines text that's entered by other environment members with related highlights in the gutter.

## Tree and Go panel
<a name="settings-user-change-tree-and-navigate"></a>

** **Scope Go to Anything to Favorites** **  
**Go to File** in the **Go** window displays results scoped only to **Favorites** in the **Environment** window.

** **Enable Preview on Tree Selection** **  
AWS Cloud9 displays the chosen file with a single click instead of a double click.

** **Hidden File Pattern** **  
The types of files for AWS Cloud9 to treat as hidden.

** **Reveal Active File in Project Tree** **  
AWS Cloud9 highlights the active file in the **Environment** window.

** **Download Files As** **  
The behavior for AWS Cloud9 to use when downloading files.  
Valid values include the following:  
+  **auto** – AWS Cloud9 downloads files without modification.
+  **tar.gz** – AWS Cloud9 downloads files as compressed TAR files.
+  **zip** – AWS Cloud9 downloads files as .zip files.

## Find in Files
<a name="settings-user-change-find-in-files"></a>

** **Search In This Path When 'Project' Is Selected** **  
On the find in files bar, when **Project** is selected for the search scope, the path to search in.

** **Show Full Path in Results** **  
Displays the full path to each matching file in the **Search Results** tab.

** **Clear Results Before Each Search** **  
Clears the **Search Results** tab of the results of any previous searches before the current search begins.

** **Scroll Down as Search Results Come In** **  
Scrolls the **Search Results** tab to the bottom of the list of results as search results are identified.

** **Open Files when Navigating Results with (Up and Down)** **  
As the up and down arrow keys are pressed in the **Search Results** tab within the list of results, opens each matching file.

## Meta Data
<a name="settings-user-change-meta-data"></a>

** **Maximum of Undo Stack Items in Meta Data** **  
The maximum number of items that AWS Cloud9 keeps in its list of actions that can be undone.

## Watchers
<a name="settings-user-change-watchers"></a>

** **Auto-Merge Files When a Conflict Occurs** **  
AWS Cloud9 attempts to automatically merge files whenever a merge conflict happens.

## Terminal
<a name="settings-user-change-terminal"></a>

** **Text Color** **  
The color of text in **Terminal** tabs.

** **Background Color** **  
The background color in **Terminal** tabs.

** **Selection Color** **  
The color of selected text in **Terminal** tabs.

** **Font Family** **  
The text font style in **Terminal** tabs.

** **Font Size** **  
The size of text in **Terminal** tabs.

** **Antialiased Fonts** **  
AWS Cloud9 attempts to smooth the display of text in **Terminal** tabs.

** **Blinking Cursor** **  
AWS Cloud9 continuously blinks the cursor in **Terminal** tabs.

** **Scrollback** **  
The number of lines that you can scroll up or back through in **Terminal** tabs.

** **Use AWS Cloud9 as the Default Editor** **  
Uses AWS Cloud9 as the default text editor.

## Output
<a name="settings-user-change-output"></a>

** **Text Color** **  
The color of text in tabs that display output.

** **Background Color** **  
The background color of text in tabs that display output.

** **Selection Color** **  
The color of selected text in tabs that display output.

** **Warn Before Closing Unnamed Configuration** **  
AWS Cloud9 prompts you to save any unsaved configuration tab before it's closed.

** **Preserve log between runs** **  
AWS Cloud9 keeps a log of all attempted runs.

## Code editor (Ace)
<a name="settings-user-change-code-editor-ace"></a>

** **Auto-pair Brackets, Quotes, etc.** **  
AWS Cloud9 attempts to add a matching closing character for each related starting character that is typed in editor tabs, such as for brackets, quotation marks, and braces.

** **Wrap Selection with Brackets, Quote, etc.** **  
AWS Cloud9 attempts to insert a matching closing character at the end of text in editor tabs after the text is selected and a related started character is typed, such as for brackets, quotation marks, and braces.

** **Code Folding** **  
AWS Cloud9 attempts to show, expand, hide, or collapse sections of code in editor tabs according to related code syntax rules.

** **Fade Fold Widgets** **  
AWS Cloud9 displays code folding controls in the gutter whenever you pause the mouse over those controls in editor tabs.

** **Copy With Empty Selection** **  
AWS Cloud9 enables you to Copy and or Cut text and this option determines if empty text will be copied to the clipboard. 

** **Full Line Selection** **  
AWS Cloud9 selects an entire line that's triple-clicked in editor tabs.

** **Highlight Active Line** **  
AWS Cloud9 highlights the entire active line in editor tabs.

** **Highlight Gutter Line** **  
AWS Cloud9 highlights the location in the gutter next to the active line in editor tabs.

** **Show Invisible Characters** **  
AWS Cloud9 displays what it considers to be invisible characters in editor tabs, for example, carriage returns and line feeds, spaces, and tabs.

** **Show Gutter** **  
AWS Cloud9 displays the gutter.

** **Show Line Numbers** **  
The behavior for displaying line numbers in the gutter.  
Valid values include the following:  
+  **Normal** – Display line numbers.
+  **Relative** – Display line numbers relative to the active line.
+  **None** – Hide line numbers.

** **Show Indent Guides** **  
AWS Cloud9 displays guides to more easily visualize indented text in editor tabs.

** **Highlight Selected Word** **  
AWS Cloud9 selects an entire word that's double-clicked in an editor tab.

** **Scroll Past the End of the Document** **  
The behavior for allowing the user to scroll past the end of the current file in editor tabs.  
Valid values include the following:  
+  **Off** – Do not allow any scrolling past the end of the current file.
+  **Half Editor Height** – Allow scrolling past the end of the current file to up to half the editor's screen height.
+  **Full Editor Height** – Allow scrolling past the end of the current file to up to the editor's full screen height.

** **Animate Scrolling** **  
AWS Cloud9 applies animation behaviors during scrolling actions in editor tabs.

** **Font Family** **  
The style of font to use in editor tabs.

** **Font Size** **  
The size of the font to use in editor tabs.

** **Antialiased Fonts** **  
AWS Cloud9 attempts to smooth the display of text in editor tabs.

** **Show Print Margin** **  
Displays a vertical line in editor tabs after the specified character location.

** **Mouse Scroll Speed** **  
The relative speed of mouse scrolling in editor tabs. Larger values result in faster scrolling.

** **Cursor Style** **  
The style and behavior of the pointer in editor tabs.  
Valid values include:  
+  **Ace** – Display the pointer as a vertical bar that is relatively wider than **Slim**.
+  **Slim** – Display the pointer as a relatively slim vertical bar.
+  **Smooth** – Display the pointer as a vertical bar that is relatively wider than **Slim** and that blinks more smoothly than **Slim**.
+  **Smooth and Slim** – Display the pointer as a relatively slim vertical bar that blinks more smoothly than **Slim**.
+  **Wide** – Display the pointer as a relatively wide vertical bar.

 **Merge Undo Deltas** 
+  **Always** – Allow merge conflicts to be reverted.
+  **Never** – Never allow merge conflicts to be reverted.
+  **Timed** – Allow merge conflicts to be reverted after a specific period.

** **Enable Wrapping For New Documents** **  
AWS Cloud9 wraps code in new files.

## Input
<a name="settings-user-change-input"></a>

** **Complete As You Type** **  
AWS Cloud9 attempts to display possible text completions as you type.

** **Complete On Enter** **  
AWS Cloud9 attempts to display possible text completions after you press **Enter**.

** **Highlight Variable Under Cursor** **  
AWS Cloud9 highlights all references in code to the selected variable.

** **Use Cmd-Click for Jump to Definition** **  
AWS Cloud9 goes to any original definition for code that's selected while pressing and holding **Command** for Mac or **Ctrl** for Windows.

## Hints and warnings
<a name="settings-user-change-hints-and-warnings"></a>

** **Enable Hints and Warnings** **  
AWS Cloud9 displays applicable hint and warning messages.

** **Show Available Quick Fixes on Click** **  
AWS Cloud9 displays a tool tip with refactoring suggestions when you click on a keyword within your code.

** **Ignore Messages Matching Regex** **  
AWS Cloud9 doesn't display any messages that match the specified regular expression. For more information, see [Writing a regular expression pattern](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Writing_a_regular_expression_pattern) in the *JavaScript Regular Expressions* topic on the Mozilla Developer Network.

## Run and debug
<a name="settings-user-change-run-and-debug"></a>

** **Save All Unsaved Tabs Before Running** **  
Before running the associated code, AWS Cloud9 attempts to save all unsaved files with open tabs.

## Preview
<a name="settings-user-change-preview"></a>

** **Preview Running Apps** **  
AWS Cloud9 attempts to display a preview of the output for the code in the active tab whenever the **Preview** button is chosen.

** **Default Previewer** **  
The format AWS Cloud9 uses to preview code output.  
Valid values include:  
+  **Raw** – Attempt to display code output in a plain format.
+  **Browser** – Attempt to display code output in a format that's preferred for web browsers.

** **When Saving Reload Previewer** **  
The behavior AWS Cloud9 uses for previewing code output whenever a code file is saved.  
Valid values include the following:  
+  **Only on Ctrl-Enter** – Attempt to preview code output whenever **Ctrl\$1Enter** is pressed for the current code tab.
+  **Always** – Attempt to preview code output whenever a code file is saved.

## Build
<a name="settings-user-change-build"></a>

** **Automatically Build Supported Files** **  
AWS Cloud9 attempts to automatically build the current code if a build action is started and the code is in a supported format.

# Working with AWS project and user settings in the AWS Cloud9 IDE
<a name="settings-aws"></a>

AWS service settings, located in the **AWS Settings** pane of the **Preferences** tab, include the following settings:
+ Which AWS Region to use for the **AWS Resources** window
+ Whether to use AWS managed temporary credentials
+ Whether to display the AWS Serverless Application Model (AWS SAM) template editor in plain text or visual mode

To view or change these settings, choose **AWS Cloud9, Preferences** in the menu bar of an IDE for an environment.

In the following lists, project-level settings apply only to the current AWS Cloud9 development environment. In contrast, user-level settings apply across each environment associated with your IAM user. For more information, see [Apply the Current Project Settings for an Environment to Another Environment](settings-project.md#settings-project-apply) and [Share Your User Settings with Another User](settings-user.md#settings-user-share).
+  [Project-Level Settings](#settings-aws-project) 
+  [User-Level Settings](#settings-aws-user) 

## Project-level settings
<a name="settings-aws-project"></a>

** **AWS Region** **  
Which AWS Region to use for the **Lambda** section of the **AWS Resources** window.

** **AWS managed temporary credentials** **  
If turned on, AWS managed temporary credentials are used when you call AWS services from the AWS CLI, the AWS CloudShell, or AWS SDK code from an environment. For more information, see [AWS Managed Temporary Credentials](security-iam.md#auth-and-access-control-temporary-managed-credentials).

## User-level settings
<a name="settings-aws-user"></a>

** **Use AWS SAM visual editor** **  
If turned on, the AWS Serverless Application Model (AWS SAM) template editor is displayed in visual mode when you use the **Lambda** section of the **AWS Resources** window. If turned off, the editor is displayed in text mode.

# Working with Keybindings in the AWS Cloud9 IDE
<a name="settings-keybindings"></a>

*Keybindings* define your shortcut key combinations. Keybindings apply across each AWS Cloud9 development environment that is associated with your IAM user. As you make changes to your keybindings, AWS Cloud9 pushes those changes to the cloud, and associates them with your IAM user. AWS Cloud9 also continually scans the cloud for changes to keybindings that are associated with your IAM user, and applies those changes to your current environment.

You can share your keybindings with other users.
+  [View or Change Your Keybindings](#settings-keybindings-view) 
+  [Share Your Keybindings with Another User](#settings-keybindings-share) 
+  [Change Your Keyboard Mode](#settings-keybindings-mode) 
+  [Change Your Operating System Keybindings](#settings-keybindings-os) 
+  [Change Specific Keybindings](#settings-keybindings-change) 
+  [Remove All of Your Custom Keybindings](#settings-keybindings-reset) 

## View or change your Keybindings
<a name="settings-keybindings-view"></a>

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. To view your keybindings across each environment of yours, on the **Preferences** tab, in the side navigation pane, choose **Keybindings**.

1. To change your keybindings across each environment of yours, in the **Keybindings** pane, change the settings that you want.

1. To apply your changes to any environment, simply open that environment. If that environment is already open, refresh the web browser tab for that environment.

For more information, see the following:
+  [MacOS Default Keybindings Reference](keybindings-default-apple-osx.md) 
+  [MacOS Vim Keybindings Reference](keybindings-vim-apple-osx.md) 
+  [MacOS Emacs Keybindings Reference](keybindings-emacs-apple-osx.md) 
+  [MacOS Sublime Keybindings Reference](keybindings-sublime-apple-osx.md) 
+  [Windows / Linux Default Keybindings Reference](keybindings-default-windows-linux.md) 
+  [Windows / Linux Vim Keybindings Reference](keybindings-vim-windows-linux.md) 
+  [Windows / Linux Emacs Keybindings Reference](keybindings-emacs-windows-linux.md) 
+  [Windows / Linux Sublime Keybindings Reference](keybindings-sublime-windows-linux.md) 

## Share your Keybindings with another user
<a name="settings-keybindings-share"></a>

1. In both the source and target environment, on the menu bar of the AWS Cloud9 IDE, choose **AWS Cloud9, Open Your Keymap**.

1. In the source environment, copy the contents of the **keybindings.settings** tab that's displayed.

1. In the target environment, overwrite the contents of the **keybindings.settings** tab with the copied contents from the source environment.

1. In the target environment, save the **keybindings.settings** tab.

## Change your Keyboard mode
<a name="settings-keybindings-mode"></a>

You can change the keyboard mode that the AWS Cloud9 IDE uses for interacting with text in the editor across each environment associated with your IAM user.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, in the side navigation pane, choose **Keybindings**.

1. For **Keyboard Mode**, choose one of these keyboard modes:
   +  **Default** to use a set of default keybindings.
   +  **Vim** to use Vim mode. For more information, see the [Vim help files](https://vimhelp.appspot.com/) website.
   +  **Emacs** to use Emacs mode. For more information, see [The Emacs Editor](https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html) on the GNU Operating System website.
   +  **Sublime** to use Sublime mode. For more information, see the [Sublime Text Documentation](https://www.sublimetext.com/docs/3/) website.

## Change your operating system Keybindings
<a name="settings-keybindings-os"></a>

You can change the set of operating system keybindings that the AWS Cloud9 IDE recognizes across each environment associated with your IAM user.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, in the side navigation pane, choose **Keybindings**.

1. For **Operating System**, choose one of these operating systems:
   +  **Auto** for the AWS Cloud9 IDE to attempt to detect which set of operating system keybindings to use.
   +  **MacOS** for the AWS Cloud9 IDE to use the keybindings that are listed in the macOS format.
   +  **Windows / Linux** for the AWS Cloud9 IDE to use the keybindings that are listed in the Windows and Linux formats.

## Change specific Keybindings
<a name="settings-keybindings-change"></a>

You can change individual keybindings across each environment that's associated with your IAM user.

**To change one keybinding at the same time**

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, in the side navigation pane, choose **Keybindings**.

1. In the list of keybindings, open (double-click) the keybinding in the **Keystroke** column that you want to change.

1. Use the keyboard to specify the replacement key combination, and then press `Enter`.
**Note**  
To completely remove the current key combination, press `Backspace` for Windows or Linux, or `Delete` for macOS.

**To change multiple keybindings at the same time**

1. On the menu bar, choose **AWS Cloud9**, **Open Your Keymap**.

1. In the `keybindings.settings` file, define each keybinding to be changed. The following is example syntax.

   ```
   [
     {
       "command": "addfavorite",
       "keys": {
         "win": ["Ctrl-Alt-F"],
         "mac": ["Ctrl-Option-F"]
       }
     },
     {
       "command": "copyFilePath",
       "keys": {
         "win": ["Ctrl-Shift-F"],
         "mac": ["Alt-Shift-F"]
       }
     }
   ]
   ```

   In the example, `addFavorite` and `copyFilePath` are the names of keybindings in the **Keystroke** column in the **Keybindings** pane on the **Preferences** tab. The keybindings that you want are `win` and `mac` for Windows or Linux and macOS, respectively.

   To apply your changes, save the `keybindings.settings` file. Your changes appear in the **Keybindings** pane after a short delay.

## Remove all of your custom Keybindings
<a name="settings-keybindings-reset"></a>

You can remove all custom keybindings and restore all keybindings to their default values, across each environment that's associated with your IAM user.

**Warning**  
You *cannot* undo this action.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, in the side navigation pane, choose **Keybindings**.

1. Choose **Reset to Defaults**.

# Working with themes in the AWS Cloud9 IDE
<a name="settings-theme"></a>

A *theme* defines your overall IDE colors. This applies across each AWS Cloud9 development environment associated with your IAM user. As you make changes to your theme, AWS Cloud9 pushes those changes to the cloud, and associates them with your IAM user. AWS Cloud9 also continually scans the cloud for changes to the theme that's associated with your IAM user. AWS Cloud9 applies those changes to your current environment.
+  [View or change your theme](#settings-theme-view) 
+  [Overall theme settings you can change](#settings-theme-change) 
+  [Theme overrides](#settings-theme-code) 

## View or change your theme
<a name="settings-theme-view"></a>

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. To view your theme across each environment of yours, on the **Preferences** tab, in the side navigation pane, choose **Themes**.

1. To change your theme across each environment of yours, in the **Themes** pane, change the settings you want. To change portions of your theme by using code, choose the **your stylesheet** link.

1. To apply your changes to any environment of yours, open that environment. If that environment is already open, refresh the web browser tab for that environment.

## Overall theme settings you can change
<a name="settings-theme-change"></a>

You can change the following kinds of overall theme settings on the **Preferences** tab in the **Themes** pane.

** **Flat Theme** **  
Applies the built-in flat theme across the AWS Cloud9 IDE.

** **Classic Theme** **  
Applies the selected built-in classic theme across the AWS Cloud9 IDE.

** **Syntax Theme** **  
Applies the selected theme to code files across the AWS Cloud9 IDE.

## Theme overrides
<a name="settings-theme-code"></a>

**Important**  
AWS Cloud9 no longer supports the feature that allowed users to override IDE themes by updating the `styles.css` file. Users can continue to view, edit, and save the `styles.css` file using the editor. But, no theme overrides are applied when the AWS Cloud9 IDE loads.   
If AWS Cloud9 detects that the `styles.css` file has been modified, the following message is displayed in the IDE:  
Support for theme overrides has been discontinued. The contents of this styles.css file will no longer be applied on loading the AWS Cloud9 IDE.  
If you need to use style sheets to define themes for the IDE, please [contact us](https://aws.amazon.com/contact-us/) directly. 

# Managing initialization scripts in the AWS Cloud9 IDE
<a name="settings-init-script"></a>

**Important**  
AWS Cloud9 no longer supports the experimental feature that allowed users to customize an initialization script. This script was automatically run in the IDE. Users can continue to view, edit, and save the `init.js` file using the editor. But, customized initialization scripts are no longer permitted to run and can't modify the IDE's behavior.  
If AWS Cloud9 detects that the `init.js` file has been modified, the following message is displayed in the IDE:  
Support for initialization scripts has been discontinued. The contents of this init.js file will no longer be executed on loading the AWS Cloud9 IDE.  
If you need to run a custom initialization script for the IDE, [contact us](https://aws.amazon.com/contact-us/). 

An *initialization script* defines initialization code to run in your IDE after all plugins are loaded. This applies across each AWS Cloud9 development environment that's associated with your IAM user. AWS Cloud9 also continually scans for changes to the initialization script and alerts users if a modification occurred.

## Open your initialization script
<a name="settings-init-script-view"></a>

To open your initialization script, on the menu bar, choose **AWS Cloud9**, **Open Your Init Script**.

**Important**  
You can edit and save the `init.js` file using the editor, but your customized script isn't permitted to run in the IDE. 

# MacOS Default Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-default-apple-osx"></a>

This step shows how to choose MacOS Default Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Default**.

1. For **Operating System**, choose **MacOS**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of default keyboard mode keybindings for MacOS operating systems in the AWS Cloud9 Integrated Development Environment (IDE):
+  [General](#keybindings-default-apple-osx-general) 
+  [Tabs](#keybindings-default-apple-osx-tabs) 
+  [Panels](#keybindings-default-apple-osx-panels) 
+  [Code Editor](#keybindings-default-apple-osx-code-editor) 
+  [emmet](#keybindings-default-apple-osx-emmet) 
+  [Terminal](#keybindings-default-apple-osx-terminal) 
+  [Run and Debug](#keybindings-default-apple-osx-run-debug) 

## General
<a name="keybindings-default-apple-osx-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Command-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Control-Space` \$1 `Option-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Control-Shift-Space` \$1 `Option-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Command-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Command-X`   |   `cut`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Command-F`   |   `find`   | 
|  Select all find matches in the current document  |   `Control-Option-G`   |   `findAll`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Command-G`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Command-Shift-G`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Command-Shift-B`   |   `formatcode`   | 
|  Show the *go to line* box  |   `Command-L`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F3`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Command-Shift-U`   |   `lambdaUploadFunction`   | 
|  Create a new file  |   `Control-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Command-Option-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Command-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Command-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Command-Shift-Z` \$1 `Command-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Command-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Option-Command-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the *replace with* expression  |   `Option-Command-F`   |   `replace`   | 
|  Rerun your initialization script  |   `Command-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Command-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Control-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Option-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Command-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Command-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Shift-Command-F`   |   `searchinfiles`   | 
|  Show the **Process List** dialog box  |   `Command-Option-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Command-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-default-apple-osx-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Option-Control-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Option-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Command-Control-W`   |   `closepane`   | 
|  Close the current tab  |   `Option-W`   |   `closetab`   | 
|  Go one pane down  |   `Control-Command-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Control-Command-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Control-Command-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Control-Command-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Command-[`   |   `gototableft`   | 
|  Go one tab right  |   `Command-]`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Command-Option-Shift-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Command-Option-Shift-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Command-Option-Shift-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Command-Option-Shift-Up`   |   `movetabup`   | 
|  Go to the next pane  |   `Option-Esc`   |   `nextpane`   | 
|  Go to the next tab  |   `Option-Tab`   |   `nexttab`   | 
|  Go to the previous pane  |   `Option-Shift-Esc`   |   `previouspane`   | 
|  Go to the previous tab  |   `Option-Shift-Tab`   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Option-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Command-Shift-L`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Command-0`   |   `tab0`   | 
|  Go to the first tab  |   `Command-1`   |   `tab1`   | 
|  Go to the second tab  |   `Command-2`   |   `tab2`   | 
|  Go to the third tab  |   `Command-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Command-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Command-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Command-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Command-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Command-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Command`   |   `tab9`   | 

## Panels
<a name="keybindings-default-apple-osx-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Command-E\|Command-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Command-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Command-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Command-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Command-Shift-E`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `Control-Esc`   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Command-U`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-default-apple-osx-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Control-Option-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Control-Option-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Control-Option-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Control-Option-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Control-Option-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Control-Backspace \| Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent the selection one tab  |   `Control-]`   |   `blockindent`   | 
|  Outdent the selection one tab  |   `Control-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Command-Z \| Command-Shift-Z \| Command-Y`   |   `cancelBrowserUndoInAce`   | 
|  Center the selection  |   `Control-L`   |   `centerselection`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Command-Option-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Command-Option-Up`   |   `copylinesup`   | 
|  Delete one space  |   `Delete \| Control-Delete \| Shift-Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Command-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Command-Shift-L`   |   `expandtoline`   | 
|  Include up to next matching symbol in the selection  |   `Control-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code, or if a folded unit is selected, unfold it  |   `Command-Option-L \| Command-F1`   |   `fold`   | 
|  Fold all possibly foldable elements  |   `Control-Command-Option-0`   |   `foldall`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Command-Option-0`   |   `foldOther`   | 
|  Go down one line  |   `Down \| Control-N`   |   `golinedown`   | 
|  Go up one line  |   `Up \| Control-P`   |   `golineup`   | 
|  Go to the end of the file  |   `Command-End \| Command-Down`   |   `gotoend`   | 
|  Go left one space  |   `Left \| Control-B`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Command-Right \| End \| Control-E`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Command-Left \| Home \| Control-A`   |   `gotolinestart`   | 
|  Go to the next error  |   `F4`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down \| Control-V`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Shift-F4`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right \| Control-F`   |   `gotoright`   | 
|  Go to the start of the file  |   `Command-Home \| Command-Up`   |   `gotostart`   | 
|  Go one word to the left  |   `Option-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Option-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Go to the matching symbol in the current scope  |   `Control-P`   |   `jumptomatching`   | 
|  Increase the font size  |   `Command-+ \| Command-=`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Option-Shift-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Option-Shift-Up`   |   `modifyNumberUp`   | 
|  Move the selection down one line  |   `Option-Down`   |   `movelinesdown`   | 
|  Move the selection up one line  |   `Option-Up`   |   `movelinesup`   | 
|  Outdent the selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or turn off if on  |   `Insert`   |   `overwrite`   | 
|  Go down one page  |   `Option-Page Down`   |   `pagedown`   | 
|  Go up one page  |   `Option-Page Up`   |   `pageup`   | 
|  Remove the current line  |   `Command-D`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Control-K`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Command-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Option-Backspace \| Control-Option-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Option-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Command-Shift-E`   |   `replaymacro`   | 
|  Select all selectable content  |   `Command-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down \| Control-Shift-N`   |   `selectdown`   | 
|  Include the next space to the left in the selection  |   `Shift-Left \| Control-Shift-B`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Control-Option-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Control-Option-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Control-Option-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Control-Option-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Control-G`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Control-Shift-G`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Command-Shift-End \| Command-Shift-Down`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Command-Shift-Right \| Shift-End \| Control-Shift-E`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Command-Shift-Left \| Control-Shift-A`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Control-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Command-Shift-Home \| Command-Shift-Up`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up \| Control-Shift-Up`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Option-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Option-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Command--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `Command-Option-S`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Control-Option-L`   |   `splitIntoLines`   | 
|  Move the contents of the cursor to the end of the line, to its own line  |   `Control-O`   |   `splitline`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Command-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Command-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `F2`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Option-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Command-Option-E`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Control-W`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Control-Shift-U`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Control-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Control-T`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Command-Option-Shift-L \| Command-Shift-F1`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Command-Option-Shift-0`   |   `unfoldall`   | 

## emmet
<a name="keybindings-default-apple-osx-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Command-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Control-Option-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Command-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Command-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Control-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-default-apple-osx-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Option-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Option-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-default-apple-osx-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `Command-B`   |   `build`   | 
|  Resume the current paused process  |   `F8 \| Command-\`   |   `resume`   | 
|  Run or debug the current application  |   `Option-F5`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11 \| Command-;`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11 \| Command-Shift-'`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10 \| Command-'`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Control-Shift-C`   |   `stopbuild`   | 

# MacOS Vim Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-vim-apple-osx"></a>

This step shows how to choose MacOS Vim Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Vim**.

1. For **Operating System**, choose **MacOS**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of Vim keyboard mode keybindings for MacOS operating systems in the AWS Cloud9 IDE:
+  [General](#keybindings-vim-apple-osx-general) 
+  [Tabs](#keybindings-vim-apple-osx-tabs) 
+  [Panels](#keybindings-vim-apple-osx-panels) 
+  [Code Editor](#keybindings-vim-apple-osx-code-editor) 
+  [emmet](#keybindings-vim-apple-osx-emmet) 
+  [Terminal](#keybindings-vim-apple-osx-terminal) 
+  [Run and Debug](#keybindings-vim-apple-osx-run-debug) 

## General
<a name="keybindings-vim-apple-osx-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Command-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Control-Space` \$1 `Option-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Control-Shift-Space` \$1 `Option-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Command-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Command-X`   |   `cut`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Command-F`   |   `find`   | 
|  Select all find matches in the current document  |   `Control-Option-G`   |   `findAll`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Command-G`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Command-Shift-G`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Command-Shift-B`   |   `formatcode`   | 
|  Show the *go to line* box  |   `Command-L`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F3`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Command-Shift-U`   |   `lambdaUploadFunction`   | 
|  Create a new file  |   `Control-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Command-Option-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Command-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Command-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Command-Shift-Z` \$1 `Command-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Command-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Option-Command-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the *replace with* expression  |   `Option-Command-F`   |   `replace`   | 
|  Rerun your initialization script  |   `Command-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Command-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Control-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Option-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Command-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Command-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Shift-Command-F`   |   `searchinfiles`   | 
|  Show the **Process List** dialog box  |   `Command-Option-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Command-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-vim-apple-osx-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Option-Control-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Option-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Command-Control-W`   |   `closepane`   | 
|  Close the current tab  |   `Option-W`   |   `closetab`   | 
|  Go one pane down  |   `Control-Command-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Control-Command-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Control-Command-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Control-Command-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Command-[`   |   `gototableft`   | 
|  Go one tab right  |   `Command-]`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Command-Option-Shift-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Command-Option-Shift-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Command-Option-Shift-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Command-Option-Shift-Up`   |   `movetabup`   | 
|  Go to the next pane  |   `Option-Esc`   |   `nextpane`   | 
|  Go to the next tab  |   `Option-Tab`   |   `nexttab`   | 
|  Go to the previous pane  |   `Option-Shift-Esc`   |   `previouspane`   | 
|  Go to the previous tab  |   `Option-Shift-Tab`   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Option-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Command-Shift-L`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Command-0`   |   `tab0`   | 
|  Go to the first tab  |   `Command-1`   |   `tab1`   | 
|  Go to the second tab  |   `Command-2`   |   `tab2`   | 
|  Go to the third tab  |   `Command-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Command-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Command-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Command-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Command-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Command-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Command`   |   `tab9`   | 

## Panels
<a name="keybindings-vim-apple-osx-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Command-E\|Command-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Command-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Command-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Command-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Command-Shift-E`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `Control-Esc`   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Command-U`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-vim-apple-osx-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Control-Option-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Control-Option-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Control-Option-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Control-Option-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Control-Option-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Control-Backspace \| Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent selection one tab  |   `Control-]`   |   `blockindent`   | 
|  Outdent selection one tab  |   `Control-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Command-Z \| Command-Shift-Z \| Command-Y`   |   `cancelBrowserUndoInAce`   | 
|  Center the selection  |   `Control-L`   |   `centerselection`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Command-Option-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Command-Option-Up`   |   `copylinesup`   | 
|  Delete one space  |   `Delete \| Control-Delete \| Shift-Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Command-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Command-Shift-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in selection  |   `Control-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code, or if a folded unit is selected, unfold it  |   `Command-Option-L \| Command-F1`   |   `fold`   | 
|  Fold all possibly foldable elements  |   `Control-Command-Option-0`   |   `foldall`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Command-Option-0`   |   `foldOther`   | 
|  Go down one line  |   `Down \| Control-N`   |   `golinedown`   | 
|  Go up one line  |   `Up \| Control-P`   |   `golineup`   | 
|  Go to the end of the file  |   `Command-End \| Command-Down`   |   `gotoend`   | 
|  Go left one space  |   `Left \| Control-B`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Command-Right \| End \| Control-E`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Command-Left \| Home \| Control-A`   |   `gotolinestart`   | 
|  Go to the next error  |   `F4`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down \| Control-V`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Shift-F4`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right \| Control-F`   |   `gotoright`   | 
|  Go to the start of the file  |   `Command-Home \| Command-Up`   |   `gotostart`   | 
|  Go one word to the left  |   `Option-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Option-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Go to the matching symbol in the current scope  |   `Control-P`   |   `jumptomatching`   | 
|  Increase the font size  |   `Command-+ \| Command-=`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Option-Shift-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Option-Shift-Up`   |   `modifyNumberUp`   | 
|  Move selection down one line  |   `Option-Down`   |   `movelinesdown`   | 
|  Move selection up one line  |   `Option-Up`   |   `movelinesup`   | 
|  Outdent selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or turn off if on  |   `Insert`   |   `overwrite`   | 
|  Go down one page  |   `Option-Page Down`   |   `pagedown`   | 
|  Go up one page  |   `Option-Page Up`   |   `pageup`   | 
|  Remove the current line  |   `Command-D`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Control-K`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Command-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Option-Backspace \| Control-Option-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Option-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Command-Shift-E`   |   `replaymacro`   | 
|  Select all selectable content  |   `Command-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down \| Control-Shift-N`   |   `selectdown`   | 
|  Include the next space to the left in the selection  |   `Shift-Left \| Control-Shift-B`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Control-Option-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Control-Option-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Control-Option-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Control-Option-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Control-G`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Control-Shift-G`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Command-Shift-End \| Command-Shift-Down`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Command-Shift-Right \| Shift-End \| Control-Shift-E`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Command-Shift-Left \| Control-Shift-A`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Control-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Command-Shift-Home \| Command-Shift-Up`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up \| Control-Shift-P`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Option-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Option-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Command--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `Command-Option-S`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Control-Option-L`   |   `splitIntoLines`   | 
|  Move the contents of the cursor to the end of the line, to its own line  |   `Control-O`   |   `splitline`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Command-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Command-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `F2`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Option-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Command-Option-E`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Control-W`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Control-Shift-U`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Control-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Control-T`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Command-Option-Shift-L \| Command-Shift-F1`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Command-Option-Shift-0`   |   `unfoldall`   | 

## emmet
<a name="keybindings-vim-apple-osx-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Command-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Control-Option-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Command-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Command-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Control-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-vim-apple-osx-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Option-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Option-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-vim-apple-osx-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `Command-B`   |   `build`   | 
|  Resume the current paused process  |   `F8 \| Command-\`   |   `resume`   | 
|  Run or debug the current application  |   `Option-F5`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11 \| Command-;`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11 \| Command-Shift-'`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10 \| Command-'`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Control-Shift-C`   |   `stopbuild`   | 

# MacOS Emacs Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-emacs-apple-osx"></a>

This step shows how to choose MacOS Emacs Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Emacs**.

1. For **Operating System**, choose **MacOS**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of Emacs keyboard mode keybindings for MacOS operating systems in the AWS Cloud9 IDE:
+  [General](#keybindings-emacs-apple-osx-general) 
+  [Tabs](#keybindings-emacs-apple-osx-tabs) 
+  [Panels](#keybindings-emacs-apple-osx-panels) 
+  [Code Editor](#keybindings-emacs-apple-osx-code-editor) 
+  [emmet](#keybindings-emacs-apple-osx-emmet) 
+  [Terminal](#keybindings-emacs-apple-osx-terminal) 
+  [Run and Debug](#keybindings-emacs-apple-osx-run-debug) 

## General
<a name="keybindings-emacs-apple-osx-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Command-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Control-Space` \$1 `Option-Space`   |   `complete`   | 
|  Complete code, and then overwrite  |   `Control-Shift-Space` \$1 `Option-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Command-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Command-X`   |   `cut`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Command-F`   |   `find`   | 
|  Select all find matches in the current document  |   `Control-Option-G`   |   `findAll`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Command-G`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Command-Shift-G`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Command-Shift-B`   |   `formatcode`   | 
|  Show the *go to line* box  |   `Command-L`   |   `gotoline`   | 
|  Hide the find and replace bar, if shown  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F3`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Command-Shift-U`   |   `lambdaUploadFunction`   | 
|  Create a new file  |   `Control-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, then switch to the parent folder of the selected file in the list of files  |   `Command-Option-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Command-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Command-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Command-Shift-Z` \$1 `Command-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Command-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Option-Command-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the *replace with* expression  |   `Option-Command-F`   |   `replace`   | 
|  Rerun your initialization script  |   `Command-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Command-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Control-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Option-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Command-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Command-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Shift-Command-F`   |   `searchinfiles`   | 
|  Show the **Process List** dialog box  |   `Command-Option-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Command-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-emacs-apple-osx-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Option-Control-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Option-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Command-Control-W`   |   `closepane`   | 
|  Close the current tab  |   `Option-W`   |   `closetab`   | 
|  Go one pane down  |   `Control-Command-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Control-Command-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Control-Command-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Control-Command-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Command-[`   |   `gototableft`   | 
|  Go one tab right  |   `Command-]`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Command-Option-Shift-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Command-Option-Shift-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Command-Option-Shift-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Command-Option-Shift-Up`   |   `movetabup`   | 
|  Go to the next pane  |   `Option-Esc`   |   `nextpane`   | 
|  Go to the next tab  |   `Option-Tab`   |   `nexttab`   | 
|  Go to the previous pane  |   `Option-Shift-Esc`   |   `previouspane`   | 
|  Go to the previous tab  |   `Option-Shift-Tab`   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Option-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Command-Shift-L`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Command-0`   |   `tab0`   | 
|  Go to the first tab  |   `Command-1`   |   `tab1`   | 
|  Go to the second tab  |   `Command-2`   |   `tab2`   | 
|  Go to the third tab  |   `Command-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Command-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Command-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Command-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Command-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Command-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Command`   |   `tab9`   | 

## Panels
<a name="keybindings-emacs-apple-osx-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Command-E\|Command-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Command-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Command-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Command-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Command-Shift-E`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `Control-Esc`   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Command-U`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-emacs-apple-osx-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Control-Option-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Control-Option-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Control-Option-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Control-Option-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Control-Option-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Control-Backspace \| Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent selection one tab  |   `Control-]`   |   `blockindent`   | 
|  Outdent selection one tab  |   `Control-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Command-Z \| Command-Shift-Z \| Command-Y`   |   `cancelBrowserUndoInAce`   | 
|  Center the selection  |   `Control-L`   |   `centerselection`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Command-Option-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Command-Option-Up`   |   `copylinesup`   | 
|  Delete one space  |   `Delete \| Control-Delete \| Shift-Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Command-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Command-Shift-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in the selection  |   `Control-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code; if a folded unit is selected, unfold it  |   `Command-Option-L \| Command-F1`   |   `fold`   | 
|  Fold all possibly foldable elements  |   `Control-Command-Option-0`   |   `foldall`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Command-Option-0`   |   `foldOther`   | 
|  Go down one line  |   `Down \| Control-N`   |   `golinedown`   | 
|  Go up one line  |   `Up \| Control-P`   |   `golineup`   | 
|  Go to the end of the file  |   `Command-End \| Command-Down`   |   `gotoend`   | 
|  Go left one space  |   `Left \| Control-B`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Command-Right \| End \| Control-E`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Command-Left \| Home \| Control-A`   |   `gotolinestart`   | 
|  Go to the next error  |   `F4`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down \| Control-V`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Shift-F4`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right \| Control-F`   |   `gotoright`   | 
|  Go to the start of the file  |   `Command-Home \| Command-Up`   |   `gotostart`   | 
|  Go one word to the left  |   `Option-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Option-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Go to the matching symbol in the current scope  |   `Control-P`   |   `jumptomatching`   | 
|  Increase the font size  |   `Command-+ \| Command-=`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Option-Shift-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Option-Shift-Up`   |   `modifyNumberUp`   | 
|  Move the selection down one line  |   `Option-Down`   |   `movelinesdown`   | 
|  Move the selection up one line  |   `Option-Up`   |   `movelinesup`   | 
|  Outdent the selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or if on, turn off  |   `Insert`   |   `overwrite`   | 
|  Go down one page  |   `Option-Page Down`   |   `pagedown`   | 
|  Go up one page  |   `Option-Page Up`   |   `pageup`   | 
|  Remove the current line  |   `Command-D`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Control-K`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Command-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Option-Backspace \| Control-Option-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Option-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Command-Shift-E`   |   `replaymacro`   | 
|  Select all selectable content  |   `Command-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down \| Control-Shift-N`   |   `selectdown`   | 
|  Include the next space to the left in the selection  |   `Shift-Left \| Control-Shift-B`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Control-Option-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Control-Option-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Control-Option-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Control-Option-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Control-G`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Control-Shift-G`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Command-Shift-End \| Command-Shift-Down`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Command-Shift-Right \| Shift-End \| Control-Shift-E`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Command-Shift-Left \| Control-Shift-A`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Control-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Command-Shift-Home \| Command-Shift-Up`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up \| Control-Shift-Up`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Option-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Option-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Command--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `Command-Option-S`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Control-Option-L`   |   `splitIntoLines`   | 
|  Move the contents of the cursor to the end of the line, to its own line  |   `Control-O`   |   `splitline`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Command-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Command-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `F2`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Option-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Command-Option-E`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Control-W`   |   `toggleWordWrap`   | 
|  Change selection to all lowercase  |   `Control-Shift-U`   |   `tolowercase`   | 
|  Change selection to all uppercase  |   `Control-U`   |   `touppercase`   | 
|  Transpose selection  |   `Control-T`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Command-Option-Shift-L \| Command-Shift-F1`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Command-Option-Shift-0`   |   `unfoldall`   | 

## emmet
<a name="keybindings-emacs-apple-osx-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Command-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Control-Option-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Command-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Command-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Control-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-emacs-apple-osx-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Option-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Option-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-emacs-apple-osx-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `Command-B`   |   `build`   | 
|  Resume the current paused process  |   `F8 \| Command-\`   |   `resume`   | 
|  Run or debug the current application  |   `Option-F5`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11 \| Command-;`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11 \| Command-Shift-'`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10 \| Command-'`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Control-Shift-C`   |   `stopbuild`   | 

# MacOS Sublime Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-sublime-apple-osx"></a>

This step shows how to choose MacOS Sublime Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Sublime**.

1. For **Operating System**, choose **MacOS**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of Sublime keyboard mode keybindings for MacOS operating systems in the AWS Cloud9 IDE:
+  [General](#keybindings-sublime-apple-osx-general) 
+  [Tabs](#keybindings-sublime-apple-osx-tabs) 
+  [Panels](#keybindings-sublime-apple-osx-panels) 
+  [Code Editor](#keybindings-sublime-apple-osx-code-editor) 
+  [emmet](#keybindings-sublime-apple-osx-emmet) 
+  [Terminal](#keybindings-sublime-apple-osx-terminal) 
+  [Run and Debug](#keybindings-sublime-apple-osx-run-debug) 

## General
<a name="keybindings-sublime-apple-osx-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Command-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Control-Space` \$1 `Option-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Control-Shift-Space` \$1 `Option-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Command-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Command-X`   |   `cut`   | 
|  Delete from the cursor to start of the line  |   `Command-K Command-Backspace \| Command-Backspace`   |   `delete_to_hard_bol`   | 
|  Delete from the cursor to end of the line  |   `Command-K Command-K \| Command-Delete \| Control-K`   |   `delete_to_hard_eol`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Command-F`   |   `find`   | 
|  Highlight all matches for the selection  |   `Control-Command-G`   |   `find_all_under`   | 
|  Highlight next match for the selection  |   `Option-Command-G`   |   `find_under`   | 
|  Highlight around the cursor and all matches for the highlight  |   `Command-D`   |   `find_under_expand`   | 
|  Highlight around the cursor and outline all matches for the highlight  |   `Command-K Command-D`   |   `find_under_expand_skip`   | 
|  Highlight the previous match for the selection  |   `Shift-Option-Command-G`   |   `find_under_previous`   | 
|  Select all find matches in the current document  |   `Control-Option-G`   |   `findAll`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Command-G`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Shift-Command-G`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Control-Option-F`   |   `formatcode`   | 
|  Show the go to line box  |   `Control-G`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F12 \| Command-Option-Down`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Command-Shift-U`   |   `lambdaUploadFunction`   | 
|  Go to the end of the current word  |   `Option-Right`   |   `moveToWordEndRight`   | 
|  Go to the start of the current word  |   `Option-Left`   |   `moveToWordStartLeft`   | 
|  Create a new file  |   `Control-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Command-Option-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Command-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Command-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Command-Shift-Z` \$1 `Command-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Command-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Option-Command-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the replace with expression  |   `Command-Option-F`   |   `replace`   | 
|  Replace all find expression matches with replace with expression in the find and replace bar  |   `Control-Option-Enter`   |   `replaceall`   | 
|  Replace next find expression match with replace with expression in the find and replace bar  |   `Command-Option-E`   |   `replacenext`   | 
|  Rerun your initialization script  |   `Command-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Command-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Control-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Option-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Command-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Command-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Command-Shift-F`   |   `searchinfiles`   | 
|  Include from the cursor to the end of the word in the selection  |   `Option-Shift-Right`   |   `selectToWordEndRight`   | 
|  Include from the cursor to the start of the word in the selection  |   `Option-Shift-Left`   |   `selectToWordStartLeft`   | 
|  Show the **Process List** dialog box  |   `Command-Option-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Command-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-sublime-apple-osx-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Option-Control-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Option-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Command-Control-W`   |   `closepane`   | 
|  Close the current tab  |   `Option-W`   |   `closetab`   | 
|  Go one pane down  |   `Control-Command-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Control-Command-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Control-Command-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Control-Command-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Command-Shift-[ \| Command-Option-Left`   |   `gototableft`   | 
|  Go one tab right  |   `Command-Shift-] \| Command-Option-Right`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Command-Option-Shift-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Command-Option-Shift-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Command-Option-Shift-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Command-Option-Shift-Up`   |   `movetabup`   | 
|  Go to the next tab  |   `Control-Tab`   |   `nexttab`   | 
|  Go to the previous pane  |   `Option-Shift-Esc`   |   `previouspane`   | 
|  Go to the previous tab  |   `Control-Shift-Tab`   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Command-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Command-E`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Command-0`   |   `tab0`   | 
|  Go to the first tab  |   `Command-1`   |   `tab1`   | 
|  Go to the second tab  |   `Command-2`   |   `tab2`   | 
|  Go to the third tab  |   `Command-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Command-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Command-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Command-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Command-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Command-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Command`   |   `tab9`   | 

## Panels
<a name="keybindings-sublime-apple-osx-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Command-E\|Command-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Command-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Command-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Command-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Command-Shift-R`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `Control-``   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Command-K Command-B`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-sublime-apple-osx-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Control-Shift-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Control-Option-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Control-Shift-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Control-Option-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Control-Option-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Control-Backspace \| Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent the selection one tab  |   `Control-]`   |   `blockindent`   | 
|  Outdent the selection one tab  |   `Control-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Command-Z \| Command-Shift-Z \| Command-Y`   |   `cancelBrowserUndoInAce`   | 
|  Center the selection  |   `Command-K Command-C \| Control-L`   |   `centerselection`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Command-Option-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Command-Option-Up`   |   `copylinesup`   | 
|  Delete one space  |   `Delete \| Control-Delete \| Shift-Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Command-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Command-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in the selection  |   `Control-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code; if a folded unit is selected, unfold it  |   `Command-Option-L \| Command-F1`   |   `fold`   | 
|  Fold all possibly foldable elements  |   `Control-Command-Option-0`   |   `foldall`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Command-K Command-1`   |   `foldOther`   | 
|  Go down one line  |   `Down \| Control-N`   |   `golinedown`   | 
|  Go up one line  |   `Up \| Control-P`   |   `golineup`   | 
|  Go to the end of the file  |   `Command-End \| Command-Down`   |   `gotoend`   | 
|  Go left one space  |   `Left \| Control-B`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Command-Right \| End \| Control-E`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Command-Left \| Home \| Control-A`   |   `gotolinestart`   | 
|  Go to the next error  |   `Control-F6`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down \| Control-V`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Control-Shift-F6`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right \| Control-F`   |   `gotoright`   | 
|  Go to the start of the file  |   `Command-Home \| Command-Up`   |   `gotostart`   | 
|  Go one word to the left  |   `Option-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Option-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Combine selected lines into a single line  |   `Command-J`   |   `joinlines`   | 
|  Go to the matching symbol in the current scope  |   `Control-M`   |   `jumptomatching`   | 
|  Increase the font size  |   `Command-= \| Command-+`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Option-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Option-Up`   |   `modifyNumberUp`   | 
|  Move selection down one line  |   `Control-Command-Down`   |   `movelinesdown`   | 
|  Move selection up one line  |   `Control-Command-Up`   |   `movelinesup`   | 
|  Outdent selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or if on, turn off  |   `Insert`   |   `overwrite`   | 
|  Go down one page  |   `Option-Page Down`   |   `pagedown`   | 
|  Go up one page  |   `Option-Page Up`   |   `pageup`   | 
|  Delete the contents of the current line  |   `Control-Shift-K`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Control-K`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Command-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Option-Backspace \| Control-Option-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Option-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Control-Shift-Q`   |   `replaymacro`   | 
|  Select all selectable content  |   `Command-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down \| Control-Shift-N`   |   `selectdown`   | 
|  Include the next space to the left in the selection  |   `Shift-Left \| Control-Shift-B`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Control-Option-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Control-Option-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Control-Option-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Control-Option-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Control-G`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Control-Shift-G`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Command-Shift-End \| Command-Shift-Down`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Command-Shift-Right \| Shift-End \| Control-Shift-E`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Command-Shift-Left \| Control-Shift-A`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Control-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Command-Shift-Home \| Command-Shift-Up`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up \| Control-Shift-P`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Option-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Option-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Command-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Command--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `F5`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Command-Shift-L`   |   `splitIntoLines`   | 
|  Move the contents of the cursor to the end of the line, to its own line  |   `Control-O`   |   `splitline`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Command-Option-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Command-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `Command-Option-[`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Option-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Control-Q`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Control-W`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Command-K Command-L`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Command-K Command-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Control-T`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Command-Option-]`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Command-K Command-0 \| Command-K Command-J`   |   `unfoldall`   | 

## emmet
<a name="keybindings-sublime-apple-osx-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Command-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Control-Option-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Command-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Command-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Control-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-sublime-apple-osx-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Option-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Option-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-sublime-apple-osx-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `F7 \| Command-B`   |   `build`   | 
|  Resume the current paused process  |   `F8 \| Command-\`   |   `resume`   | 
|  Run or debug the current application  |   `Command-Shift-B`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11 \| Command-;`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11 \| Command-Shift-'`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10 \| Command-'`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Control-Break`   |   `stopbuild`   | 

# Windows / Linux Default Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-default-windows-linux"></a>

This step shows how to choose Windows / Linux Default Keybindings Referenc for AWS Cloud9..

1. On the menu bar, **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Default**.

1. For **Operating System**, choose **Windows / Linux**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of default keyboard mode keybindings for Windows / Linux operating systems in the AWS Cloud9 Integrated Development Environment (IDE).
+  [General](#keybindings-default-windows-linux-general) 
+  [Tabs](#keybindings-default-windows-linux-tabs) 
+  [Panels](#keybindings-default-windows-linux-panels) 
+  [Code Editor](#keybindings-default-windows-linux-code-editor) 
+  [emmet](#keybindings-default-windows-linux-emmet) 
+  [Terminal](#keybindings-default-windows-linux-terminal) 
+  [Run and Debug](#keybindings-default-windows-linux-run-debug) 

## General
<a name="keybindings-default-windows-linux-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Ctrl-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Ctrl-Space` \$1 `Alt-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Ctrl-Shift-Space` \$1 `Alt-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Ctrl-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Ctrl-X`   |   `cut`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Ctrl-F`   |   `find`   | 
|  Select all find matches in the current document  |   `Ctrl-Alt-K`   |   `findall`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Ctrl-K`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Ctrl-Shift-K`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Ctrl-Shift-B`   |   `formatcode`   | 
|  Show the go to line box  |   `Ctrl-G`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F3`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Ctrl-Shift-U`   |   `lambdaUploadFunction`   | 
|  Create a new file  |   `Alt-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Alt-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Ctrl-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Ctrl-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Ctrl-Shift-Z` \$1 `Ctrl-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Ctrl-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Ctrl-Alt-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the replace with expression  |   `Alt-Shift-F` \$1 `Ctrl-H`   |   `replace`   | 
|  Rerun your initialization script  |   `Ctrl-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Ctrl-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Ctrl-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Alt-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Ctrl-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Ctrl-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Ctrl-Shift-F`   |   `searchinfiles`   | 
|  Show the **Process List** dialog box  |   `Ctrl-Alt-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Ctrl-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-default-windows-linux-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Ctrl-Alt-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Alt-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Ctrl-W`   |   `closepane`   | 
|  Close the current tab  |   `Alt-W`   |   `closetab`   | 
|  Go one pane down  |   `Ctrl-Meta-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Ctrl-Meta-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Ctrl-Meta-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Ctrl-Meta-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Ctrl-[`   |   `gototableft`   | 
|  Go one tab right  |   `Ctrl-]`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Ctrl-Meta-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Ctrl-Meta-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Ctrl-Meta-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Ctrl-Meta-Up`   |   `movetabup`   | 
|  Go to the next pane  |   `Ctrl-``   |   `nextpane`   | 
|  Go to the next tab  |   `Ctrl-Tab \| Alt-``   |   `nexttab`   | 
|  Go to the previous pane  |   `Ctrl-Shift-``   |   `previouspane`   | 
|  Go to the previous tab  |   `Ctrl-Shift-Tab \| Alt-Shift-``   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Alt-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Ctrl-Shift-L`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Ctrl-0`   |   `tab0`   | 
|  Go to the first tab  |   `Ctrl-1`   |   `tab1`   | 
|  Go to the second tab  |   `Ctrl-2`   |   `tab2`   | 
|  Go to the third tab  |   `Ctrl-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Ctrl-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Ctrl-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Ctrl-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Ctrl-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Ctrl-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Ctrl-9`   |   `tab9`   | 

## Panels
<a name="keybindings-default-windows-linux-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Ctrl-E\|Ctrl-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Ctrl-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Ctrl-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Ctrl-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Ctrl-Shift-E`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `F6`   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Ctrl-I`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-default-windows-linux-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Ctrl-Alt-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Ctrl-Alt-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Ctrl-Alt-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Ctrl-Alt-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Ctrl-Alt-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent the selection one tab  |   `Ctrl-]`   |   `blockindent`   | 
|  Outdent the selection one tab  |   `Ctrl-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Ctrl-Z \| Ctrl-Shift-Z \| Ctrl-Y`   |   `cancelBrowserUndoInAce`   | 
|  Center the selection  |   `Ctrl-L`   |   `centerselection`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Alt-Shift-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Alt-Shift-Up`   |   `copylinesup`   | 
|  Cut the selection, or if there is no selection, delete one space  |   `Shift-Delete`   |   `cut_or_delete`   | 
|  Delete one space  |   `Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Ctrl-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Ctrl-Shift-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in the selection  |   `Ctrl-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code; if a folded unit is selected, unfold it  |   `Alt-L \| Ctrl-F1`   |   `fold`   | 
|  Fold all possibly foldable elements  |   `Ctrl-Command-Option-0`   |   `foldall`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Alt-0`   |   `foldOther`   | 
|  Go down one line  |   `Down`   |   `golinedown`   | 
|  Go up one line  |   `Up`   |   `golineup`   | 
|  Go to the end of the file  |   `Ctrl-End`   |   `gotoend`   | 
|  Go left one space  |   `Left`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Alt-Right \| End`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Alt-Left \| Home`   |   `gotolinestart`   | 
|  Go to the next error  |   `Alt-E`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Alt-Shift-E`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right`   |   `gotoright`   | 
|  Go to the start of the file  |   `Ctrl-Home`   |   `gotostart`   | 
|  Go one word to the left  |   `Ctrl-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Ctrl-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Go to the matching symbol in the current scope  |   `Ctrl-P`   |   `jumptomatching`   | 
|  Increase the font size  |   `Ctrl-+ \| Ctrl-=`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Ctrl-Shift-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Ctrl-Shift-Up`   |   `modifyNumberUp`   | 
|  Move the selection down one line  |   `Alt-Down`   |   `movelinesdown`   | 
|  Move the selection up one line  |   `Alt-Up`   |   `movelinesup`   | 
|  Outdent the selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or if on, turn off  |   `Insert`   |   `overwrite`   | 
|  Go down one page  |   `Option-Page Down`   |   `pagedown`   | 
|  Go up one page  |   `Option-Page Up`   |   `pageup`   | 
|  Delete the contents of the current line  |   `Ctrl-D`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Alt-Delete`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Alt-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Ctrl-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Ctrl-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Ctrl-Shift-E`   |   `replaymacro`   | 
|  Scroll the current file down by one line  |   `Ctrl-Down`   |   `scrolldown`   | 
|  Scroll the current file up by one line  |   `Ctrl-Up`   |   `scrollup`   | 
|  Select all selectable content  |   `Ctrl-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down`   |   `selectdown`   | 
|  Include the next space to the left in the selection  |   `Shift-Left`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Ctrl-Alt-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Ctrl-Alt-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Ctrl-Alt-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Ctrl-Alt-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Alt-K`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Alt-Shift-K`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Ctrl-Shift-End`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Alt-Shift-Right`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Alt-Shift-Left`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Ctrl-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Ctrl-Shift-Home`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Ctrl-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Ctrl-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Ctrl--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `Ctrl-Alt-S`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Ctrl-Alt-L`   |   `splitIntoLines`   | 
|  Move the contents of the cursor to the end of the line, to its own line  |   `Ctrl-O`   |   `splitline`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Ctrl-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Ctrl-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `F2`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Alt-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Ctrl-Alt-E`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Ctrl-Q`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Ctrl-Shift-U`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Ctrl-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Alt-X`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Alt-Shift-L \| Ctrl-Shift-F1`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Alt-Shift-0`   |   `unfoldall`   | 

## emmet
<a name="keybindings-default-windows-linux-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Ctrl-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Ctrl-Alt-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Ctrl-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Ctrl-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Ctrl-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-default-windows-linux-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Alt-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Alt-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-default-windows-linux-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `Ctrl-B`   |   `build`   | 
|  Resume the current paused process  |   `F8`   |   `resume`   | 
|  Run or debug the current application  |   `Alt-F5`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Ctrl-Shift-C`   |   `stopbuild`   | 

# Windows / Linux Vim Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-vim-windows-linux"></a>

This step shows how to choose Windows / Linux Vim Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Vim**.

1. For **Operating System**, choose **Windows / Linux**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of Vim keyboard mode keybindings for Windows / Linux operating systems in the AWS Cloud9 IDE:
+  [General](#keybindings-vim-windows-linux-general) 
+  [Tabs](#keybindings-vim-windows-linux-tabs) 
+  [Panels](#keybindings-vim-windows-linux-panels) 
+  [Code Editor](#keybindings-vim-windows-linux-code-editor) 
+  [emmet](#keybindings-vim-windows-linux-emmet) 
+  [Terminal](#keybindings-vim-windows-linux-terminal) 
+  [Run and Debug](#keybindings-vim-windows-linux-run-debug) 

## General
<a name="keybindings-vim-windows-linux-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Ctrl-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Ctrl-Space` \$1 `Alt-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Ctrl-Shift-Space` \$1 `Alt-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Ctrl-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Ctrl-X`   |   `cut`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Ctrl-F`   |   `find`   | 
|  Select all find matches in the current document  |   `Ctrl-Alt-K`   |   `findall`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Ctrl-K`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Ctrl-Shift-K`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Ctrl-Shift-B`   |   `formatcode`   | 
|  Show the go to line box  |   `Ctrl-G`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F3`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Ctrl-Shift-U`   |   `lambdaUploadFunction`   | 
|  Create a new file  |   `Alt-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Alt-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Ctrl-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Ctrl-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Ctrl-Shift-Z` \$1 `Ctrl-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Ctrl-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Ctrl-Alt-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the replace with expression  |   `Alt-Shift-F` \$1 `Ctrl-H`   |   `replace`   | 
|  Rerun your initialization script  |   `Ctrl-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Ctrl-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Ctrl-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Alt-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Ctrl-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Ctrl-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Ctrl-Shift-F`   |   `searchinfiles`   | 
|  Show the **Process List** dialog box  |   `Ctrl-Alt-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Ctrl-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-vim-windows-linux-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Ctrl-Alt-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Alt-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Ctrl-W`   |   `closepane`   | 
|  Close the current tab  |   `Alt-W`   |   `closetab`   | 
|  Go one pane down  |   `Ctrl-Meta-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Ctrl-Meta-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Ctrl-Meta-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Ctrl-Meta-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Ctrl-[`   |   `gototableft`   | 
|  Go one tab right  |   `Ctrl-]`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Ctrl-Meta-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Ctrl-Meta-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Ctrl-Meta-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Ctrl-Meta-Up`   |   `movetabup`   | 
|  Go to the next pane  |   `Ctrl-``   |   `nextpane`   | 
|  Go to the next tab  |   `Ctrl-Tab \| Alt-``   |   `nexttab`   | 
|  Go to the previous pane  |   `Ctrl-Shift-``   |   `previouspane`   | 
|  Go to the previous tab  |   `Ctrl-Shift-Tab \| Alt-Shift-``   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Alt-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Ctrl-Shift-L`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Ctrl-0`   |   `tab0`   | 
|  Go to the first tab  |   `Ctrl-1`   |   `tab1`   | 
|  Go to the second tab  |   `Ctrl-2`   |   `tab2`   | 
|  Go to the third tab  |   `Ctrl-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Ctrl-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Ctrl-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Ctrl-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Ctrl-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Ctrl-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Ctrl-9`   |   `tab9`   | 

## Panels
<a name="keybindings-vim-windows-linux-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Ctrl-E\|Ctrl-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Ctrl-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Ctrl-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Ctrl-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Ctrl-Shift-E`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `F6`   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Ctrl-I`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-vim-windows-linux-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Ctrl-Alt-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Ctrl-Alt-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Ctrl-Alt-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor. or if a second cursor is already added, move the second cursor down one line  |   `Ctrl-Alt-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Ctrl-Alt-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent the selection one tab  |   `Ctrl-]`   |   `blockindent`   | 
|  Outdent the selection one tab  |   `Ctrl-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Ctrl-Z \| Ctrl-Shift-Z \| Ctrl-Y`   |   `cancelBrowserUndoInAce`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Alt-Shift-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Alt-Shift-Up`   |   `copylinesup`   | 
|  Cut the selection. If there is no selection, delete one space  |   `Shift-Delete`   |   `cut_or_delete`   | 
|  Delete one space  |   `Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Ctrl-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Ctrl-Shift-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in the selection  |   `Ctrl-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code; if a folded unit is selected, unfold it  |   `Alt-L \| Ctrl-F1`   |   `fold`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Alt-0`   |   `foldOther`   | 
|  Go down one line  |   `Down`   |   `golinedown`   | 
|  Go up one line  |   `Up`   |   `golineup`   | 
|  Go to the end of the file  |   `Ctrl-End`   |   `gotoend`   | 
|  Go left one space  |   `Left`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Alt-Right \| End`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Alt-Left \| Home`   |   `gotolinestart`   | 
|  Go to the next error  |   `Alt-E`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Alt-Shift-E`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right`   |   `gotoright`   | 
|  Go to the start of the file  |   `Ctrl-Home`   |   `gotostart`   | 
|  Go one word to the left  |   `Ctrl-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Ctrl-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Go to the matching symbol in the current scope  |   `Ctrl-P`   |   `jumptomatching`   | 
|  Increase the font size  |   `Ctrl-+ \| Ctrl-=`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Ctrl-Shift-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Ctrl-Shift-Up`   |   `modifyNumberUp`   | 
|  Move the selection down one line  |   `Alt-Down`   |   `movelinesdown`   | 
|  Move the selection up one line  |   `Alt-Up`   |   `movelinesup`   | 
|  Outdent the selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or if on, turn off  |   `Insert`   |   `overwrite`   | 
|  Delete the contents of the current line  |   `Ctrl-D`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Alt-Delete`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Alt-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Ctrl-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Ctrl-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Ctrl-Shift-E`   |   `replaymacro`   | 
|  Scroll the current file down by one line  |   `Ctrl-Down`   |   `scrolldown`   | 
|  Scroll the current file up by one line  |   `Ctrl-Up`   |   `scrollup`   | 
|  Select all selectable content  |   `Ctrl-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down`   |   `selectdown`   | 
|  Include the next space to the left in the selection  |   `Shift-Left`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Ctrl-Alt-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Ctrl-Alt-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Ctrl-Alt-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Ctrl-Alt-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Alt-K`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Alt-Shift-K`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Ctrl-Shift-End`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Alt-Shift-Right`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Alt-Shift-Left`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Ctrl-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Ctrl-Shift-Home`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Ctrl-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Ctrl-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Ctrl--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `Ctrl-Alt-S`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Ctrl-Alt-L`   |   `splitIntoLines`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Ctrl-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Ctrl-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `F2`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Alt-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Ctrl-Alt-E`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Ctrl-Q`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Ctrl-Shift-U`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Ctrl-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Alt-X`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Alt-Shift-L \| Ctrl-Shift-F1`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Alt-Shift-0`   |   `unfoldall`   | 

## emmet
<a name="keybindings-vim-windows-linux-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Ctrl-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Ctrl-Alt-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Ctrl-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Ctrl-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Ctrl-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-vim-windows-linux-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Alt-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Alt-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-vim-windows-linux-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `Ctrl-B`   |   `build`   | 
|  Resume the current paused process  |   `F8`   |   `resume`   | 
|  Run or debug the current application  |   `Alt-F5`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Ctrl-Shift-C`   |   `stopbuild`   | 

# Windows / Linux Emacs Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-emacs-windows-linux"></a>

This step shows how to choose Windows / Linux Emacs Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Emacs**.

1. For **Operating System**, choose **Windows / Linux**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of Emacs keyboard mode keybindings for Windows / Linux operating systems in the AWS Cloud9 IDE:
+  [General](#keybindings-emacs-windows-linux-general) 
+  [Tabs](#keybindings-emacs-windows-linux-tabs) 
+  [Panels](#keybindings-emacs-windows-linux-panels) 
+  [Code Editor](#keybindings-emacs-windows-linux-code-editor) 
+  [emmet](#keybindings-emacs-windows-linux-emmet) 
+  [Terminal](#keybindings-emacs-windows-linux-terminal) 
+  [Run and Debug](#keybindings-emacs-windows-linux-run-debug) 

## General
<a name="keybindings-emacs-windows-linux-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Ctrl-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Ctrl-Space` \$1 `Alt-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Ctrl-Shift-Space` \$1 `Alt-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Ctrl-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Ctrl-X`   |   `cut`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Ctrl-F`   |   `find`   | 
|  Select all find matches in the current document  |   `Ctrl-Alt-K`   |   `findall`   | 
|  Go to the next match in the current document for the find query you entered last  |   `Ctrl-K`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Ctrl-Shift-K`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Ctrl-Shift-B`   |   `formatcode`   | 
|  Show the go to line box  |   `Ctrl-G`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F3`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Ctrl-Shift-U`   |   `lambdaUploadFunction`   | 
|  Create a new file  |   `Alt-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Alt-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Ctrl-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Ctrl-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Ctrl-Shift-Z` \$1 `Ctrl-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Ctrl-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Ctrl-Alt-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the replace with expression  |   `Alt-Shift-F` \$1 `Ctrl-H`   |   `replace`   | 
|  Rerun your initialization script  |   `Ctrl-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Ctrl-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Ctrl-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Alt-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Ctrl-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Ctrl-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Ctrl-Shift-F`   |   `searchinfiles`   | 
|  Show the **Process List** dialog box  |   `Ctrl-Alt-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Ctrl-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-emacs-windows-linux-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Ctrl-Alt-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Alt-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Ctrl-W`   |   `closepane`   | 
|  Close the current tab  |   `Alt-W`   |   `closetab`   | 
|  Go one pane down  |   `Ctrl-Meta-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Ctrl-Meta-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Ctrl-Meta-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Ctrl-Meta-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Ctrl-[`   |   `gototableft`   | 
|  Go one tab right  |   `Ctrl-]`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Ctrl-Meta-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Ctrl-Meta-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Ctrl-Meta-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at the very top, create a split tab there  |   `Ctrl-Meta-Up`   |   `movetabup`   | 
|  Go to the next pane  |   `Ctrl-``   |   `nextpane`   | 
|  Go to the next tab  |   `Ctrl-Tab \| Alt-``   |   `nexttab`   | 
|  Go to the previous pane  |   `Ctrl-Shift-``   |   `previouspane`   | 
|  Go to the previous tab  |   `Ctrl-Shift-Tab \| Alt-Shift-``   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Alt-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Ctrl-Shift-L`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Ctrl-0`   |   `tab0`   | 
|  Go to the first tab  |   `Ctrl-1`   |   `tab1`   | 
|  Go to the second tab  |   `Ctrl-2`   |   `tab2`   | 
|  Go to the third tab  |   `Ctrl-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Ctrl-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Ctrl-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Ctrl-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Ctrl-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Ctrl-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Ctrl-9`   |   `tab9`   | 

## Panels
<a name="keybindings-emacs-windows-linux-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Ctrl-E\|Ctrl-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Ctrl-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Ctrl-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Ctrl-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Ctrl-Shift-E`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `F6`   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Ctrl-I`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-emacs-windows-linux-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Ctrl-Alt-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Ctrl-Alt-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Ctrl-Alt-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Ctrl-Alt-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Ctrl-Alt-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent the selection one tab  |   `Ctrl-]`   |   `blockindent`   | 
|  Outdent the selection one tab  |   `Ctrl-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Ctrl-Z \| Ctrl-Shift-Z \| Ctrl-Y`   |   `cancelBrowserUndoInAce`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Alt-Shift-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Alt-Shift-Up`   |   `copylinesup`   | 
|  Cut the selection, or if there is no selection, delete one space  |   `Shift-Delete`   |   `cut_or_delete`   | 
|  Delete one space  |   `Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Ctrl-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Ctrl-Shift-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in selection  |   `Ctrl-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code; if a folded unit is selected, unfold it  |   `Alt-L \| Ctrl-F1`   |   `fold`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Alt-0`   |   `foldOther`   | 
|  Go down one line  |   `Down`   |   `golinedown`   | 
|  Go up one line  |   `Up`   |   `golineup`   | 
|  Go to the end of the file  |   `Ctrl-End`   |   `gotoend`   | 
|  Go left one space  |   `Left`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Alt-Right \| End`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Alt-Left \| Home`   |   `gotolinestart`   | 
|  Go to the next error  |   `Alt-E`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Alt-Shift-E`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right`   |   `gotoright`   | 
|  Go to the start of the file  |   `Ctrl-Home`   |   `gotostart`   | 
|  Go one word to the left  |   `Ctrl-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Ctrl-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Go to the matching symbol in the current scope  |   `Ctrl-P`   |   `jumptomatching`   | 
|  Increase the font size  |   `Ctrl-+ \| Ctrl-=`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Ctrl-Shift-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Ctrl-Shift-Up`   |   `modifyNumberUp`   | 
|  Move selection down one line  |   `Alt-Down`   |   `movelinesdown`   | 
|  Move selection up one line  |   `Alt-Up`   |   `movelinesup`   | 
|  Outdent the selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or if on, turn off  |   `Insert`   |   `overwrite`   | 
|  Delete the contents of the current line  |   `Ctrl-D`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Alt-Delete`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Alt-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Ctrl-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Ctrl-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Ctrl-Shift-E`   |   `replaymacro`   | 
|  Scroll the current file down by one line  |   `Ctrl-Down`   |   `scrolldown`   | 
|  Scroll the current file up by one line  |   `Ctrl-Up`   |   `scrollup`   | 
|  Select all selectable content  |   `Ctrl-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down`   |   `selectdown`   | 
|  Include the next space left in the selection  |   `Shift-Left`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Ctrl-Alt-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Ctrl-Alt-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Ctrl-Alt-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Ctrl-Alt-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Alt-K`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Alt-Shift-K`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Ctrl-Shift-End`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Alt-Shift-Right`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Alt-Shift-Left`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Ctrl-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Ctrl-Shift-Home`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Ctrl-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Ctrl-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Ctrl--`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `Ctrl-Alt-S`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Ctrl-Alt-L`   |   `splitIntoLines`   | 
|  Move the contents of the cursor to the end of the line, to its own line  |   `Ctrl-O`   |   `splitline`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Ctrl-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Ctrl-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `F2`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Alt-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Ctrl-Alt-E`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Ctrl-Q`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Ctrl-Shift-U`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Ctrl-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Alt-X`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Alt-Shift-L \| Ctrl-Shift-F1`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Alt-Shift-0`   |   `unfoldall`   | 

## emmet
<a name="keybindings-emacs-windows-linux-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Ctrl-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Ctrl-Alt-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Ctrl-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Ctrl-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Ctrl-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-emacs-windows-linux-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Alt-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Alt-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-emacs-windows-linux-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `Ctrl-B`   |   `build`   | 
|  Resume the current paused process  |   `F8`   |   `resume`   | 
|  Run or debug the current application  |   `Alt-F5`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Ctrl-Shift-C`   |   `stopbuild`   | 

# Windows / Linux Sublime Keybindings Reference for the AWS Cloud9 IDE
<a name="keybindings-sublime-windows-linux"></a>

This step shows how to choose Windows / Linux Sublime Keybindings Reference for AWS Cloud9.

1. On the menu bar, choose **AWS Cloud9**, **Preferences**.

1. On the **Preferences** tab, choose **Keybindings**.

1. For **Keyboard Mode**, choose **Sublime**.

1. For **Operating System**, choose **Windows / Linux**.

For more information about keybindings, see [Working with Keybindings](settings-keybindings.md).

The following is a list of Sublime keyboard mode keybindings for Windows / Linux operating systems in the AWS Cloud9 IDE:
+  [General](#keybindings-sublime-windows-linux-general) 
+  [Tabs](#keybindings-sublime-windows-linux-tabs) 
+  [Panels](#keybindings-sublime-windows-linux-panels) 
+  [Code Editor](#keybindings-sublime-windows-linux-code-editor) 
+  [emmet](#keybindings-sublime-windows-linux-emmet) 
+  [Terminal](#keybindings-sublime-windows-linux-terminal) 
+  [Run and Debug](#keybindings-sublime-windows-linux-run-debug) 

## General
<a name="keybindings-sublime-windows-linux-general"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add the selection as a watch expression  |   `Ctrl-Shift-C`   |   `addwatchfromselection`   | 
|  Remove the cut selection from the clipboard  |   `Esc`   |   `clearcut`   | 
|  Show the code completion context menu  |   `Ctrl-Space`   |   `complete`   | 
|  Code complete, and then overwrite  |   `Ctrl-Shift-Space` \$1 `Alt-Shift-Space`   |   `completeoverwrite`   | 
|  Copy the selection to the clipboard  |   `Ctrl-C`   |   `copy`   | 
|  Cut the selection to the clipboard  |   `Ctrl-X`   |   `cut`   | 
|  Delete from the cursor to the start of the line  |   `Ctrl-Shift-Backspace \| Ctrl-K Ctrl-Backspace`   |   `delete_to_hard_bol`   | 
|  Delete from the cursor to the end of line  |   `Ctrl-Shift-Delete \| Ctrl-K Ctrl-K`   |   `delete_to_hard_eol`   | 
|  Expand code, where applicable  |   `Tab`   |   `expandSnippet`   | 
|  Show the find and replace bar for the current document  |   `Ctrl-F`   |   `find`   | 
|  Highlight all matches for the selection  |   `Alt-F3`   |   `find_all_under`   | 
|  Highlight next match for the selection  |   `Ctrl-F3`   |   `find_under`   | 
|  Highlight around cursor and all matches for highlight  |   `Ctrl-D`   |   `find_under_expand`   | 
|  Highlight around cursor and outline all matches for highlight  |   `Ctrl-K Ctrl-D`   |   `find_under_expand_skip`   | 
|  Highlight previous match for selection  |   `Ctrl-Shift-F3`   |   `find_under_prev`   | 
|  Select all find matches in the current document  |   `Ctrl-Alt-K`   |   `findAll`   | 
|  Go to the next match in the current document for the find query you entered last  |   `F3`   |   `findnext`   | 
|  Go to the previous match in the current document for the find query you entered last  |   `Shift-F3`   |   `findprevious`   | 
|  Display all known references to the symbol at the insertion point in the active file in the editor  |   `Shift-F3`   |   `findReferences`   | 
|  Open the **Environment** window, and then make the list of files active  |   `Shift-Esc`   |   `focusTree`   | 
|  Reformat the selected JavaScript code  |   `Ctrl-Alt-F`   |   `formatcode`   | 
|  Show the go to line box  |   `Ctrl-G`   |   `gotoline`   | 
|  Hide the find and replace bar, if it is showing  |   `Esc`   |   `hidesearchreplace`   | 
|  Go to the definition of the variable or function at the cursor  |   `F12`   |   `jumptodef`   | 
|  If a local Lambda function is selected in the **Lambda** section of the **AWS Resources** window, attempts to upload the function to Lambda as a remote function  |   `Ctrl-Shift-U`   |   `lambdaUploadFunction`   | 
|  Go to the end of the current word  |   `Ctrl-Right`   |   `moveToWordEndRight`   | 
|  Go to the start of the current word  |   `Ctrl-Left`   |   `moveToWordStartLeft`   | 
|  Create a new file  |   `Alt-N`   |   `newfile`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `openpreferences`   | 
|  Open a **Terminal** tab, and then switch to the parent folder of the selected file in the list of files  |   `Alt-L`   |   `opentermhere`   | 
|  Paste the clipboard's current contents at the cursor  |   `Ctrl-V`   |   `paste`   | 
|  Show suggestions for fixing errors  |   `Ctrl-F3`   |   `quickfix`   | 
|  Redo the last action  |   `Ctrl-Shift-Z` \$1 `Ctrl-Y`   |   `redo`   | 
|  Refresh the preview pane  |   `Ctrl-Enter`   |   `reloadpreview`   | 
|  Start a rename refactor for the selection  |   `Ctrl-Alt-R`   |   `renameVar`   | 
|  Show the find and replace bar for the current document, with focus on the replace with expression  |   `Ctrl-H`   |   `replace`   | 
|  Replace all find expression matches with replace with expression in the find and replace bar  |   `Ctrl-Alt-Enter`   |   `replaceall`   | 
|  Replace next find expression match with replace with expression in the find and replace bar  |   `Ctrl-Shift-H`   |   `replacenext`   | 
|  Rerun your initialization script  |   `Ctrl-Enter`   |   `rerunInitScript`   | 
|  Restart the environment  |   `Ctrl-R`   |   `restartc9`   | 
|  Reset the current file to its last saved version  |   `Ctrl-Shift-Q`   |   `reverttosaved`   | 
|  Reset each open file to its saved version  |   `Alt-Shift-Q`   |   `reverttosavedall`   | 
|  Save the current file to disk  |   `Ctrl-S`   |   `save`   | 
|  Save the current file to disk with a different file name  |   `Ctrl-Shift-S`   |   `saveas`   | 
|  Show the find and replace bar for multiple files  |   `Ctrl-Shift-F`   |   `searchinfiles`   | 
|  Include from the cursor to the end of the word in the selection  |   `Ctrl-Shift-Right`   |   `selectToWordEndRight`   | 
|  Include from the cursor to the start of the word in the selection  |   `Ctrl-Shift-Left`   |   `selectToWordStartLeft`   | 
|  Show the **Process List** dialog box  |   `Ctrl-Alt-P`   |   `showprocesslist`   | 
|  Undo the last action  |   `Ctrl-Z`   |   `undo`   | 

## Tabs
<a name="keybindings-sublime-windows-linux-tabs"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Close all open tabs in the current pane, except the current tab  |   `Ctrl-Alt-W`   |   `closeallbutme`   | 
|  Close all open tabs in all panes  |   `Alt-Shift-W`   |   `closealltabs`   | 
|  Close the current pane  |   `Ctrl-W`   |   `closepane`   | 
|  Close the current tab  |   `Alt-W`   |   `closetab`   | 
|  Go one pane down  |   `Ctrl-Meta-Down`   |   `gotopanedown`   | 
|  Go one pane left  |   `Ctrl-Meta-Left`   |   `gotopaneleft`   | 
|  Go one pane right  |   `Ctrl-Meta-Right`   |   `gotopaneright`   | 
|  Go one pane up  |   `Ctrl-Meta-Up`   |   `gottopaneup`   | 
|  Go one tab left  |   `Ctrl-Page Up`   |   `gototableft`   | 
|  Go one tab right  |   `Ctrl-Page Down`   |   `gototabright`   | 
|  Move the current tab down one pane, or if the tab is already at the very bottom, create a split tab there  |   `Ctrl-Meta-Down`   |   `movetabdown`   | 
|  Move the current tab left, or if the tab is already at the far left, create a split tab there  |   `Ctrl-Meta-Left`   |   `movetableft`   | 
|  Move the current tab right, or if the tab is already at the far right, create a split tab there  |   `Ctrl-Meta-Right`   |   `movetabright`   | 
|  Move the current tab up one pane, or if the tab is already at very top, create a split tab there  |   `Ctrl-Meta-Up`   |   `movetabup`   | 
|  Go to the next tab  |   `Ctrl-Tab`   |   `nexttab`   | 
|  Go to the previous pane  |   `Ctrl-Shift-``   |   `previouspane`   | 
|  Go to the previous tab  |   `Ctrl-Shift-Tab`   |   `previoustab`   | 
|  Go back to the last tab  |   `Esc`   |   `refocusTab`   | 
|  Open the last tab again  |   `Ctrl-Shift-T`   |   `reopenLastTab`   | 
|  Show the current tab in the file tree  |   `Ctrl-E`   |   `revealtab`   | 
|  Go to the tenth tab  |   `Ctrl-0`   |   `tab0`   | 
|  Go to the first tab  |   `Ctrl-1`   |   `tab1`   | 
|  Go to the second tab  |   `Ctrl-2`   |   `tab2`   | 
|  Go to the third tab  |   `Ctrl-3`   |   `tab3`   | 
|  Go to the fourth tab  |   `Ctrl-4`   |   `tab4`   | 
|  Go to the fifth tab  |   `Ctrl-5`   |   `tab5`   | 
|  Go to the sixth tab  |   `Ctrl-6`   |   `tab6`   | 
|  Go to the seventh tab  |   `Ctrl-7`   |   `tab7`   | 
|  Go to the eighth tab  |   `Ctrl-8`   |   `tab8`   | 
|  Go to the ninth tab  |   `Ctrl-9`   |   `tab9`   | 

## Panels
<a name="keybindings-sublime-windows-linux-panels"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Show the **Go** window in **Go to Anything** mode  |   `Ctrl-E\|Ctrl-P`   |   `gotoanything`   | 
|  Show the **Go** window in **Go to Command** mode  |   `Ctrl-.\|F1`   |   `gotocommand`   | 
|  Show the **Go** window in **Go to File** mode.  |   `Ctrl-O`   |   `gotofile`   | 
|  Show the **Go** window in **Go to Symbol** mode.  |   `Ctrl-Shift-O`   |   `gotosymbol`   | 
|  Show the **Outline** window  |   `Ctrl-R\|Ctrl-Shift-R`   |   `outline`   | 
|  Show the **Console** window if hidden, or hide if shown  |   `Ctrl-``   |   `toggleconsole`   | 
|  Show the **Environment** window if hidden, or hide if shown  |   `Ctrl-K Ctrl-B`   |   `toggletree`   | 

## Code Editor
<a name="keybindings-sublime-windows-linux-code-editor"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Add a cursor one line above the active cursor, or if a cursor is already added, add another cursor above that one  |   `Ctrl-Alt-Up`   |   `addCursorAbove`   | 
|  Add a second cursor one line above the active cursor, or if a second cursor is already added, move the second cursor up one line  |   `Ctrl-Alt-Shift-Up`   |   `addCursorAboveSkipCurrent`   | 
|  Add a cursor one line below the active cursor, or if a cursor is already added, add another cursor below that one  |   `Ctrl-Alt-Down`   |   `addCursorBelow`   | 
|  Add a second cursor one line below the active cursor, or if a second cursor is already added, move the second cursor down one line  |   `Ctrl-Alt-Shift-Down`   |   `addCursorBelowSkipCurrent`   | 
|  Move all cursors to the same space as the active cursor on each of their lines, if they are misaligned  |   `Ctrl-Alt-A`   |   `alignCursors`   | 
|  Backspace one space  |   `Shift-Backspace \| Backspace`   |   `backspace`   | 
|  Indent the selection one tab  |   `Ctrl-]`   |   `blockindent`   | 
|  Outdent the selection one tab  |   `Ctrl-[`   |   `blockoutdent`   | 
|  Control whether focus can be switched from the editor to somewhere else in the IDE  |   `Ctrl-Z \| Ctrl-Shift-Z \| Ctrl-Y`   |   `cancelBrowserUndoInAce`   | 
|  Center the selection  |   `Ctrl-K Ctrl-C`   |   `centerselection`   | 
|  Copy the contents of the line, and paste the copied contents one line down  |   `Alt-Shift-Down`   |   `copylinesdown`   | 
|  Copy the contents of the line, and paste the copied contents one line up  |   `Alt-Shift-Up`   |   `copylinesup`   | 
|  Cut the selection, or if there is no selection, delete one space  |   `Shift-Delete`   |   `cut_or_delete`   | 
|  Delete one space  |   `Delete`   |   `del`   | 
|  Copy the contents of the selection, and paste the copied contents immediately after the selection  |   `Ctrl-Shift-D`   |   `duplicateSelection`   | 
|  Include the current line's contents in the selection  |   `Ctrl-Shift-L`   |   `expandtoline`   | 
|  Include up to the next matching symbol in the selection  |   `Ctrl-Shift-M`   |   `expandToMatching`   | 
|  Fold the selected code; if a folded unit is selected, unfold it  |   `Alt-L \| Ctrl-F1`   |   `fold`   | 
|  Fold all possibly foldable elements, except for the current selection scope  |   `Ctrl-K Ctrl-1`   |   `foldOther`   | 
|  Go down one line  |   `Down`   |   `golinedown`   | 
|  Go up one line  |   `Up`   |   `golineup`   | 
|  Go to the end of the file  |   `Ctrl-End`   |   `gotoend`   | 
|  Go left one space  |   `Left`   |   `gotoleft`   | 
|  Go to the end of the current line  |   `Alt-Right \| End`   |   `gotolineend`   | 
|  Go to the start of the current line  |   `Alt-Left \| Home`   |   `gotolinestart`   | 
|  Go to the next error  |   `Ctrl-F6`   |   `goToNextError`   | 
|  Go down one page  |   `Page Down`   |   `gotopagedown`   | 
|  Go up one page  |   `Page Up`   |   `gotopageup`   | 
|  Go to the previous error  |   `Ctrl-Shift-F6`   |   `goToPreviousError`   | 
|  Go right one space  |   `Right`   |   `gotoright`   | 
|  Go to the start of the file  |   `Ctrl-Home`   |   `gotostart`   | 
|  Go one word to the left  |   `Ctrl-Left`   |   `gotowordleft`   | 
|  Go one word to the right  |   `Ctrl-Right`   |   `gotowordright`   | 
|  Indent the selection one tab  |   `Tab`   |   `indent`   | 
|  Include from the cursor to the start of the word in the selection  |   `Ctrl-J`   |   `joinlines`   | 
|  Go to the matching symbol in the current scope  |   `Ctrl-M`   |   `jumptomatching`   | 
|  Increase the font size  |   `Ctrl-- \| Ctrl-= \| Ctrl-+`   |   `largerfont`   | 
|  Decrease the number to the left of the cursor by 1, if it is a number  |   `Alt-Down`   |   `modifyNumberDown`   | 
|  Increase the number to the left of the cursor by 1, if it is a number  |   `Alt-Up`   |   `modifyNumberUp`   | 
|  Move the selection down one line  |   `Ctrl-Shift-Down`   |   `movelinesdown`   | 
|  Move the selection up one line  |   `Ctrl-Shift-Up`   |   `movelinesup`   | 
|  Outdent the selection one tab  |   `Shift-Tab`   |   `outdent`   | 
|  Turn on overwrite mode, or if on, turn off  |   `Insert`   |   `overwrite`   | 
|  Delete the contents of the current line  |   `Ctrl-Shift-K`   |   `removeline`   | 
|  Delete from the cursor to the end of the current line  |   `Alt-Delete`   |   `removetolineend`   | 
|  Delete from the beginning of the current line up to the cursor  |   `Alt-Backspace`   |   `removetolinestart`   | 
|  Delete the word to the left of the cursor  |   `Ctrl-Backspace`   |   `removewordleft`   | 
|  Delete the word to the right of the cursor  |   `Ctrl-Delete`   |   `removewordright`   | 
|  Replay previously recorded keystrokes  |   `Ctrl-Shift-Q`   |   `replaymacro`   | 
|  Scroll the current file down by one line  |   `Ctrl-Down`   |   `scrolldown`   | 
|  Scroll the current file up by one line  |   `Ctrl-Up`   |   `scrollup`   | 
|  Select all selectable content  |   `Ctrl-A`   |   `selectall`   | 
|  Include the next line down in the selection  |   `Shift-Down`   |   `selectdown`   | 
|  Include the next space left in the selection  |   `Shift-Left`   |   `selectleft`   | 
|  Include the rest of the current line in the selection, starting from the cursor  |   `Shift-End`   |   `selectlineend`   | 
|  Include the beginning of the current line in the selection, up to the cursor  |   `Shift-Home`   |   `selectlinestart`   | 
|  Include more matching selections that are after the selection  |   `Ctrl-Alt-Right`   |   `selectMoreAfter`   | 
|  Include more matching selections that are before the selection  |   `Ctrl-Alt-Left`   |   `selectMoreBefore`   | 
|  Include the next matching selection that is after the selection  |   `Ctrl-Alt-Shift-Right`   |   `selectNextAfter`   | 
|  Include the next matching selection that is before the selection  |   `Ctrl-Alt-Shift-Left`   |   `selectNextBefore`   | 
|  Select or find the next matching selection  |   `Alt-K`   |   `selectOrFindNext`   | 
|  Select or find the previous matching selection  |   `Alt-Shift-K`   |   `selectOrFindPrevious`   | 
|  Include from the cursor down to the end of the current page in the selection  |   `Shift-Page Down`   |   `selectpagedown`   | 
|  Include from the cursor up to the beginning of the current page in the selection  |   `Shift-Page Up`   |   `selectpageup`   | 
|  Include the next space to the right of the cursor in the selection  |   `Shift-Right`   |   `selectright`   | 
|  Include from the cursor down to the end of the current file in the selection  |   `Ctrl-Shift-End`   |   `selecttoend`   | 
|  Include from the cursor to the end of the current line in the selection  |   `Alt-Shift-Right`   |   `selecttolineend`   | 
|  Include from the beginning of the current line to the cursor in the selection  |   `Alt-Shift-Left`   |   `selecttolinestart`   | 
|  Include from the cursor to the next matching symbol in the current scope  |   `Ctrl-Shift-P`   |   `selecttomatching`   | 
|  Include from the cursor up to the beginning of the current file in the selection  |   `Ctrl-Shift-Home`   |   `selecttostart`   | 
|  Include the next line up in the selection  |   `Shift-Up`   |   `selectup`   | 
|  Include the next word to the left of the cursor in the selection  |   `Ctrl-Shift-Left`   |   `selectwordleft`   | 
|  Include the next word to the right of the cursor in the selection  |   `Ctrl-Shift-Right`   |   `selectwordright`   | 
|  Show the **Preferences** tab  |   `Ctrl-,`   |   `showSettingsMenu`   | 
|  Clear all previous selections  |   `Esc`   |   `singleSelection`   | 
|  Decrease the font size  |   `Ctrl-- \| Ctrl-Shift-= \| Ctrl-Shift-+`   |   `smallerfont`   | 
|  If multiple lines are selected, rearrange them into a sorted order  |   `F9`   |   `sortlines`   | 
|  Add a cursor at the end of the current line  |   `Ctrl-Shift-L`   |   `splitIntoLines`   | 
|  Surround the selection with block comment characters, or remove them if they are there  |   `Ctrl-Shift-/`   |   `toggleBlockComment`   | 
|  Add line comment characters at the start of each selected line, or remove them if they are there  |   `Ctrl-/`   |   `togglecomment`   | 
|  Fold code, or remove code folding if it is there  |   `Ctrl-Shift-[`   |   `toggleFoldWidget`   | 
|  Fold parent code, or remove folding if it is there  |   `Alt-F2`   |   `toggleParentFoldWidget`   | 
|  Start keystroke recording, or stop if it is already recording  |   `Ctrl-Q`   |   `togglerecording`   | 
|  Wrap words, or stop wrapping words if they are already wrapping  |   `Ctrl-Q`   |   `toggleWordWrap`   | 
|  Change the selection to all lowercase  |   `Ctrl-K Ctrl-L`   |   `tolowercase`   | 
|  Change the selection to all uppercase  |   `Ctrl-K Ctrl-U`   |   `touppercase`   | 
|  Transpose the selection  |   `Alt-X`   |   `transposeletters`   | 
|  Unfold the selected code  |   `Ctrl-Shift-]`   |   `unfold`   | 
|  Unfold code folding for the entire file  |   `Ctrl-K Ctrl-0 \| Ctrl-K Ctrl-J`   |   `unfoldall`   | 

## emmet
<a name="keybindings-sublime-windows-linux-emmet"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Evaluate a simple math expression (such as `2*4` or `10/2`), and output its result  |   `Shift-Ctrl-Y`   |   `emmet_evaluate_math_expression`   | 
|  Expand CSS-like abbreviations into HTML, XML, or CSS code, depending on the current file's syntax  |   `Ctrl-Alt-E`   |   `emmet_expand_abbreviation`   | 
|  Traverse expanded CSS-like abbreviations, by tab stop  |   `Tab`   |   `emmet_expand_abbreviation_with_tab`   | 
|  Go to the next editable code part  |   `Shift-Ctrl-.`   |   `emmet_select_next_item`   | 
|  Go to the previous editable code part  |   `Shift-Ctrl-,`   |   `emmet_select_previous_item`   | 
|  Expand an abbreviation, and then place the current selection within the last element of the generated snippet  |   `Shift-Ctrl-A`   |   `emmet_wrap_with_abbreviation`   | 

## Terminal
<a name="keybindings-sublime-windows-linux-terminal"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Open a new **Terminal** tab  |   `Alt-T`   |   `openterminal`   | 
|  Switch between the editor and the **Terminal** tab  |   `Alt-S`   |   `switchterminal`   | 

## Run and Debug
<a name="keybindings-sublime-windows-linux-run-debug"></a>


****  

| Description | Keybinding | Command | 
| --- | --- | --- | 
|  Build the current file  |   `F7 \| Ctrl-B`   |   `build`   | 
|  Resume the current paused process  |   `F8`   |   `resume`   | 
|  Run or debug the current application  |   `Ctrl-Shift-B`   |   `run`   | 
|  Run or debug the last run file  |   `F5`   |   `runlast`   | 
|  Step into the function that is next on the stack  |   `F11`   |   `stepinto`   | 
|  Step out of the current function scope  |   `Shift-F11`   |   `stepout`   | 
|  Step over the current expression on the stack  |   `F10`   |   `stepover`   | 
|  Stop running or debugging the current application  |   `Shift-F5`   |   `stop`   | 
|  Stop building the current file  |   `Ctrl-Break`   |   `stopbuild`   | 

# Commands reference for the AWS Cloud9 IDE
<a name="commands"></a>

To run a command in the AWS Cloud9 Integrated Development Environment (IDE):

1. Choose the **Go** button (magnifying glass) to display the **Go** window. If the **Go** button is not visible, choose **Window, Go** on the menu bar.

1. In the **Go to Anything** box, start typing the name of a *command group* (*Code Editor*, for example). A group contains multiple commands organized around a common theme or IDE feature.

1. Under the **Commands** heading, choose from the group a specific command to run.


**Available command groups**  

| Command group | Description | 
| --- | --- | 
|   `AWS`   |  Commands for the [AWS Toolkit](toolkit-welcome.md)  | 
|   `Clipboard`   |  Commands for copying and pasting content  | 
|   `Code Editor`   |  Commands for navigating the code editor interface and interacting with the editor's contents  | 
|   `Emmet`   |  Commands for working with the Emmet toolkit that's used for HTML and CSS content   | 
|   `General`   |  Miscellaneous commands for managing the IDE's configuration and project files  | 
|   `Panels`   |  Commands for managing the display of panels in the IDE interface  | 
|   `Run & Debug`   |  Commands for running and debugging projects in AWS Cloud9  | 
|   `Tabs`   |  Commands for managing the display and navigation of tabs in the IDE interface  | 
|   `Terminal`   |  Commands for managing the command-line terminal  | 
|   `Window`   |  Commands for managing the layout of panes in the IDE window  | 