# How to move around a file This guide shows how to get to the piece of code you are looking for. It assumes you have a file open. ## Find text Press **Ctrl-F**, type what you are looking for, and press **Enter**. The first match is selected. - **F7** — next match - **Shift-F7** — previous match The search **wraps round**: pressing F7 repeatedly cycles through every match rather than stopping at the bottom of the file. Case is ignored unless you tick `Case sensitive` in the Find box. ## Jump to a line number Press **Ctrl-G**, type the number, press **Enter**. Lines count from one, as they do in Node's error messages. ## Jump to a declaration Put the cursor on a name and press **F12**. Turbo JS asks `typescript-language-server` where it is declared and goes to that line. When there is more than one declaration, it offers the list. That is one of the questions the **Code** menu puts to the server, and `typescript-language-server` answers every one of them — references (`Shift-F12`), type definitions, implementations and project-wide symbols (`Ctrl-T`) included; **Symbol in file** is the way to see everything a file declares. See [How to ask what the code means](ask-about-code.md). If the file is already open, its window comes forward instead of opening a second one. > This needs `typescript-language-server` installed. See [How to enable JavaScript completion](enable-completion.md). ## Select and edit whole lines | | | | --- | --- | | **Double-click a word** | Select it. Typing then replaces it; holding the button after the second click extends the selection from the start of the word. | | **Ctrl-N** | Open a blank line **above** the cursor. The cursor stays on its own text, now one line lower — room made over what you are looking at. | | **Ctrl-Y** | Delete the line the cursor is on. The cursor keeps its line number, so holding the key deletes a run of lines. | Both are Turbo C's keys. `Ctrl-Y` is why **redo is `Ctrl-R`** and no longer `Ctrl-Y`: between the editor looking like Turbo C and a habit picked up here, the first won. `Ctrl-Shift-Z` was not available to move redo to — a terminal delivers it as plain `Ctrl-Z`. A double-click away from a word — on a space or a bracket — moves the cursor and selects nothing. Editors disagree about what a run of punctuation means, and nothing is at least an answer you can predict. ## Move by word, line and file | | | | --- | --- | | **Ctrl-←** / **Ctrl-→** | Previous / next word | | **Home** / **End** | Start / end of the line | | **Ctrl-Home** / **Ctrl-End** | Start / end of the file | | **PgUp** / **PgDn** | One screenful | Hold **Shift** with any of these to select as you go. ## Move between windows | | | | --- | --- | | **F6** | The window behind the current one | | **Alt-1** … **Alt-9** | That numbered window — the number is in its top-right corner | | **Alt-0** | A list of every open window | If the windows are on top of each other, `Window ▸ Tile` lays them out side by side and `Window ▸ Cascade` stacks them with every title visible. ## Variants **The file is not JavaScript.** Everything above works except F12, which needs a language server, and the only one this editor starts is `typescript-language-server`, for JavaScript. Colouring is unaffected: the eight other languages the editor knows — JSON, TOML, YAML, Markdown, HTML, XML, Dockerfiles and shell — are coloured as usual; see [Languages coloured](../reference/languages.md). **You want to see where you are.** The right-hand end of the status bar always shows `line:column`, counting from one. **You resized the terminal.** Windows follow it: one that filled the terminal still fills it, and one you had moved keeps its corner where you put it. Nothing is ever left larger than the terminal. **The line is longer than the window.** The view scrolls sideways to follow the cursor; the bar along the bottom of the window shows how far along you are. ## See also - Every key: [keyboard reference](../reference/keyboard.md) - Every menu item: [menu reference](../reference/menus.md)