# Smart Keys

> **TL;DR**
> `File | Settings | Editor | General | Smart Keys` for Windows and Linux
>
>
>
> `IntelliJ IDEA | Settings | Editor | General | Smart Keys` for macOS
>
>
>
> `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) ![the Settings icon](https://resources.jetbrains.com.cn/help/img/idea/2026.2/app.expui.general.settings.svg)

Use this page to enable or disable specific [smart keys](using-code-editor.html#smart-keys) and to define which actions you want to be invoked automatically.

| Item | Description |
| --- | --- |
|  Home moves caret to first non-whitespace character  |  When this checkbox is selected, on pressing `Home` (Windows), `⌘ ←` (macOS), `⌘ ←` (IntelliJ IDEA Classic (macOS)), `⌘ ←` (macOS System Shortcuts), `Home` (XWin), `Home` (GNOME), `Home` (KDE), `Home` (Emacs), `Home` (Sublime Text), `⌘ ←` (Sublime Text (macOS)), `Home` (NetBeans), `Home` (Visual Studio), `⌘ ←` (Visual Studio (macOS)), `Home` (Eclipse), `⌘ ←` (Eclipse (macOS)), the caret is positioned at the first non-whitespace character of the current line. Pressing `Home` (Windows), `⌘ ←` (macOS), `⌘ ←` (IntelliJ IDEA Classic (macOS)), `⌘ ←` (macOS System Shortcuts), `Home` (XWin), `Home` (GNOME), `Home` (KDE), `Home` (Emacs), `Home` (Sublime Text), `⌘ ←` (Sublime Text (macOS)), `Home` (NetBeans), `Home` (Visual Studio), `⌘ ←` (Visual Studio (macOS)), `Home` (Eclipse), `⌘ ←` (Eclipse (macOS)) subsequently moves the caret from the Smart Home position to the first column and back.  |
|  End on blank line moves caret to indent position  |  When this checkbox is selected, on pressing `End` (Windows), `⌘ →` (macOS), `⌘ →` (IntelliJ IDEA Classic (macOS)), `⌘ →` (macOS System Shortcuts), `End` (XWin), `End` (GNOME), `End` (KDE), `End` (Emacs), `End` (Sublime Text), `⌘ →` (Sublime Text (macOS)), `End` (NetBeans), `End` (Visual Studio), `⌘ →` (Visual Studio (macOS)), `End` (Eclipse), `⌘ →` (Eclipse (macOS)) in an empty line, the caret is positioned with the indent, which IntelliJ IDEA assumes to be reasonable in the current code point (indentation is based on the current [Code Style Settings](settings-code-style.html)).  |
| Insert pair brackets (), [], {}, <> | Select this checkbox to have IntelliJ IDEA automatically add a closing bracket for each typed opening bracket, respectively.  |
|  Insert pair quote  |    Select this checkbox to have IntelliJ IDEA automatically add a closing single or double quote for each typed opening single or double quote, respectively.        |
|  Reformat block on typing '}'  | If this checkbox is selected, then, on typing the closing curly brace, the enclosed code block is reformatted automatically if the formatting of this code block does not match the selected code style.  |
|  Use "CamelHumps" words  |    Select this checkbox to have IntelliJ IDEA discern separate words within CamelHump names. Words within a name should start with a capital letter or an underscore. This option impacts some editor actions, for example:        * Caret Move `Ctrl+Right` (Windows), `⌥ →` (macOS), `⌥ →` (IntelliJ IDEA Classic (macOS)), `⌥ →` (macOS System Shortcuts), `Ctrl+Right` (XWin), `Ctrl+Right` (GNOME), `Ctrl+Right` (KDE), `Ctrl+Right` (Emacs), `Ctrl+Right` (Sublime Text), `⌥ →` (Sublime Text (macOS)), `Ctrl+Right` (NetBeans), `Ctrl+Right` (Visual Studio), `⌥ →` (Visual Studio (macOS)), `Ctrl+Right` (Eclipse), `⌥ →` (Eclipse (macOS))/ `Ctrl+Left` (Windows), `⌥ ←` (macOS), `⌥ ←` (IntelliJ IDEA Classic (macOS)), `⌥ ←` (macOS System Shortcuts), `Ctrl+Left` (XWin), `Ctrl+Left` (GNOME), `Ctrl+Left` (KDE), `Ctrl+Left` (Emacs), `Ctrl+Left` (Sublime Text), `⌥ ←` (Sublime Text (macOS)), `Ctrl+Left` (NetBeans), `Ctrl+Left` (Visual Studio), `⌥ ←` (Visual Studio (macOS)), `Ctrl+Left` (Eclipse), `⌥ ←` (Eclipse (macOS))    * Caret Move with Selection (`Ctrl+Shift+Right` (Windows), `⌥ ⇧ →` (macOS), `⌥ ⇧ →` (IntelliJ IDEA Classic (macOS)), `⌥ ⇧ →` (macOS System Shortcuts), `Ctrl+Shift+Right` (XWin), `Ctrl+Shift+Right` (GNOME), `Ctrl+Shift+Right` (KDE), `Ctrl+Shift+Right` (Emacs), `Ctrl+Shift+Right` (Sublime Text), `⌥ ⇧ →` (Sublime Text (macOS)), `Ctrl+Shift+Right` (NetBeans), `Ctrl+Shift+Right` (Visual Studio), `⌥ ⇧ →` (Visual Studio (macOS)), `Ctrl+Shift+Right` (Eclipse), `⌥ ⇧ →` (Eclipse (macOS))/`Ctrl+Shift+Left` (Windows), `⌥ ⇧ ←` (macOS), `⌥ ⇧ ←` (IntelliJ IDEA Classic (macOS)), `⌥ ⇧ ←` (macOS System Shortcuts), `Ctrl+Shift+Left` (XWin), `Ctrl+Shift+Left` (GNOME), `Ctrl+Shift+Left` (KDE), `Ctrl+Shift+Left` (Emacs), `Ctrl+Shift+Left` (Sublime Text), `⌥ ⇧ ←` (Sublime Text (macOS)), `Ctrl+Shift+Left` (NetBeans), `Ctrl+Shift+Left` (Visual Studio), `⌥ ⇧ ←` (Visual Studio (macOS)), `Ctrl+Shift+Left` (Eclipse), `⌥ ⇧ ←` (Eclipse (macOS)))    * Select Word at Caret `Ctrl+W` (Windows), `⌥ ↑` (macOS), `⌘ W` (IntelliJ IDEA Classic (macOS)), `⌥ ↑` (macOS System Shortcuts), `Ctrl+W` (XWin), `Ctrl+W` (GNOME), `Ctrl+W` (KDE), `Ctrl+Alt+W` (Emacs), `Ctrl+Shift+Space` (Sublime Text), `⌘ ⇧ A` (Sublime Text (macOS)), `Alt+Shift+.` (NetBeans), `Alt+Shift+=` (Visual Studio), `⌘ ⌥ →` (Visual Studio (macOS)), `Alt+Shift+Up` (Eclipse), `⌃ ⇧ ↑` (Eclipse (macOS))    * Delete to Word Start/End (`Ctrl+Backspace` (Windows), `⌥ ⌫` (macOS), `⌥ ⌫` (IntelliJ IDEA Classic (macOS)), `⌥ ⌫` (macOS System Shortcuts), `Ctrl+Backspace` (XWin), `Ctrl+Backspace` (GNOME), `Ctrl+Backspace` (KDE), `Ctrl+Backspace` (Emacs), `Ctrl+Backspace` (Sublime Text), `⌥ ⌫` (Sublime Text (macOS)), `Ctrl+Backspace` (NetBeans), `Ctrl+Backspace` (Visual Studio), `⌥ ⌫` (Visual Studio (macOS)), `Ctrl+Backspace` (Eclipse), `⌘ ⌫` (Eclipse (macOS)) and `Ctrl+Delete` (Windows), `⌥ ⌦` (macOS), `⌥ ⌦` (IntelliJ IDEA Classic (macOS)), `⌥ ⌦` (macOS System Shortcuts), `Ctrl+Delete` (XWin), `Ctrl+Delete` (GNOME), `Ctrl+Delete` (KDE), `Ctrl+Delete` (Emacs), `Ctrl+Delete` (Sublime Text), `⌥ ⌦` (Sublime Text (macOS)), `Ctrl+Delete` (NetBeans), `Ctrl+Delete` (Visual Studio), `⌥ ⌦` (Visual Studio (macOS)), `Ctrl+Delete` (Eclipse), `⌘ ⌦` (Eclipse (macOS)) respectively)    * Double-clicking (if Honor "CamelHumps" word settings when selecting using double click is enabled).       IntelliJ IDEA also provides similar actions that work in a mode opposite to the one selected in the Use 'CamelHumps' words  setting:        * Move Caret to Previous Word in Different "CamelHumps" mode    * Move Caret to Previous Word with Selection in Different "CamelHumps" mode    * Move Caret to Next Word in Different "CamelHumps" mode    * Move Caret to Next Word with Selection in Different "CamelHumps" mode    * Delete to Word End in Different "CamelHumps" mode    * Delete to Word Start in Different "CamelHumps" mode      For example, if Use 'CamelHumps' words  is enabled, the action Move Caret to Next Word in Different "CamelHumps" mode moves the caret to the end of word regardless of uppercase characters in this word; if Use 'CamelHumps' words  is disabled, then the caret moves to the next CamelHump within this word.       These actions have no default keyboard shortcuts and are not included in the menus, but you can invoke them from  [Go to Action](searching-everywhere.html#find_action) `Ctrl+Shift+A` (Windows), `⌘ ⇧ A` (macOS), `⌘ ⇧ A` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ P` (macOS System Shortcuts), `Ctrl+Shift+A` (XWin), `Ctrl+Shift+A` (GNOME), `Ctrl+Shift+A` (KDE), `Escape, X` (Emacs), `Ctrl+Shift+P` (Sublime Text), `⌘ ⇧ P` (Sublime Text (macOS)), `Ctrl+I` (NetBeans), `Ctrl+Shift+A` (Visual Studio), `⌘ ⇧ A` (Visual Studio (macOS)), `Ctrl+Shift+A` (Eclipse), `⌘ 3` (Eclipse (macOS)):      ![Alternative actions for CamelHump navigation](https://resources.jetbrains.com.cn/help/img/idea/2026.2/camelHumpsActions.png)    You can bind them with the shortcuts of your choice as described in the section [Configure keyboard shortcuts](configuring-keyboard-and-mouse-shortcuts.html).                   |
|  Honor "CamelHumps" words settings when selecting on double click  |    Select this checkbox to have IntelliJ IDEA invoke the CamelHumps selection when words are selected by double-clicking.       This feature works only if the [Use 'CamelHumps' words](#camelHumps) option is enabled.     |
|  Surround selection on typing quote or brace  |  If this checkbox is selected, the selected text on typing a quote, double-quote or brace, will be surrounded with these characters. If this checkbox is not selected, then the typed quotes, double-quotes or braces will replace the selection.  |
|  Add multiple carets on double `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (NetBeans), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) with arrow keys  |     If this checkbox is selected, then:        * pressing `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (NetBeans), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) plus up/down arrow keys leads to creating multiple carets.    * pressing `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (NetBeans), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) plus left/right arrow keys or Home/End leads to creating a selection.      For more information, refer to the  [Multicursor](working-with-source-code.html#editor_lines_code_blocks) section.      |
|  Jump outside closing bracket/quote with Tab when typing  |     If this checkbox is selected, pressing `Tab` (Windows), `Tab` (macOS), `Tab` (IntelliJ IDEA Classic (macOS)), `Tab` (macOS System Shortcuts), `Tab` (XWin), `Tab` (GNOME), `Tab` (KDE), `Tab` (Emacs), `Tab` (Sublime Text), `Tab` (Sublime Text (macOS)), `Tab` (NetBeans), `Tab` (Visual Studio), `Tab` (Visual Studio (macOS)), `Tab` (Eclipse), `Tab` (Eclipse (macOS)) when typing inside brackets/quotes will move the caret outside the closing bracket/quote. If this checkbox is not selected, pressing `Tab` (Windows), `Tab` (macOS), `Tab` (IntelliJ IDEA Classic (macOS)), `Tab` (macOS System Shortcuts), `Tab` (XWin), `Tab` (GNOME), `Tab` (KDE), `Tab` (Emacs), `Tab` (Sublime Text), `Tab` (Sublime Text (macOS)), `Tab` (NetBeans), `Tab` (Visual Studio), `Tab` (Visual Studio (macOS)), `Tab` (Eclipse), `Tab` (Eclipse (macOS)) will insert the `Tab` character.       Note that this only works on initial typing: during subsequent editing, pressing `Tab` (Windows), `Tab` (macOS), `Tab` (IntelliJ IDEA Classic (macOS)), `Tab` (macOS System Shortcuts), `Tab` (XWin), `Tab` (GNOME), `Tab` (KDE), `Tab` (Emacs), `Tab` (Sublime Text), `Tab` (Sublime Text (macOS)), `Tab` (NetBeans), `Tab` (Visual Studio), `Tab` (Visual Studio (macOS)), `Tab` (Eclipse), `Tab` (Eclipse (macOS)) inside brackets/quotes will insert the `Tab` character.     |
| Enter |    Use this area to define the actions to be invoked by pressing `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (NetBeans), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (Eclipse), `⏎` (Eclipse (macOS)).        * Smart indent : select this checkbox to have IntelliJ IDEA add a new line and place the caret at it, with the indent that IntelliJ IDEA assumes to be reasonable in the current point of code (indentation is based on the current [Code Style](settings-code-style.html) settings). If the checkbox is cleared, upon pressing `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (NetBeans), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (Eclipse), `⏎` (Eclipse (macOS)) in a blank line, IntelliJ IDEA adds a new line and positions the caret at the current non-space character column.    * Insert pair '}' : select this checkbox to have IntelliJ IDEA automatically position a closing brace `}` at the proper column when `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (NetBeans), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (Eclipse), `⏎` (Eclipse (macOS)) is pressed in an empty line. In this case IntelliJ IDEA seeks backward for the nearest unclosed opening brace `{` and places the closing one at the corresponding indentation level.    * Close block comment: unselect this checkbox to disable the automatic closure of the block comment when hitting `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (NetBeans), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (Eclipse), `⏎` (Eclipse (macOS)).    * Insert documentation comment stub : this checkbox defines the behavior on pressing `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (NetBeans), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (Eclipse), `⏎` (Eclipse (macOS)) after the opening documentation comment. This functionality works only for JavaScript , Java, Groovy, and Swift . * If this checkbox is selected, IntelliJ IDEA generates a documentation comment stub. For the method comments, this stub contains the required tags (`@param` tags for each method parameter, `@return`, or `@throws`). For more information, refer to [Javadocs](javadocs.html) and [JSDoc comments](creating-jsdoc-comments.html). * If this checkbox is not selected, only the closing part of the comment is generated. > **Warning:** > Note that this checkbox refers to JavaScript, Java, and other languages that have special beginning of documentation comments.    |
|  Unindent on Backspace  |     Use this list to define the actions to be invoked by pressing `Backspace` (Windows), `⌫` (macOS), `⌫` (IntelliJ IDEA Classic (macOS)), `⌫` (macOS System Shortcuts), `Backspace` (XWin), `Backspace` (GNOME), `Backspace` (KDE), `Backspace` (Emacs), `Backspace` (Sublime Text), `⌫` (Sublime Text (macOS)), `Backspace` (NetBeans), `Backspace` (Visual Studio), `⌫` (Visual Studio (macOS)), `Backspace` (Eclipse), `⌫` (Eclipse (macOS)) key. The available options are:        * Disabled : pressing `Backspace` (Windows), `⌫` (macOS), `⌫` (IntelliJ IDEA Classic (macOS)), `⌫` (macOS System Shortcuts), `Backspace` (XWin), `Backspace` (GNOME), `Backspace` (KDE), `Backspace` (Emacs), `Backspace` (Sublime Text), `⌫` (Sublime Text (macOS)), `Backspace` (NetBeans), `Backspace` (Visual Studio), `⌫` (Visual Studio (macOS)), `Backspace` (Eclipse), `⌫` (Eclipse (macOS)) returns the caret by one position at a time.    * To nearest indent position    * To proper indent position    |
|  Reformat on paste  |     Use this list to specify how to place pasted code blocks. The available options are:        * None : the pasted code is inserted at the caret location as plain text without any reformatting or indenting.    * Indent block : the pasted code block is positioned at the proper indentation level, according to the current [Code Style Settings](settings-code-style.html), but its inner structure is not changed.    * Indent each line : each line of the pasted code block is positioned at the proper indentation level, according to the current Code Style Settings.    * Reformat block : the pasted code block is reformatted according to the current Code Style Settings.     > **Tip:** > This feature is applicable to lines that contain the trailing line feed characters.    |
|  Reformat again to remove custom line breaks  |    When this option is enabled, invoking the [Reformat Code](reformat-and-rearrange-code.html#reformat_code) `Ctrl+Alt+L` (Windows), `⌘ ⌥ L` (macOS), `⌘ ⌥ L` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ L` (macOS System Shortcuts), `Ctrl+Alt+L` (XWin), `Ctrl+Alt+L` (GNOME), `Alt+Shift+L` (KDE), `Ctrl+Alt+L` (Emacs), `Ctrl+Alt+L` (Sublime Text), `⌘ ⌥ L` (Sublime Text (macOS)), `Alt+Shift+F` (NetBeans), `Ctrl+Alt+Enter` (Visual Studio), `⌘ ⌥ ⏎` (Visual Studio (macOS)), `Ctrl+Alt+L` (Eclipse), `⌘ ⇧ F` (Eclipse (macOS)) or [Reformat File](reformat-and-rearrange-code.html#reformat_file) `Ctrl+Alt+Shift+L` (Windows), `⌘ ⌥ ⇧ L` (macOS), `⌘ ⌥ ⇧ L` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ ⇧ L` (macOS System Shortcuts), `Ctrl+Alt+Shift+L` (XWin), `Ctrl+Alt+Shift+L` (GNOME), `Ctrl+Alt+Shift+L` (KDE), `Ctrl+Alt+Shift+L` (Emacs), `Ctrl+Alt+Shift+L` (Sublime Text), `⌘ ⌥ ⇧ L` (Sublime Text (macOS)), `Ctrl+Alt+Shift+L` (NetBeans), `Ctrl+Alt+Shift+L` (Visual Studio), `⌘ ⌥ ⇧ L` (Visual Studio (macOS)), `Ctrl+Alt+Shift+L` (Eclipse), `⌘ ⌥ ⇧ L` (Eclipse (macOS)) action the second time immediately after reformatting removes custom line breaks.      When this option is disabled, invoking either action the second time opens a confirmation dialog before custom line breaks are removed. To apply your choice to future reformattings, select Don't ask again.      |
| JavaDoc |    Use this area to configure smart keys options for JavaDoc.        * Automatically insert closing tag in JavaDoc: select this option if you want IntelliJ IDEA to add a closing tag for your code in the JavaDoc comments. In this case IntelliJ IDEA places the caret inside the tag. For example, if you type `<b>`, the closing tag `</b>` will be generated automatically.    |
| Insert pair '%>' on Enter in JSP | Select this checkbox to have IntelliJ IDEA automatically position the opening angle bracket `<` at the proper column when entered in an empty line in JSP code. In this case IntelliJ IDEA seeks backward for the nearest unclosed angle bracket and places a closing one `>` at the corresponding indentation level.  |
| Kotlin |    Use this area to configure the smart keys options for Kotlin.        * Convert pasted Java code to Kotlin: select this option to convert any Java code to Kotlin on paste. IntelliJ IDEA displays the Convert Code from Java dialog. If you don't want IntelliJ IDEA to show the dialog, select the Don't show Java to Kotlin conversion dialog on paste option.    |

## See also

### Procedures

[Select, copy, paste code](using-code-editor.html) [Code completion](auto-completing-code.html)

